Seite 1 von 2

Vokabeltrainer

Verfasst: Dienstag 1. August 2006, 12:32
von Devec
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

Verfasst: Dienstag 1. August 2006, 12:38
von birkenfeld
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'], ... }

Verfasst: Dienstag 1. August 2006, 12:39
von Devec
:idea: ^^ thx werd mich gleich an die arbeit machen

Verfasst: Dienstag 1. August 2006, 17:17
von SigMA
Noch ein paar Tipps:
* Schau dir Random an (für zufällige Vokale)
* pickle zum speichern von Vokabeln
* Schleifen (while und for)

mfg
SigMA

Verfasst: Dienstag 1. August 2006, 19:32
von CrackPod
SigMA hat geschrieben:* pickle zum speichern von Vokabeln
Nimm lieber cpickle. Das is ca 1000mal schneller.

Verfasst: Mittwoch 2. August 2006, 08:18
von BlackJack
Das wird bei einer Vokabelliste wohl nicht wirklich einen Unterschied machen.

Verfasst: Mittwoch 2. August 2006, 17:37
von SigMA
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

Verfasst: Samstag 26. August 2006, 23:17
von Devec
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

Verfasst: Samstag 26. August 2006, 23:22
von DatenMetzgerX
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

Verfasst: Samstag 26. August 2006, 23:35
von Devec
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

Verfasst: Samstag 26. August 2006, 23:50
von Devec
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

Verfasst: Sonntag 27. August 2006, 08:16
von Nirven
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

Verfasst: Sonntag 27. August 2006, 11:50
von Michael Schneider
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

Verfasst: Sonntag 27. August 2006, 15:54
von Devec
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

Verfasst: Sonntag 27. August 2006, 17:15
von SigMA
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

Verfasst: Montag 28. August 2006, 21:35
von Devec
ver 0.4.1


Code: Alles auswählen

try:
   howManyVok = 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 "falsch"
        print "richtig waere", rightanswer[1]
    howManyVok-=1

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

@sigma in war eine ganz schlchet idee ich hab das programm nach langen rumtüffteln mit in nicht mit in anstatt == hinbekomemn :\

Verfasst: Montag 28. August 2006, 22:30
von Craven
Hi Devec

Wenn das Dictionary leer wird, kommt ein KeyError

Code: Alles auswählen

import os, sys

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

dictonary = {'again': ['wieder', 'nochmal'], '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:
	try:
		rightanswer = dictonary.popitem()
	except KeyError:
		print "\n", "empty!", "\n"
		break
	answer = raw_input("'" + rightanswer[0] + "'Auf Deutsch:\n")
	if answer == rightanswer[1]:
		print "Richtig"
	else:
		print "falsch"
		print "richtig waere", rightanswer[1]
	howManyVok-=1

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

if off == 'ok':
	print off
	os.sys.exit()
else:
	print "sry, so far u can ONLY exit ^^"
	os.sys.exit()
Jetzt nicht mehr :wink:
Ist nicht die eleganteste Lösung, aber was solls ^^

MfG,
Craven

edit: ausversehen ein tab zuviel ^^

Verfasst: Montag 28. August 2006, 22:52
von DatenMetzgerX
oder...

Code: Alles auswählen

import os, sys

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

dictonary = {'again': ['wieder', 'nochmal'], '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:
    if not len(dictonary) > 0:
        print "\nempty!\n"
        break
    rightanswer = dictonary.popitem()
    answer = raw_input("'" + rightanswer[0] + "'Auf Deutsch:\n")
    if answer == rightanswer[1]:
        print "Richtig"
    else:
        print "falsch"
        print "richtig waere", rightanswer[1]
    howManyVok-=1

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

if off == 'ok':
    print off
    os.sys.exit()
else:
    print "sry, so far u can ONLY exit ^^"
    os.sys.exit() 

Verfasst: Montag 28. August 2006, 23:08
von Devec
thx ich werd mcih jetzt mal erst wider auf neue versoinen stürzen wenn ich noch bischen gebüffelt hab ^^

Verfasst: Montag 28. August 2006, 23:11
von Craven
Hi DatenMetzgerX

Was genau ist da der Vorteil gegenüber meinem, bzw macht das nen Unterschied :?:

MfG,
Craven