Vokabeltrainer

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Devec
User
Beiträge: 8
Registriert: Dienstag 1. August 2006, 12:19

Dienstag 1. August 2006, 12:32

hi
ich bin mit Python noch so zihmlich am anfang (mit den anderen Programmier sprachen auch)
und mien vokabeltreiner hat viel zu viel text für diese wenige funktion :oops:
naja noobie halt ^^

Code: Alles auswählen

# vokabeltrainer.py  ver 0.3.0 beta

e = raw_input('Wie viele vokabeln: ')

def vok1():
 print ' again '
 v1 = raw_input('auf deutsch: ')
 if v1 == 'wieder':
  print ' Richtig ' 
 else:
  print ' Falsch '
  print '    '
  print 'Richtig waere: wieder  '
 print '   '

def vok2():
 print ' almost '
 v2 = raw_input('auf deutsch: ')
 if v2 == 'fast' :
  print 'Richtig'
 elif v2 == 'beinahe':
  print ' Richtig ' 
 else:
  print ' Falsch '
  print '    '
  print 'Richtig waere: fast oder beinahe  '
 print '   '

def vok3():
 print '    '
 print ' always '
 v3 = raw_input('auf deutsch: ')
 if v3 == 'immer':
  print ' Richtig ' 
 else:
  print ' Falsch '
  print '    '
  print 'Richtig waere: immer  '
 print '   '

def vok4(): 
 print '    '
 print ' cake '
 v4 = raw_input('auf deutsch: ')
 if v4 == 'Kuchen':
  print ' Richtig ' 
 else:
  print ' Falsch '
  print '    '
  print 'Richtig waere: Kuchen '
 print ' '

def vok5():
 print '    '
 print ' free '
 v5 = raw_input('auf deutsch: ')
 if v5 == 'Frei':
  print ' Richtig '
 elif v5 == 'umsonst':
  print ' Richtig ' 
 elif v5 == 'befreien':
  print 'Richtig  '
 else:
  print ' Falsch '
  print '    '
  print 'Richtig waere: Frei , umsonst oder befreien  '
 print '   '

def vok6():
 print '    '
 print ' hair '
 v6 = raw_input('auf deutsch: ')
 if v6 == 'Haare':
  print ' Richtig ' 
 else:
  print ' Falsch '
  print '    '
  print 'Richtig waere: Haare  '
 print '   '  

def vok7():
 print '    '
 print ' morning '
 v7 = raw_input('auf deutsch: ')
 if v7 == 'Morgen':
  print ' Richtig ' 
 else:
  print ' Falsch '
  print '    '
  print 'Richtig waere: Morgen  '
 print '  '

def vok8():
 print '    '
 print ' now '
 v8 = raw_input('auf deutsch: ')
 if v8 == 'jetzt' :
  print 'richtig'
 elif v8 == 'da':
  print ' Richtig ' 
 else:
  print ' Falsch '
  print '    '
  print 'Richtig waere: jetzt oder da  '
 print '   '

def vok9():
 print '    '
 print ' rush '
 v9 = raw_input('auf deutsch: ')
 if v9 == 'Eile': 
  print 'RIchtig'
 elif v9 == 'Hetze': 
  print 'Richtig'
 elif v9 == 'eilen':
  print ' Richtig ' 
 else:
  print ' Falsch '
  print '    '
  print 'Richtig waere: Eile , Hetze  oder eilen '
 print '   '

def vok10():
 print '    '
 print ' map '
 v10 = raw_input('auf deutsch: ')
 if v10 == 'Karte':
  print ' Richtig ' 
 else:
  print ' Falsch '
  print '    '
  print 'Richtig waere: Karte  '
 print ' '

if e == '1':
  vok1()
elif e == '2':
  vok1() , vok2() 
elif e == '3':
  vok1() , vok2() , vok3()
elif e == '4':
  vok1() , vok2() , vok3() , vok4()
elif e == '5':
  vok1() , vok2() , vok3() , vok4() , vok5()
