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

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

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

: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:

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

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

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:

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

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)

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

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

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

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: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

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

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:

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
Devec
User
Beiträge: 8
Registriert: Dienstag 1. August 2006, 12:19

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 :\
Benutzeravatar
Craven
User
Beiträge: 223
Registriert: Dienstag 24. Januar 2006, 13:37

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 ^^
[code]q = 'q = %s; print q %% repr(q)'; print q % repr(q) [/code]
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

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() 
Devec
User
Beiträge: 8
Registriert: Dienstag 1. August 2006, 12:19

thx ich werd mcih jetzt mal erst wider auf neue versoinen stürzen wenn ich noch bischen gebüffelt hab ^^
Benutzeravatar
Craven
User
Beiträge: 223
Registriert: Dienstag 24. Januar 2006, 13:37

Hi DatenMetzgerX

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

MfG,
Craven
[code]q = 'q = %s; print q %% repr(q)'; print q % repr(q) [/code]
Antworten