Python 这段代码有什么问题,需要很多帮助吗?

Python 这段代码有什么问题,需要很多帮助吗?,python,Python,在这里的代码中,我要求用户选择要使用的起始项。它将。将项目附加到项目列表中。如果物品不是剑或锤子,它应该说是无效选项,并将你送回功能的乞讨处。不幸的是,它会。将剑或锤子添加到列表中,但它仍将运行第三个“if”语句。您需要更改第三个if的条件 将其更改为: welcome = raw_input("Enter username:") print "Welcome to dungeon crawler, %s" % (welcome) items = [] starting_item_var = T

在这里的代码中,我要求用户选择要使用的起始项。它将。将项目附加到项目列表中。如果物品不是剑或锤子,它应该说是无效选项,并将你送回功能的乞讨处。不幸的是,它会。将剑或锤子添加到列表中,但它仍将运行第三个“if”语句。

您需要更改第三个if的条件

将其更改为:

welcome = raw_input("Enter username:")
print "Welcome to dungeon crawler, %s" % (welcome)
items = []
starting_item_var = True

def sec_1():
    while True:
        starting_item = raw_input("Hammer or sword (use no caps!)")
        if starting_item == "hammer":
          items.append("hammer")
          print "Hammer was added to items"
        if starting_item == "sword":
          items.append("sword")
          print "Sword was added to items"
        if starting_item != "sword" or "hammer":
          print "Invalid option"
          continue
        return


sec_1()

我建议使用以下代码

if starting_item != "sword" or starting_item !="hammer":
英语“X不是Y或Z”的翻译与Python的翻译不完全相同。在Python中,
X!=Y或Z
被视为
(X!=Y)或(Z)
Z
是它自己的条件,由于
“hammer”
本身总是正确的,
或“hammer”
使任何条件都正确。你真的想说
开始项目!=“剑”和起始物品!=“锤子”

但实际上,你根本不应该重复你的条件:

if starting_item not in ["sword", "hammer"]:

起始项
只能有一个值,因此在此处使用
elif
是合适的。此外,使用
break
退出循环会更简洁,以防您决定在同一函数中的循环后添加更多代码

if starting_item == "hammer":
    items.append("hammer")
    print "Hammer was added to items"
elif starting_item == "sword":
    items.append("sword")
    print "Sword was added to items"
else:
    print "Invalid option"
    continue
最后,为每一级缩进使用一致的空格。

>(不要使用大写!)<不要告诉用户该做什么,只需调用
开始项即可。lower()
之后
或“hammer”
始终为
。这不是英语,您要测试
开始项目
是否为“剑”,以及
开始项目
是否为“锤”。或者您想要一个更简单的
if..elif..else
链。
def sec_1():
    while True:
        starting_item = raw_input("Hammer or sword (use no caps!)")
        if starting_item == "hammer":
            items.append("hammer")
            print "Hammer was added to items"
        elif starting_item == "sword":
            items.append("sword")
            print "Sword was added to items"
        else:
            print "Invalid option"
            continue
        break