我正在尝试使其在questnum == 3
之后结束。但是,在第一个任务标记之后显示的内容是这样的:
1:
Stage 3.
x
x
x
x
x
x
x
这永远发生。我不知道发生了什么事,所以请帮帮我。它在x / y代码中的某处,因为我已经将其注释掉并且可以正常工作。这是我的代码:
import random
end = False
x = 0
choice = 0
moon = input("x or y? ")
quest = False
currentquest = 0
queststage = 1
questnum = 0
while(True):
choice = random.randint(1,3)
if(choice <= 2 and moon.upper() == "X"):
print("x")
elif(choice <= 2 and moon.upper() == "Y"):
print("y")
if(choice == 3):
if(quest == False):
currentquest = random.randint(1,3)
if(currentquest == 1):
#Quest 1
print("1:\n")
print("Stage 1.\n\n")
quest = True
elif(currentquest == 2):
#Quest 2
print("2:\n")
print("Stage 1.\n\n")
quest = True
elif(currentquest == 3):
#Quest 3
print("3:\n")
print("Stage 1.\n\n")
quest = True
#Continue Quest
elif(quest == True):
#Quest 1
if(currentquest == 1):
if(queststage == 1):
queststage = 2
print("1:\n")
print("Stage 2.\n\n")
elif(queststage == 2):
queststage = 3
print("1:\n")
print("Stage 3.\n\n")
quest = False
questnum += 1
#Quest 2
elif(currentquest == 2):
if(queststage == 1):
queststage = 2
print("2:\n")
print("Stage 2.\n\n")
elif(queststage == 2):
queststage = 1
print("2:\n")
print("Stage 3.\n\n")
quest = False
questnum += 1
#Quest 3
elif(currentquest == 3):
if(queststage == 1):
queststage = 2
print("3:\n")
print("Stage 2.\n\n")
elif(queststage == 2):
queststage = 1
print("3:\n")
print("Stage 3.\n\n")
quest = False
questnum += 1
if(questnum == 3):
print("Complete.")
break
该代码段不起作用,以这种方式放置起来更容易。
答案 0 :(得分:1)
如果您在while循环之后添加一行print(choice,quest,currentquest,queststage,questnum)
,您将看到原因。
结果是
3 True 3 3 2
1 True 3 3 2
x
3 True 3 3 2
3 True 3 3 2
1 True 3 3 2
x
2 True 3 3 2
x
1 True 3 3 2
x
3 True 3 3 2
1 True 3 3 2
x
1 True 3 3 2
x
3 True 3 3 2
2 True 3 3 2
x
2 True 3 3 2
x
3 True 3 3 2
1 True 3 3 2
x
3 True 3 3 2
3 True 3 3 2
重新检查您的代码,循环中没有quest=True
,currentquest=3
,queststage=3
和questnum=2
的语句。
因此它将陷入无限循环。
答案 1 :(得分:0)
您的break语句位于if语句内,不会中断您执行的forever循环。如果暂时将True更改为变量,可以在最终的if语句中切换。