Seite 1 von 2
Rätsel mit Dictionaries und for schleife
Verfasst: Mittwoch 13. März 2013, 20:19
von eimco
hallo,
Ich versuche ein "Rätsel" mit Python und den Dictionaries zu schreiben, allerdings bin ich neu dabei und komme mit der aufgabe überhaupt nicht klar.
ich weiß bisher,ansatzweise, wie listen,dictionaries,for-schleifen,if elif else geht..
ich hab mal "angefangen", aber ich weiß gar nicht wie ich an das problmen rantretten soll..:
-----------------------------
Code: Alles auswählen
!/usr/bin/python
dE = {"blau":"blue","gelb":"yellow","rot":"red"}
frage1 = input("Blau auf englisch?")
---------------------------------
Es soll also gefragt werden "was heißt blau auf englisch" gibt man die richtige antwort soll "richtig" printed werden und ein punkt dazu addiert werden. ist die antwort falsch, soll "falsch" printed werden und kein punkt addiert werden.
am ende soll der punktestand aufgeführt werden.
danke!
Re: Rätsel mit Dictionaries und for schleife
Verfasst: Mittwoch 13. März 2013, 20:58
von derdon
Wenn du Python2 benutzt, solltest du raw_input statt input verwenden. input erlaubt bei Python2 die Ausführung beliebigen Codes (z.b. das Löschen von Dateien) und stellt damit ein Sicherheitsrisiko dar. Der name `frage1` ist unpassend, weil ja keine Frage, sondern die Antwort auf die Frage zurückgegeben wird. Du sagst, dass du ansatzweise mit Dictionaries vertraut bist. Weißt du denn auch, wie man über Dictionaries iterieren kann?
Re: Rätsel mit Dictionaries und for schleife
Verfasst: Mittwoch 13. März 2013, 21:05
von pixewakb
Ist vielleicht nicht, was du suchst. Schau einmal, ob du mit dem Programm - Python 3.2 - etwas anfangen kannst:
Code: Alles auswählen
vokabeln = {"blau":"blue",
"gelb":"yellow",
"rot":"red"}
for key in vokabeln.keys():
frage = "{} auf Englisch? ".format(key.capitalize())
antwort = input(frage)
if antwort != vokabeln[key]:
print("Das war falsch!")
else:
print("Das war richtig!")
print("{} heißt auf Englisch {}.".format(key.capitalize(), vokabeln[key]))
Die Ausgabe in meiner Konsole sieht so aus:
Code: Alles auswählen
>>>
Rot auf Englisch? red
Das war richtig!
Rot heißt auf Englisch red.
Gelb auf Englisch? yellow
Das war richtig!
Gelb heißt auf Englisch yellow.
Blau auf Englisch? bluh
Das war falsch!
Blau heißt auf Englisch blue.
>>>
Re: Rätsel mit Dictionaries und for schleife
Verfasst: Mittwoch 13. März 2013, 21:06
von BlackJack
@eimco: Arbeite am besten mal ein Grundlagentutorial durch. Für Anfänger geeignet wäre zum Beispiel
Learn Python The Hard Way. Das Tutorial in der Python-Dokumentation sollte man IMHO auch mal durchgearbeitet haben.
Re: Rätsel mit Dictionaries und for schleife
Verfasst: Mittwoch 13. März 2013, 22:10
von eimco
@pixewakb danke sehr! das hilft mir sehr weiter :')
@BalckJack ja, ich muss das nur das machen und komm nicht vorran..
Re: Rätsel mit Dictionaries und for schleife
Verfasst: Mittwoch 13. März 2013, 22:40
von eimco
ok soweit sogut,
ich hab das problem dass ich die frage (als eingabe) nicht gescheit mit dem dict verbunden bekomme... jemand ne idee?
Re: Rätsel mit Dictionaries und for schleife
Verfasst: Mittwoch 13. März 2013, 22:50
von eimco
@derdon ja, das mit dem itieren hab ich jetzt raus bekommen. Aber wie bekomm das in die Frage eingebaut?
Re: Rätsel mit Dictionaries und for schleife
Verfasst: Mittwoch 13. März 2013, 23:01
von cofi
@eimco das macht der Code doch schon.
@pixewakb: 100 Hausaufgaben Punkte fuer dich
tut es uebrigens schon.
Re: Rätsel mit Dictionaries und for schleife
Verfasst: Mittwoch 13. März 2013, 23:07
von pixewakb
@cofi: Danke dir! Werde es morgen in der Schule dann einzutauschen versuchen
Den Hinweis mit "tut es übrigens schon" versuche ich mal zu beachten, aber ganz gespeichert habe ich es leider noch nicht.

