Ich habe beschlossen, ein grundlegendes Spiel in Python 3.3 zu machen, wo das Monster und ein Schatz einzeln auf einer Zahl von 1-100 generiert wird, und der Benutzer hat um eine Nummer zu wählen. Das Programm wird den Benutzer dann informieren, wenn sie zu nahe oder zu hoch sind oder wenn sie etwas getroffen haben.Programm bedeutete, auf eine Funktion zu gehen, sondern stattdessen versuchen und Ausnahme Schleife
Ich habe eine try-Schleife mit Ausnahme von NameError gemacht (wie ich auf Mac bin, wäre es ValueError für Windows). Bevor ich etwas fragen, würde ich mit Ihnen den Code teilen, die ich bisher habe:
import time, random
def generateValues():
global treasurePos, monsterPos
while treasurePos != monsterPos:
treasurePos = random.randint(1, 100)
monsterPos = random.randint(1, 100)
print(treasurePos)
print(monsterPos)
def mainmenu():
time.sleep(0.5)
print("welcome to this game, press 1 to play or 2 to quit")
time.sleep(0.5)
try:
option = int(input("What would you like to do: "))
if option == (1):
time.sleep(0.5)
generateValues()
elif option == (2):
quit()
except NameError:
time.sleep(0.5)
print("please enter only 1 or 2")
mainmenu()
Wenn ich 1 eingeben, war mein ursprünglicher Plan für das Spiel fortzusetzen und die Positon für den Schatz zu erzeugen und die Monster. Was das Programm macht, stattdessen ist Schleife zurück zu diesem:
except NameError:
time.sleep(0.5)
print("please enter only 1 or 2")
die weiter eine Endlosschleife von ‚Bitte geben Sie nur 1 oder 2‘ erzeugt - auch wenn ich 1.
Meine Frage eingeben zu tun ist Gibt es also einen einfachen oder komplexen Befehl, den ich tun kann, um zu verhindern, dass diese Schleife fortgesetzt wird und damit das Programm mit der Funktion "generateValues" fortfahren kann?
Ich würde jede Hilfe oder Einsicht, die Sie bereit sind zu teilen, schätzen.
Vielen Dank im Voraus, Leo
EDIT 1:
Karen Clark wies meine while-Schleife aus, und ich habe eine alternative Lösung für sie, unter dem Werk codiert:
def generateValues():
global treasurePos, monsterPos
treasurePos = 0
monsterPos = 0
treasurePos = random.randint(1, 3)
monsterPos = random.randint(1, 5)
if treasurePos == monsterPos:
generateValues()
else:
print(treasurePos)
print(monsterPos)
Ich bin verwirrt durch die While-Schleife. Gibt es einen Grund, warum Sie versuchen, die Werte für immer zu generieren? Sicher würde ein einzelner zufälliger Wert für jeden funktionieren ... –
@Karen Clark Mein Zweck für die while-Schleife war, die Werte zu erzeugen, bis sie zwei verschiedene Werte sind. Wenn für beide Positionen die gleichen Werte erzeugt werden, würde das Programm wiederum unterschiedliche Nummern erzeugen. –
Ich habe es jetzt geändert, schaue auf den unteren Rand des ursprünglichen Beitrags. –