Seite 1 von 2
Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 13:35
von Snake19
Hallo liebes Forum bin noch neu was den Umgang mit Python angeht habe aber schon Java Programmiert bin also kein Anfänger mehr leider habe ich folgendes Problem bei meinem python Programm. Es führt die zwei letzten elif Anweisungen nicht aus habe den Code eingerückt das Python erkennt das jetzt eine Anweisung kommt aber er übersprint immer die Ausgabe. über Hilfe würde ich michs ehr freuen
hier mein Code:
Code: Alles auswählen
# -*- coding: cp1252 -*-
print "Wir suchen Spielerinnen für eine Fußballmannschaft"
geschlecht = raw_input("Welches Geschlecht bist du?")
name = raw_input("Wie ist dein Name: ")
alter = int(raw_input("Gib dein Alter an: "))
geschlecht ='m'
geschlecht ='w'
if geschlecht == 'w':
if alter > 10 and alter <=12:
print "Du darfst in der Mannschaft spielen", name
elif alter < 10 and alter > 12:
print "Du kannst leider nicht in die Mannschaft", name
elif geschlecht == 'm':
print "Du bist ein Junge kannst leider nicht in die Mannschaft", name
Re: Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 14:04
von BlackJack
@Snake19: Du *bist* Anfänger denn das sind zwei ganz grundlegende und zwei ganz einfache Logikprobleme, welche Du bei einem Java-Programm exakt genau so hättest.
Beantworte mal bitte zwei Fragen:
1. Bei welchem Programmablauf sollte Deiner Meinung nach das ``elif geschlecht`` ausgeführt werden?
2. Nenne mir ein Alter das kleiner als 10 und grösser als 12 ist!?
Re: Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 14:36
von Snake19
Ja wenn ich 'm' auswähle dann sollte er die Print Anweisung ausführen weil ja nur Mädchen in die Mannschaft dürfen. Als mit dem alter das sollte so sein wenn die 9 Jahre alt oder 13 Jahre alt sind können sie nicht in die Mannschaft.
Re: Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 14:45
von Darii
Snake19 hat geschrieben:Ja wenn ich 'm' auswähle dann sollte er die Print Anweisung ausführen weil ja nur Mädchen in die Mannschaft dürfen.
Guck doch mal in die Zeile über dem 1. if und überlege warum es völlig egal ist was du auf "Welches Geschlecht bist du?" antwortest.
Als mit dem alter das sollte so sein wenn die 9 Jahre alt oder 13 Jahre alt sind können sie nicht in die Mannschaft.
Wenn du "oder" meinst, warum schreibst du im Programm dann "und"?
Re: Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 14:49
von Snake19
Ah hab es verstanden man was für ein dummer Fehler oder muss ich nehmen und wenn das erste nicht zutrifft brauche ich nur else verstehe.

Re: Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 15:35
von Hyperion
Snake19 hat geschrieben:Ah hab es verstanden man was für ein dummer Fehler oder muss ich nehmen und wenn das erste nicht zutrifft brauche ich nur else verstehe.

„Punkt, Punkt, Komma, Strich – fertig ist das Mondgesicht.“