Ich arbeite daran.
Re: Rätsel mit Dictionaries und for schleife
Verfasst: Mittwoch 13. März 2013, 23:20
von eimco
@cofi ich hab aber nur 2.4, jedenfalls funktioniert die frage so bei mir nicht.
wie schreib ich ne frage die auf die liste zugreift?
bekomm ich ne fehlermeldung '
dict' object has no attribute 'iterkey'
aber ist der key nicht immer der vordere eintrag beim dict als im fall {"rot":"red"} eben
rot und value das
red.?
Re: Rätsel mit Dictionaries und for schleife
Verfasst: Mittwoch 13. März 2013, 23:28
von BlackJack
@eimco: Geh doch mal von Deinem konkreten Problem weg und arbeite das Tutorial durch, dass ich verlinkt habe. Ein Blick in die Python-Dokumentation schadet auch nicht.
Re: Rätsel mit Dictionaries und for schleife
Verfasst: Mittwoch 13. März 2013, 23:32
von eimco
@blackjack ja hab mir das schon angeschaut aber komm damit nicht so ganz weiter. doch doch ich "muss" mich eigentlich mit dem problem beschäftigen :'D
Re: Rätsel mit Dictionaries und for schleife
Verfasst: Donnerstag 14. März 2013, 00:05
von EyDu
eimco hat geschrieben:@blackjack ja hab mir das schon angeschaut aber komm damit nicht so ganz weiter. doch doch ich "muss" mich eigentlich mit dem problem beschäftigen :'D
Nein, du musst dich erstmal mit den Grundlagen beschäftigen um das Problem überhaupt lösen zu können. Wir könnten dir jetzt die vollständige Lösung zeigen, aber dann hast du nichts gelernt und versuchst in einer Woche erneut dir die Lösung zu erbetteln.
Re: Rätsel mit Dictionaries und for schleife
Verfasst: Donnerstag 14. März 2013, 07:33
von Sirius3
@eimco: Hausaufgaben fallen ja nicht einfach so vom Himmel. Du hast im Unterricht bestimmt schon alles über Dictionaries gelernt, was zum Lösen der Aufgabe nötig ist.
Falls Du konkret was nicht verstehst, dann Frag hier oder Deinen Lehrer.
Aber nicht in der Art, wie löse ich die Aufgabe, sondern ich mache dies, erwarte das, bekomme aber etwas anderes und ich versteh nicht warum.
Re: Rätsel mit Dictionaries und for schleife
Verfasst: Donnerstag 14. März 2013, 21:10
von eimco
ok alles klar,
bin so weit gekommen :
Code: Alles auswählen
#!/usr/bin/python
vokabeln= {"rot":"red","blau":"blue","gelb":"yellow"}
for frage in vokabeln:
print "Wie heisst ", frage, " auf deutsch?"
antwort = raw_input()
if vokabeln[frage] == antwort:
print "richtig"
else:
print "falsch"
aber irgendwie funktioniert es nicht richtig, beim input kommt keine frage usw. kann mir jemand weiter helfen?
Re: Rätsel mit Dictionaries und for schleife
Verfasst: Donnerstag 14. März 2013, 21:47
von BlackJack
@eimco: Zum Fragen kommt das ja gar nicht weil der Compiler sich vorher schon wegen der fehlenden Einrückung beschwert.
Re: Rätsel mit Dictionaries und for schleife
Verfasst: Donnerstag 14. März 2013, 21:56
von eimco
ich hab das schon eingerückt, das format hat sich irgendwie geändert beim kopieren:
Code: Alles auswählen
#!/usr/bin/python
vokabeln= {"rot":"red","blau":"blue","gelb":"yellow"}
for frage in vokabeln:
print "Wie heisst ", frage, " auf deutsch?"
antwort = raw_input()
if vokabeln[frage] == antwort:
print "richtig"
else:
print "falsch"
Re: Rätsel mit Dictionaries und for schleife
Verfasst: Donnerstag 14. März 2013, 22:44
von BlackJack
@eimco: Dann erkläre jetzt mal was dieser Code bei der Abarbeitung Zeile für Zeile tut, also Deiner Meinung nach. Wirklich den kompletten Programmablauf. Wann ist welcher Name an welchen Wert gebunden, wann wird was genau ausgegeben und wann wird was genau eingegeben und was passiert damit.
Re: Rätsel mit Dictionaries und for schleife
Verfasst: Donnerstag 14. März 2013, 23:29
von derdon
Da ist wohl wieder ein Einrückungs-Fehler beim Kopieren entstanden. Warum haben eigentlich so viele hier kaputte Zwischenablagen, die beim Kopieren die Einrückung zerstören und manchmal auch noch zusätzliche Bugs einbauen? Gut dass ich mit meinem stabilen Debian auf eine alte, bewährte Version von xclip setze und daher nichts zu befürchten habe.
Re: Rätsel mit Dictionaries und for schleife
Verfasst: Donnerstag 14. März 2013, 23:33
von eimco
ja ich hab eben diese liste in zeile 1. mit for in wird auf die einträge in der liste zugegrifen. bei dem print sollte eigentlich eingezeigt werden "was heißt", dann soll der key(vor dem

angezeigt werden, und dann eben wieder ein text.
die antwort soll der imput sein den man dann eben gibt.
die if schleife soll angeben, dass wenn die antwort gleich (==) dem input ist-> richtig , ansonsten falsch.
wenn ich aber zb 2 von 3 nur richtig hab, kommt trotzdem richtig.
es soll aber für jede frage richtig angezeigt werden