Python,不遵循 if 语句

Python, not following if statements

我正在尝试创建一个基于文本的地牢游戏。只是为了好玩和练习,但我遇到了 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] 输入显示正常,但我可以输入任何内容(例如鸭子),并且它就像我输入 elf 一样。当我询问 confirm_race 时,它总是返回“是”。我想我一定是在那里打错了字,但我找不到它。我重做了我所有的缩进,但仍然没有运气。我将尝试使用功能进行重组,也许这会有所帮助。与此同时,我很想知道这里出了什么问题,以便将来可以防止它发生。谢谢。 (我正在使用 Python 3,在我的 Nexus 5 上 phone 很重要)

您没有从

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

在这种情况下,"elf" 每次都计算为真。你想改为写

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

或更简洁

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

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