Python,不遵循if语句

时间:2016-09-12 13:56:18

标签: python python-3.x if-statement skip

我试图创建一个基于地牢的文本游戏。仅仅是为了娱乐和练习,但我遇到了Python没有关注if块的问题。奇怪的是,当我第一次输出它时它起作用了,但是一天之后它没有。它将所有条件都视为真实。

choosing_race = True
while choosing_race == True:
    print("options: Human, Elf, Dwarf")
    p['race'] = input("Choose Race: ",)
    print(p['race'], choosing_race)

    if p['race'] == "Elf" or "elf":
        print()
        print("Elves are nimble, both in body and mind, but their form is frail. They gain Bonuses to Intelligence and Dexterity and a Penalty to Constitution")
        print()
        confirm_race = input("Are you an Elf? ",)
        if confirm_race == "yes" or "Yes":
            p['int_mod_r'] = 2
            p['dex_mod_r'] = 2
            p['con_mod_r'] = -2
            choosing_race = False
        elif confirm_race == "no" or "No":
            print()
            print("ok, select a different race")
        else:
            print()
            print("Could not confirm, try again")

p [race]输入显示正常,但我可以输入任何内容(例如duck),就好像我输入了elf一样。当我要求确认时,它总是返回是。我想我必须在那里写错字,但我无法找到它。我重写了所有的缩进但仍然没有运气。我将尝试重新构建功能,这可能会有所帮助。与此同时,我很想知道这里出了什么问题,所以我可以在将来阻止它。谢谢。 (我使用的是Python 3,在我的Nexus 5手机上就是重要的情况)

1 个答案:

答案 0 :(得分:4)

您没有从

这样的行获得您期望的行为
if p['race'] == "Elf" or "elf":

在这种情况下,“elf”每次评估为true。你想改为写

if p['race'] == "Elf" or p['race'] == "elf":

或更简洁

if p['race'] in ["Elf", "elf"]:

if p['race'].upper() == "ELF":