Re: Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 18:47
von Snake19
habe jetzt das and durch or ersetzt und elif durch else aber erführt die anweisungen immernoch nicht aus .
Re: Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 19:01
von /me
Snake19 hat geschrieben:habe jetzt das and durch or ersetzt und elif durch else aber erführt die anweisungen immernoch nicht aus .
Bitte zeige den kompletten geänderten Code.
Re: Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 19:04
von Snake19
hier der geänderte Code :
Code: Alles auswählen
# -*- coding: cp1252 -*-
print "Wir suchen Spielerinnen für eine Fußballmannschaft"
geschlecht = raw_input("Welches Geschlecht bist du?")
name = raw_input("Wie ist dein Name: ")
alter = int(raw_input("Gib dein Alter an: "))
geschlecht ='m'
geschlecht ='w'
if geschlecht == 'w':
if alter > 10 or alter <=12:
print "Du darfst in der Mannschaft spielen", name
elif alter < 10 or alter > 12:
print "Du kannst leider nicht in die Mannschaft", name
else:
print "Du bist ein Junge kannst leider nicht in die Mannschaft", name
Re: Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 19:11
von /me
Geh bitte einmal langsam den Code von oben nach unten durch und überlege, unter welchen Voraussetzungen die Abfrage if geschlecht == 'w' nicht zutreffen könnte.
Danach überlege dir, bei welchem Alter die Abfrage if alter > 10 or alter <=12 fehlschlagen kann. Dafür brauchst du nicht einmal den kompletten Code zu betrachten, die Zeile mit der Abfrage reicht schon.
Re: Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 19:19
von Snake19
Ich stehe gerade total auf dem Schlauch irgendwie.
Re: Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 19:36
von cofi
Zeile 6 & 7 stehen auch ziemlich auf der Leitung.
Re: Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 19:38
von Hyperion
Überlege doch mal, welchen Wert `geschlecht` in jeder Zeile Deines Scriptes annimmt bzw. annehmen kann:
Code: Alles auswählen
In [1]: foo = 42
In [2]: if foo == 42:
...: True
...:
...:
Out[2]: True
Was passiert wohl, wenn ich vor [1] dieses einbaute: `foo = raw_input()`
Re: Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 19:41
von Snake19
Ah hab den vorher schon zwei werte zugewiesen verstehe. Aber das mit der if anweisung ist mir noch ein rätsel.
Code: Alles auswählen
# -*- coding: cp1252 -*-
print "Wir suchen Spielerinnen für eine Fußballmannschaft"
geschlecht = raw_input("Welches Geschlecht bist du?")
name = raw_input("Wie ist dein Name: ")
alter = int(raw_input("Gib dein Alter an: "))
if geschlecht == 'w':
if alter > 10 or alter <=12:
print "Du darfst in der Mannschaft spielen", name
elif alter < 10 or alter > 12:
print "Du kannst leider nicht in die Mannschaft", name
else:
print "Du bist ein Junge kannst leider nicht in die Mannschaft", name
Re: Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 19:48
von Hyperion
Wenn jemand 8 Jahre alt ist, ist man dann jünger als 12? Ich denke mal ja

Re: Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 19:52
von /me
Snake19 hat geschrieben:Ah hab den vorher schon zwei werte zugewiesen verstehe.
Ehe das später zu Missverständnissen führt sollten wir hier die Aussage besser korrigieren. Du hast nicht zwei Werte zugewiesen, du hast zweimal einen Wert zugewiesen. Noch präziser wäre die Aussage, dass du zweimal nacheinander einen Wert an den selben Namen gebunden hast.
Snake19 hat geschrieben:Ah hab den vorher schon zwei werte zugewiesen verstehe. Aber das mit der if anweisung ist mir noch ein rätsel.
Du hast die Bedingung
if alter > 10 or alter <=12. Der Gesamtausdruck wird
True, sobald auch nur einer der beiden Teilausdrücke wahr ist. Jetzt überlege dir, was jeweils bei Werten von 8, 12 und 16 passiert. Wann tritt der Fall ein, dass beide Teilausdrücke falsch sind und damit ein
False als Gesamtergebnis liefern? Liefere eine Beispielzahl bei der das so ist und wir können das intensiver durchgehen.
Re: Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 20:00
von Snake19
Ok da stimmt will es aber so machen das Mädchen zwischen 10 und 12 Jahren nru da rein kommen.
Re: Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 20:18
von Hyperion
Schau doch mal...
Überlege doch mal, welche Bedingungen Zahlen in den drei Bereichen erfüllen müssen. Anschließend kann man dann überlegen, wie man ggf. Bereich A und C von den Bedingungen her zusammenführen kann.
Re: Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 20:23
von /me
Snake19 hat geschrieben:Ok da stimmt will es aber so machen das Mädchen zwischen 10 und 12 Jahren nru da rein kommen.
Ich zitiere und formatiere: "[...] Mädchen zwischen 10
und 12 Jahren [...]"
Das Wissen um die Bedeutung der Worte "und" und "oder" setze ich momentan noch als bekannt voraus.
Re: Betreff führt zweite und dritte If anweisung nicht aus
Verfasst: Sonntag 20. November 2011, 20:37
von Snake19
Hab es hinbekomen sry stand voll auf dem Schlauch wenn man mal wo hängt und die ganze zeit drüber krübelt kommt man nicht mehr drauf.
Code: Alles auswählen
# -*- coding: cp1252 -*-
print "Wir suchen Spielerinnen für eine Fußballmannschaft"
geschlecht = raw_input("Welches Geschlecht bist du?")
name = raw_input("Wie ist dein Name: ")
alter = int(raw_input("Gib dein Alter an: "))
if geschlecht == 'w':
if alter >= 10 and alter <=12:
print "Du darfst in der Mannschaft spielen", name
else:
print "Du kannst leider nicht in die Mannschaft", name
else:
print "Du bist ein Junge kannst leider nicht in die Mannschaft", name