"jedesmal" stimmt nicht. wenn die 4. bedingung zutrifft wird das else nicht betreten. klar?Thundersystem hat geschrieben:
Nur hängt er das was in "else" steht jedesmal noch mit unten dran.
Blöderweise weis ich jetzt aber nicht woran das liegt!
Fehler bei der Funktion raw_input()
http://www.kinderpornos.info
Habe gerade mal auf die Seite mit der Aufgabe geschaut. Namen durchnummerieren und empfehlen mit Kopieren und Einfügen zu arbeiten, weil man sich dann viel Tipparbeit sparen kann, ist IMHO nicht so toll. So etwas sollte man gar nicht erst anfangen, dann braucht man es sich später auch nicht wieder abgewöhnen.
Die Aufgabe ist IMHO auch schlecht um Verweigungen zu zeigen, denn eine so regelmässige Tabelle, die eine Kombination von Zuständen auf eine Ausgabe abbildet, würde man natürlicher mit einer Abbildung lösen und nicht mit Unmengen an ``if``\s.
@Thundersystem: Das ``else`` bezieht sich nur auf das letzte ``if`` oder ``elif``, nicht auf irgendwelche ``if``\s davor. Das ist auch nicht komisch bei Python, sondern in den meisten Programmiersprachen so, die ein imperatives ``if``/``else``-Konstrukt kennen.
Die Aufgabe ist IMHO auch schlecht um Verweigungen zu zeigen, denn eine so regelmässige Tabelle, die eine Kombination von Zuständen auf eine Ausgabe abbildet, würde man natürlicher mit einer Abbildung lösen und nicht mit Unmengen an ``if``\s.
Code: Alles auswählen
recommendations = {
'sss': 'Pack die Badehose ein, nimm dein kleines Schwesterlrein...',
'sfw': 'Hei, Hei, Hei, so eine Schneeballschlacht...',
'ffs': "I'm singing in the rain...",
'fsw': 'Leise rieselt der Schnee...' }
questions = ['Luftdruck (steigt / faellt)',
'Lufttemperatur (steigt / faellt)',
'Jahreszeit (Sommer / Winter)']
answers = ''.join(raw_input(q + ': ')[:1].lower() for q in questions)
print recommendations.get(answers, 'Nichts Genaues weiss man nicht!')
- Thundersystem
- User
- Beiträge: 10
- Registriert: Montag 8. Juni 2009, 09:45
- Kontaktdaten:
@confi
Du bist genial, kaum sind die Klammern weg funzt alles, also Klammern habe ich nur bei if, bei elif gar nichts und bei else nen Doppelpunkt, richtig
@BlackJack
Ehm ja das ehm blick ich jetzt ned ganz, aber ok ich versteh jetzt auch wiso mein Code nicht funktionieren hat können, da das mit den ganzen ifs nur funzt wenn ich kein else dabei hätte, also jo, eine Frage hätte ich noch ich weis nun was if, else und elif bewirken.
Nur else if, was tut das?
Du bist genial, kaum sind die Klammern weg funzt alles, also Klammern habe ich nur bei if, bei elif gar nichts und bei else nen Doppelpunkt, richtig
@BlackJack
Ehm ja das ehm blick ich jetzt ned ganz, aber ok ich versteh jetzt auch wiso mein Code nicht funktionieren hat können, da das mit den ganzen ifs nur funzt wenn ich kein else dabei hätte, also jo, eine Frage hätte ich noch ich weis nun was if, else und elif bewirken.
Nur else if, was tut das?
es gibt kein else if in python, nur das:
Code: Alles auswählen
if foo::
pass
elif bar:
pass
else:
if baz:
pass
if foo:
pass
else if bar: #syntax error
pass
http://www.kinderpornos.info
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Nein, vergiss die Klammern bei jeglichen Vergleichen( es sei denn du willst mit Tupeln arbeiten).Thundersystem hat geschrieben:@confi
Du bist genial, kaum sind die Klammern weg funzt alles, also Klammern habe ich nur bei if, bei elif gar nichts und bei else nen Doppelpunkt, richtig
BlackJack bildet mit dem Dictionary eine switch Anweisung nach. Aber das ist - zumindest in dem Ausmaß - fortgeschrittenes Niveau

P.S. Ich verbitte mir das `n`, das zerstört die Verballhornung :O
- Thundersystem
- User
- Beiträge: 10
- Registriert: Montag 8. Juni 2009, 09:45
- Kontaktdaten:
Ok, das verwirrte mich dann eben, weil laut Klip gibt es eben else ifKlip hat geschrieben:Anstelle eines einfachen if's solltest du da eher ein 'else if' verwenden.Code: Alles auswählen
if x == y: # mach was else if x != y: # mach was anderes else: # wenn gar nichts davon zutrifft...

- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Das gibt es, nur heißt es eben ``elif``.
nochmal etwas zu else, if & elif:
sicher fällt dir auf, dass der beides mal das gleiche kommt, egal welche werte du für x oder y eingibst.
es ist nicht schwer zu erkennen, dass der erste Code übersichtlicher, eleganter, praktischer,... ist.
wenn du in den else-zweig wieder ein if einbaust hat das den gleiche effekt wie elif
Code: Alles auswählen
x=10
y=5
if x == y:
print x , 'ist' , y
elif x > y:
print x , 'ist groesser als' ,y
elif x < y:
print x , 'ist kleiner als', y
else:
print
# ist das gleiche wie
if x == y:
print x , 'ist' , y
else:
if x > y:
print x , 'ist groesser als' ,y
else:
if x < y:
print x , 'ist kleiner als', y
else:
print
sicher fällt dir auf, dass der beides mal das gleiche kommt, egal welche werte du für x oder y eingibst.
es ist nicht schwer zu erkennen, dass der erste Code übersichtlicher, eleganter, praktischer,... ist.
wenn du in den else-zweig wieder ein if einbaust hat das den gleiche effekt wie elif
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Und wenn man sich den AST anschaut, sieht man, dass das intern auch genau in diese Form überführt wird:Pascal hat geschrieben: wenn du in den else-zweig wieder ein if einbaust hat das den gleiche effekt wie elif
Code: Alles auswählen
stmt = ...
| If(expr test, stmt* body, stmt* orelse)
- Thundersystem
- User
- Beiträge: 10
- Registriert: Montag 8. Juni 2009, 09:45
- Kontaktdaten:
Jo ok Danke, hab das denke ich nun soweit verstanden
BIn ja mittlerweile auch schon beim öffnen, überschreiben und lesen von Dateien
Greetz
Andreas

BIn ja mittlerweile auch schon beim öffnen, überschreiben und lesen von Dateien

Greetz
Andreas
