嘿,只是为了一些背景,我是一个新手发烧友程序员。我在寻找问题的帮助,但找不到任何东西。 我正在休闲地进行基于文本的冒险,并且想知道我做错了什么。如果用户输入的数字不是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"
答案 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" #!!!!!!
==
用于比较
=
用于分配。