python 带中断的嵌套循环
python nested loop with break
很好,我正在学习 python,我正在尝试制作这种文字游戏,但我卡住了
在 while 循环中......我想做的是列出可以使用的东西,并将用户的 raw_input 与此列表进行比较,如果他们在 5 次尝试中选择了正确的一个,则继续,否则会死于消息。
这是我的代码:
def die(why):
print why
exit(0)
#this is the list user's input is compared to
tools = ["paper", "gas", "lighter", "glass", "fuel"]
#empty list that users input is appended to
yrs = []
choice = None
print "You need to make fire"
while choice not in tools:
print "Enter what you would use:"
choice = raw_input("> ")
yrs.append(choice)
while yrs < 5:
print yrs
die("you tried too many times")
if choice in tools:
print "Well done, %s was what you needeed" % choice
break
但选择没有被添加到列表 yrs
,它只使用一个 while 循环
但它会永远持续下去,或者直到用户输入工具列表中的一项,
但是我喜欢将它限制为 5 次尝试,然后输入:die("You tried too many times")
但它在第一次尝试后立即给了我死亡信息......
我在这个论坛上搜索,没有找到满意的答案,请帮助我
尝试
if len(yrs) < 5:
print yrs
else:
die("you tried many times")
而不是一会儿。条件
yrs < 5
总是返回 false,因为 yrs
是一个列表,而您正在将它与一个整数进行比较。这意味着 while yrs < 5
循环永远不会执行,因为条件 yrs < 5
永远不会为真。您的程序跳过此循环并调用 die()
函数,这使其立即退出。这就是为什么你应该把 die
放在条件语句中,就像上面的代码片段一样。
请注意,如果您改为:
while len(yrs) < 5:
print yrs
这也是不正确的,因为条件 len(yrs) < 5
会在第一次检查时评估为 True
,因此您最终会陷入无限循环,用户不会能够提供任何输入,条件 len(yrs) < 5
所依赖的长度。
您可能希望将 yrs
的 length 与 if
语句(如上所述)中的 5 进行比较,以查看用户的尝试是否正确超过 5。如果它们不超过 5,代码流应该在重复外部 while
循环之前继续进行最终检查(if choice in tools
...),以使用户能够再试一次。
from sys import exit
def die(why):
print why
exit()
tools = ["paper", "gas", "lighter", "glass", "fuel"]
choice = ''
tries = 0
print 'You have to make fire'
while choice not in tools:
choice = raw_input('What do you want to do?-->')
tries += 1
if tries == 5:
die('You tried too many times')
print 'Well done you made a fire!'
很好,我正在学习 python,我正在尝试制作这种文字游戏,但我卡住了 在 while 循环中......我想做的是列出可以使用的东西,并将用户的 raw_input 与此列表进行比较,如果他们在 5 次尝试中选择了正确的一个,则继续,否则会死于消息。 这是我的代码:
def die(why):
print why
exit(0)
#this is the list user's input is compared to
tools = ["paper", "gas", "lighter", "glass", "fuel"]
#empty list that users input is appended to
yrs = []
choice = None
print "You need to make fire"
while choice not in tools:
print "Enter what you would use:"
choice = raw_input("> ")
yrs.append(choice)
while yrs < 5:
print yrs
die("you tried too many times")
if choice in tools:
print "Well done, %s was what you needeed" % choice
break
但选择没有被添加到列表 yrs
,它只使用一个 while 循环
但它会永远持续下去,或者直到用户输入工具列表中的一项,
但是我喜欢将它限制为 5 次尝试,然后输入:die("You tried too many times")
但它在第一次尝试后立即给了我死亡信息......
我在这个论坛上搜索,没有找到满意的答案,请帮助我
尝试
if len(yrs) < 5:
print yrs
else:
die("you tried many times")
而不是一会儿。条件
yrs < 5
总是返回 false,因为 yrs
是一个列表,而您正在将它与一个整数进行比较。这意味着 while yrs < 5
循环永远不会执行,因为条件 yrs < 5
永远不会为真。您的程序跳过此循环并调用 die()
函数,这使其立即退出。这就是为什么你应该把 die
放在条件语句中,就像上面的代码片段一样。
请注意,如果您改为:
while len(yrs) < 5:
print yrs
这也是不正确的,因为条件 len(yrs) < 5
会在第一次检查时评估为 True
,因此您最终会陷入无限循环,用户不会能够提供任何输入,条件 len(yrs) < 5
所依赖的长度。
您可能希望将 yrs
的 length 与 if
语句(如上所述)中的 5 进行比较,以查看用户的尝试是否正确超过 5。如果它们不超过 5,代码流应该在重复外部 while
循环之前继续进行最终检查(if choice in tools
...),以使用户能够再试一次。
from sys import exit
def die(why):
print why
exit()
tools = ["paper", "gas", "lighter", "glass", "fuel"]
choice = ''
tries = 0
print 'You have to make fire'
while choice not in tools:
choice = raw_input('What do you want to do?-->')
tries += 1
if tries == 5:
die('You tried too many times')
print 'Well done you made a fire!'