Python if-Abfrage wiederholen?
Mein Programm sieht wie folgt aus:
while True:
output = print ("Tippe drei Zahlen zwischen 1 und 6")
output1 = input ("Zahl 1:")
if (int (output1) <= 6):
if (int (output1) >= 1):
zahl1 = output1
elif (int (output1) >6):
print ("Die Zahl ist zu hoch! Sie muss zwischen 1 und 6 liegen!")
elif (int (output1) <1):
print ("Die Zahl ist zu niedrig! Sie muss zwischen 1 und 6 liegen!")
output2 = input ("Zahl 2:")
if (int (output2) <= 6):
if (int (output2) >= 1):
zahl2 = output2
elif (int (output2) >6):
print ("Die Zahl ist zu hoch! Sie muss zwischen 1 und 6 liegen!")
elif (int (output2) <1):
print ("Die Zahl ist zu niedrig! Sie muss zwischen 1 und 6 liegen!")
output3 = input ("Zahl 3:")
if (int (output3) <= 6):
if (int (output3) >= 1):
zahl3 = output3
elif (int (output3) >6):
print ("Die Zahl ist zu hoch! Sie muss zwischen 1 und 6 liegen!")
elif (int (output3) <1):
print ("Die Zahl ist zu niedrig! Sie muss zwischen 1 und 6 liegen!")
Jetzt möchte ich irgendwie schaffen, dass wenn man eine zu hohe oder zu niedrige Zahl angegegben hat, man nochmal nach dieser Zahl gefragt wird. Also, wenn ich bei z.B. Zahl2 eine 7 angebe, nochmal nach Zahl2 gefragt werde und nicht nach Zahl3. Wie kann ich dies erreichen?
2 Antworten
Hey,
PEP8 lässt grüßen ;)
Also bei genau deinem aufbau lässt sich gut eine Funktion benutzen in der die Abfrage stattfindent,
also so in etwa:
def get_number(id):
try:
output = input("Zahl %s:" % id)
int(output)
except (ValueError, NameError):
print "Invalid input"
return None
if output in xrange(1, 7):
return output
elif (int (output) >6):
print ("Die Zahl ist zu hoch! Sie muss zwischen 1 und 6 liegen!")
return None
elif (int (output) <1):
print ("Die Zahl ist zu niedrig! Sie muss zwischen 1 und 6 liegen!")
return None
print ("Tippe drei Zahlen zwischen 1 und 6")
results = {}
own_id = 1
while True:
number = get_number(id=own_id)
if number is None:
continue
results["zahl%s" % own_id] = number
if own_id == 3:
own_id = 1
else:
own_id += 1
print results
Den Teil denn ich Hinzugefügt habe ist Syntaktisch auf 2.7.11, sollte aber nicht schwer zu übertragen sein :)
Da ich nicht weiß was du genau vor hast, weiß ich nicht ob dir das so was bringt, funktionieren tut es ;) Ach und ich habe noch eingebaut das man nur Integer eintragen kann.
Bei Fragen Einfach melden :D
Hoffe das hilft.
EDIT: Und ich sehe gerade die einrückungen buggen rum :D
MfG
Freddy
Einfach in eine while schleife packen:
z.B
output3 = input()
while True:
#abfrage1
break;
#abfrage2
break;
#abfrage3
output3 = input()
Wobei du das break in deine Abfragen hinein schreiben musst. Außer eben in die, wenn die Zahl zu groß ist. Denn das break veranlasst, dass aus der Schleife rausgegangen wird.