gpt4 book ai didi

python - Python 中基本 while 循环的问题

转载 作者:行者123 更新时间:2023-12-01 04:37:23 24 4
gpt4 key购买 nike

我正在开发一个基本的文本游戏来提高我的 Python 技能。我有一个部分,其中有一系列 if 语句,我想使用 while 循环,以防人们使用给定 3 之外的选择,然后它将循环回到开头并再次询问他们。

由于某种原因,即使给出了 1-3 的正确选择,它也会打印“不计算,请重试”,而且我不明白为什么。我一直在学习如何做到这一点,我所做的似乎与该结构相同,所以不确定我做错了什么......

def enter(self):
print "You move down into the east tunnel"
print "You walk down the tunnel for what seems like a long time, there are flickering torches along the wall that give off small amounts of light but its still"
print "very difficult to see anything ahead"
print "You hear a growling and shuffling noise ahead.....as you peer into the gloom you see a large troll!"
print "what will you do?"

print """1 - draw your sword and fight him.
2 - try to run past him.
3 - use one of your objects.
"""

troll_choice = raw_input("> ")

while troll_choice != "1" or troll_choice != "2" or troll_choice != "3":
print "doesnt compute please try again"

troll_choice = raw_input("> ")

if troll_choice == "1":
print "you will fight the troll"
elif troll_choice == "2":
print "The troll looks slow and stupid but not as slow as you think! As you try to rush past him he brings his giant club down on top of your head"
print "killing you instantly"
return 'death'

elif troll_choice == "3":
print "which of your items will you use?"
items_choice = raw_input("> ")
if items_choice == "matches":
print "You fool, matches are useless against a creature of this size, he slays you swiftly"
return 'death'

elif items_choice == "gold coin":
print "you flick the gold coin at the Troll, the troll looks puzzled and watches the shiny coin arch through the air, no is your chance to attack!"
print "the Troll's defences are down, you draw your sword and lunge towards its soft underbelly and drive your sword home killing it instantly"
print "you wipe the blood from your sword and head on down the tunnel"

return 'room_b'

elif items_choice == "flashbang dust" or items_choice == "flashbang":
print "You pull out the puch of flashbang dust and throw it hard on the floor at the trolls feet while shielding your eyes..."
print "the blast and white light from the explosion blinds the troll, it roars and covers its eyes..."
print "you decide to use this time to get past the troll and sprint down the tunnel leaving him behind"

return 'room_b'

elif items_choice == "silver dagger" or items_choice == "iron cross":
print "Why would these be of any use against a troll??"
print "he quickly slays you!"

return 'death'

最佳答案

while 循环继续循环,直到条件变为 false ,即您给出的条件 -

while troll_choice != "1" or troll_choice != "2" or troll_choice != "3":

永远不会变成 false,因为 troll_choice 不能同时为 1 以及 23。所以它会无限期地继续寻找。

您希望在条件中使用 and 而不是 or ,以便在 troll_choice 成为这三个中的任何一个时中断循环。

但更好的方法是使用 in 运算符 -

while troll_choice not in ["1" , "2" , "3"]:

关于python - Python 中基本 while 循环的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31497369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com