elif e == '6':
  vok1() , vok2() , vok3() , vok4() , vok5() , vok6()
elif e == '7':
  vok1() , vok2() , vok3() , vok4() , vok5() , vok6() , vok7()
elif e == '8':
  vok1() , vok2() , vok3() , vok4() , vok5() , vok6() , vok7() , vok8()
elif e == '9':
  vok1() , vok2() , vok3() , vok4() , vok5() , vok6() , vok7() , vok8() , vok9()
elif e == '10':
  vok1() , vok2() , vok3() , vok4() , vok5() , vok6() , vok7() , vok8() , vok9() , vok10()
else:
 print 'zu viele oder keine zahl'

a = raw_input('um zu beenden OK Druecken')
print a
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Dienstag 1. August 2006, 12:38

Schau dir mal Pythons grundlegende Datenstrukturen wie Listen und Dictionaries an. Damit kannst du alle Daten in eine Variable packen und nur eine Funktion schreiben, die einen beliebigen Datensatz abfragt.

Die "Datenbank" könnte z.B. so aussehen:

Code: Alles auswählen

vokabeln = { 'almost': ['fast', 'beinahe'], 'always': ['immer'], ... }
Devec
User
Beiträge: 8
Registriert: Dienstag 1. August 2006, 12:19

Dienstag 1. August 2006, 12:39

:idea: ^^ thx werd mich gleich an die arbeit machen
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

Dienstag 1. August 2006, 17:17

Noch ein paar Tipps:
* Schau dir Random an (für zufällige Vokale)
* pickle zum speichern von Vokabeln
* Schleifen (while und for)

mfg
SigMA
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Dienstag 1. August 2006, 19:32

SigMA hat geschrieben:* pickle zum speichern von Vokabeln
Nimm lieber cpickle. Das is ca 1000mal schneller.
BlackJack

Mittwoch 2. August 2006, 08:18

Das wird bei einer Vokabelliste wohl nicht wirklich einen Unterschied machen.
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

Mittwoch 2. August 2006, 17:37

CrackPod hat geschrieben:
SigMA hat geschrieben:* pickle zum speichern von Vokabeln
Nimm lieber cpickle. Das is ca 1000mal schneller.
ai Matrose^^ Da haste recht ;) Aber ich meinte nicht die Lib "pickle" sondern das System pickle^^
Außerdem ist es bei einem guten Programmcode extrem einfach zu ändern ;)

Code: Alles auswählen

try:
   import cPickle as pickle
except ImportError:
   import pickle
tatatata^^

SigMA
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
Devec
User
Beiträge: 8
Registriert: Dienstag 1. August 2006, 12:19

Samstag 26. August 2006, 23:17

so habs nochmal neu geschreiben allerdings hab cih nen prob mit
popitem asoo ich weis ent warum aber irgenwie kommt da invalid syntax bei dem wort viele

Code: Alles auswählen

howManyVok = raw_input( wie viele vokabeln : )

dictonary = {test: 'te2st' }

dictonary.popitem() = answer // test 

while(if(!(howManyVok == 0),howManyVok--))
   if(answer == true)
   print "Richtig"
  else
   print "richtig waere" rightanswer  // rightanswer soll dann te2st sein
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Samstag 26. August 2006, 23:22

Den code den du gepostet hast ist kreuzfalsch...

Bitte ein einigermassen funktionierenden code posten

Code: Alles auswählen

#-*- coding: latin-1 -*-
howManyVok = int(input( 'wie viele vokabeln :' ))

dictonary = {'test': 'te2st' }



while howManyVok != 0:
    rightanswer = dictonary.popitem()  # test
    answer = raw_input("Bitte deine Lösung angeben:\n")
    if answer == rightanswer[1]:
        print "Richtig"
    else:
        print "richtig waere", rightanswer[1]  # rightanswer soll dann te2st sein 
    howManyVok-=1

Vieleicht ist es ja in etwa das was du wolltest
Devec
User
Beiträge: 8
Registriert: Dienstag 1. August 2006, 12:19

Samstag 26. August 2006, 23:35

