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

时间:2015-11-09 11:36:10

标签: python

UIVisualEffectView

在这里的代码中,我要求此人选择要使用的起始项目。它会将项目添加到项目列表中。如果该项目不是剑或锤子,则应该说无效选项并将您发回给函数的开始。不幸的是,它会将剑或锤子放在列表中,但无论如何它都会运行第三个'if'语句。

4 个答案:

答案 0 :(得分:2)

英语" X不是Y或Z"并不像Python那样完全翻译。在Python中,X != Y or Z被视为(X != Y) or (Z); Z是它自己的条件,由于"hammer"本身始终为真,or "hammer"使任何条件成立。你真的想说starting_item != "sword" and starting_item != "hammer"

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

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

答案 1 :(得分:1)

如果

,您需要更改第三个条件

将其更改为:

if starting_item != "sword" or starting_item !="hammer":

答案 2 :(得分:1)

我建议使用以下代码

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

答案 3 :(得分:0)

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

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

最后,为每个缩进级别使用一致数量的空格。