虽然循环未按预期运行

时间:2016-10-05 14:43:43

标签: python if-statement while-loop

嘿,只是为了一些背景,我是一个新手发烧友程序员。我在寻找问题的帮助,但找不到任何东西。 我正在休闲地进行基于文本的冒险,并且想知道我做错了什么。如果用户输入的数字不是1,2或3,它应该重新运行循环正确吗?

def print_inv():
    print("Your items: %s" % (inventory))


inventory = []
while weapon == "empty":
    weapon = input("Enter what weapon you would like to use:\n\nSword(1)\nStaff(2)\nBow(3)\n\n)
    if weapon == "1":
        inventory.append("Sword")
        print_inv()
    elif weapon == "2":
        inventory.append("Staff")
        print_inv()
    elif weapon == "3":
        inventory.append("Bow")
        print_inv()
    else:
        weapon == "empty"

2 个答案:

答案 0 :(得分:1)

你需要在else case

中分配值
weapon ='empty' 

而不是比较

weapon =='empty' 

代码中的逻辑错误

主要问题是你的循环根本不起作用,因为如果empty的值已经{weapon==empty,由于条件weapon,武器首次应设置为empty {1}}然后,在第一次输入设置为1后,您的循环将停止,因为

 # weapon =1 by user input loop will stop because 1 =='empty' is false

 while weapon == "empty":

因此您需要使用!=代替== while

或者你可以使用break,因为只是你的代码没有任何用处而不是比较,所以你可以立即停止循环而不需要赋值empty

weapon ='zero'
while weapon != "4":
    weapon = input("Enter what weapon you would like to use:\n\nSword(1)\nStaff(2)\nBow(3)\nQuit(4)\n\n")
    if weapon == "1":
        inventory.append("Sword")
        print_inv()
    elif weapon == "2":
        inventory.append("Staff")
        print_inv()
    elif weapon == "3":
        inventory.append("Bow")
        print_inv()
    else:
        break

答案 1 :(得分:1)

您的代码应如下所示:

while weapon == "empty":
    weapon = input(...)
    if weapon == "1":
        #something
    elif weapon == "2":
        #something
    else:
        weapon = "empty" #!!!!!!

==用于比较 =用于分配。