sry ist schon spät (und weill ich immoment auch c++ lerne), da fehlt nen ganze stück von mir hier verbessert

Code: Alles auswählen

howManyVok = raw_input( 'wie viele vokabeln :' )

dictonary = {'test': 'te2st' }

question = dictonary.popitem()  # test

print '',question
answer = raw_input( 'auf Deutsch' )

while howManyVok != 0:
    if answer == true:
        print "Richtig"
    else:
        print "richtig waere", rightanswer  # rightanswer soll dann te2st sein 
    howManyVok-=1
Devec
User
Beiträge: 8
Registriert: Dienstag 1. August 2006, 12:19

Samstag 26. August 2006, 23:50

fast nur eine kleine sache noch

Code: Alles auswählen

#-*- coding: latin-1 -*-
howManyVok = int(input( 'wie viele vokabeln :' ))

dictonary = {'test': 'te2st' }



while howManyVok != 0:
    rightanswer = dictonary.popitem()  # test
    answer = raw_input(~hier muss noch das gegenteil von rightanswer[1]rein~,"auf Deutsch:\n")
    if answer == rightanswer[1]:
        print "Richtig"
    else:
        print "richtig waere", rightanswer[1]  # rightanswer soll dann te2st sein
    howManyVok-=1
Nirven
User
Beiträge: 130
Registriert: Mittwoch 10. Mai 2006, 08:18
Wohnort: Bremerhaven

Sonntag 27. August 2006, 08:16

So?

Code: Alles auswählen

#-*- coding: latin-1 -*-
howManyVok = int(input( 'wie viele vokabeln : ' ))

dictonary = {'test': 'te2st' }



while howManyVok != 0:
    rightanswer = dictonary.popitem()  # test
    answer = raw_input("'" + rightanswer[0] + "' auf Deutsch: ")
    if answer == rightanswer[1]:
        print "Richtig"
    else:
        print "richtig waere", rightanswer[1]  # rightanswer soll dann te2st sein
    howManyVok-=1
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Sonntag 27. August 2006, 11:50

Hallo,

nichts für ungut, aber wäre es euch vielleicht möglich zu erklären, WAS ihr eigentlich ändert? Zumindest welche Zeilen? Es ist nämlich verdammt schwer, immer hoch und runter zu scrollen und die Codeseiten aus dem Gedächtnis zu vergleichen. Wäre wirklich nett von euch. :-)

Dank und Grüße,
der Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Devec
User
Beiträge: 8
Registriert: Dienstag 1. August 2006, 12:19

Sonntag 27. August 2006, 15:54

version 0.4

Code: Alles auswählen

try:
   howManyVok = int(input( 'wie viele vokabeln :' ))
except NameError:
   print "Keine zahl eingegeben\n"
   off = raw_input('um zu beenden OK Druecken') 
   print off

dictonary = {'again': 'wieder', 'almost': ['fast', 'beinahe'], 'always':'immer', 'cake': 'Kuchen', 'free': ['Frei', 'umsonst', 'befreien'], 'hair': 'Haare', 'morning': 'Morgen', 'now': 'Jetzt', 'rush': ['Eile','Hetze','eilen'], 'map': 'Karte'}



while howManyVok != 0:
    rightanswer = dictonary.popitem()  
    answer = raw_input("'" + rightanswer[0] + "'Auf Deutsch:\n")
    if answer == rightanswer[1]:
        print "Richtig"
    else:
        print "richtig waere", rightanswer[1]  
    howManyVok-=1


off = raw_input('um zu beenden OK Druecken') 
print off

@ Michael Schneider ich hab mein post warscheinlich zu spät abgeschikt und daher warscheinlich die verwirrung
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

Sonntag 27. August 2006, 17:15

1) input liefert doch ein Int zurück warum dann int()

2) das Vokabeln guggen ob richtig oder falsch solltest du nochmal überarbeiten!
Mach aus dem == ein "in" und mach aus jeder Antwort eine Liste! Dann bekommste weniger Prob ;)

SigMA
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
Antworten