Python 程序停留在while循环中,但不';不运行程序?
这是一个螃蟹模拟器。我的while循环有问题。上面写着Python 程序停留在while循环中,但不';不运行程序?,python,while-loop,Python,While Loop,这是一个螃蟹模拟器。我的while循环有问题。上面写着 while val == True: 这就是问题所在。它停留在while循环中,但什么也没有发生。如果你有什么发现,我将不胜感激。 这是完整的代码。(我已尝试验证所有内容) 第一次运行程序后,x和val都是False,但z仍然是True。结果,外环继续滚动。将此线放在: print z, x, val 在while语句下面 您将看到,在用“2”回答“您想再次滚动吗:”问题后,x和val都是假的。这意味着它将遍历if..else语句的每一
while val == True:
这就是问题所在。它停留在while循环中,但什么也没有发生。如果你有什么发现,我将不胜感激。
这是完整的代码。(我已尝试验证所有内容)
第一次运行程序后,
x
和val
都是False
,但z
仍然是True
。结果,外环继续滚动。将此线放在:
print z, x, val
在while语句下面
您将看到,在用“2”回答“您想再次滚动吗:”问题后,
x
和val
都是假的。这意味着它将遍历if..else语句的每一部分,并继续无限循环。在执行else分支(if x的)后,它将陷入一个无止境的循环中,因为您将该值设置为False。在下一个迭代中,你说“代码>,而Val==Trime< /Cord>”,因为这个语句不是假的,并且有“强>不< /强>要考虑的其他语句,所以你运行在一个无休止的循环中。
要了解我的意思,只需在此处添加打印语句:
else:
print val
while val == True:
roll_again = raw_input("Would you like to roll again: ")
if roll_again == "1":
现在,我不知道你的实际程序是否需要所有这些布尔值,但是如果我想让它工作,我会开始消除我不需要的布尔值。我觉得你的结构太复杂了
编辑:
这里有一个使程序更简单的建议
import time
import random
x = True
z = True
def throw(n):
for i in range(1,n+1):
dice_1 = random.randint(1,6);dice_2 = random.randint(1,6)
print "roll",i,", die 1 rolled",dice_1,"and die 2 rolled",dice_2,",total",dice_1+dice_2
time.sleep(2)
return n
def ask(x):
if x:
print "Welcome to crabs."
try:
amount = int(raw_input("How many times would you like to roll:"))
except ValueError:
print ("Enter a valid number.")
throw(amount)
while z:
ask(x)
x = False
roll_again = raw_input("Would you like to roll again: ")
if roll_again == "1":
continue
else:
break
while z==True
可能会变成while z
,因为它是相同的。无需“双重检查”布尔值;)您还应该为变量指定明确的名称…为了帮助调试,为什么不在每个if
分支中执行简单的print
,您的意思是您没有看到原始输入命令的提示吗?非常感谢您的帮助:)不客气。如果你的问题得到了回答,一定要接受答案。
import time
import random
x = True
z = True
def throw(n):
for i in range(1,n+1):
dice_1 = random.randint(1,6);dice_2 = random.randint(1,6)
print "roll",i,", die 1 rolled",dice_1,"and die 2 rolled",dice_2,",total",dice_1+dice_2
time.sleep(2)
return n
def ask(x):
if x:
print "Welcome to crabs."
try:
amount = int(raw_input("How many times would you like to roll:"))
except ValueError:
print ("Enter a valid number.")
throw(amount)
while z:
ask(x)
x = False
roll_again = raw_input("Would you like to roll again: ")
if roll_again == "1":
continue
else:
break