Python中基本while循环的问题

2024-04-23 18:45:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个基本的文本游戏来提高我的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'

Tags: andofthetoyouyourreturnitems
2条回答

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

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

永远不会变成错误,因为巨魔的选择不能同时是12以及3。所以它会无限期地继续寻找。你知道吗

您希望在条件中使用and而不是or,以在troll\u choice变为这三个选项之一时中断循环。你知道吗

但是更好的方法是使用in操作符-

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

很抱歉,我不能成功运行您的程序,可能是出了什么问题。你知道吗

我只给出一个简单的解决方案。你知道吗

def loop():
while 1:
    print "please input 1,2 or 3"
    num = int(raw_input("> "))
    if num < 1 or num > 3:
        print "please try again"
        continue
    return

loop()

你可以随意改变它。你知道吗

相关问题 更多 >