我正在学习python,我正在尝试制作这种文本游戏,并被困在while循环上...我正在尝试做的是拥有可以使用的东西列表,并将用户的raw_input与该列表进行比较(如果他们选择了正确的话) 5次尝试中的1次继续,否则死于消息。这是我的代码:
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循环,但是它将永久消失或直到用户输入输入工具列表中的一项为止,但是id希望将其限制为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
的长度与5进行比较if
(如上所述),以查看用户的尝试次数是否大于5。如果尝试的次数不超过5,则代码流应继续进行最终检查(if choice in tools
... ),然后再重复外while
循环,以使用户能够进行另一次尝试。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句