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":
我正在尝试创建一个基于文本的地牢游戏。只是为了好玩和练习,但我遇到了 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":