Python break Problem?
Sehr geehrte Gutefrage-Community,
ich bastle derzeit an einem Ratespiel in Python.
Hierbei soll es random Zahlen generieren, welche zwischen 0-40 liegen.
Da man dies aber nur mit der Voraussetzung machen kann dass n kleiner als m ist habe ich versucht die if-else Befehle zu benutzen.
Leider lässt sich "break" aber nur in einer While-Liste benutzen oder ich bin einfach zu dumm um es richtig einzusetzen.
Falls Ihr mir helfen könnt wäre ich sehr dankbar und wenn Ihr noch sonstige Fehler entdeckt könnt Ihr diese auch gerne dazuschreiben.
Mit freundlichen Grüßen
Raven
5 Antworten
Break ist für Schleifen. Nicht für IFs. Natürlich kannst du es dort also nicht nutzen.
Brauchst du denn eine Schleife? Ansonsten musst du dir aussuchen welche Schleife du willst. Und das kommt drauf an was genau du haben willst.
Wenn n größer ist als n soll er eine kurze nachricht zurückschicken und dann aufhören mit dem Script. Wenn n kleiner ist soll er ganz normal weitermachen
Da brauchst du aber keine Schleife. Du könntest aber einfach exit() aufrufen.
Hab jetzt:
if n > m:
print("Leider hatten Sie kein Glück!")
pause(2)
exit()
else:
print("Es wird fortgefahren!")
pause(1)
An der stelle könntest du sys.exit(0) anstelle von break verwenden. Dann wird das Programm beendet und 0 zurückgegeben.
Das hat keine Funktion an der Stelle und kann deswegen auch nicht benutzt werden. Nach der Ausgabe von „Leider hatten Sie kein Glück“ ist ohnehin Schluss mit dem if-else Block.
Ganz einfach und ohne if else Versenkungen
n = randint(x,y)
m = randint(n+1,y)
einziges Problem beide können 40 sein. Du könntest also n auf 0-39 setzten um das zu verhindern.
Ich hab es extra so geschrieben dass auch "40" oder gleiche Antworten richtig sein können.
Es wäre eine Möglichkeit es zu lösen, aber mit dem exit() befehl geht es besser.
Dann kann ich es so lassen wie bisher.
if n > m:
print("Leider hatten Sie kein Glück!")
pause(2)
exit()
else:
print("Es wird fortgefahren!")
pause(1)
Trotzdem Danke für den Vorschlag.
Ja, nur ist meinst 10mal kürzer und dazu noch verständlicher.
setz das ganze doch einfach in einen try-except block und werf eine selbst definierte Exception, wenn n > m
edit: alternativ setz doch einfach alles darunter in den Else-Block
zudem hat der nicht eingerückte else-Block keine Funktion, da es keinen entsprecheden if-block gibt
Hättest du vielleicht ein Beispiel wie ich es in einer Schleife lösen könnte?