循环未按预期运行时

2024-06-09 14:15:01 发布

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

嘿,只是一些背景,我是一个新手爱好者程序员。我在我的问题上寻求帮助,但什么也找不到。 我正在做一个基于文本的娱乐冒险,我想知道我做错了什么。如果用户输入的数字不是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"

Tags: 用户文本数字empty程序员冒险inventory背景
2条回答

您的代码应如下所示:

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

==用于比较。
=用于赋值。你知道吗

您需要在else case中赋值

weapon ='empty' 

而不是比较

weapon =='empty' 

代码中的逻辑错误

主要的问题是你的循环根本不起作用,因为在第一次武器的值应该设置为empty由于条件weapon==empty如果weapon的值已经是empty,那么你的循环会在第一次输入设置为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

相关问题 更多 >