Overrided if语句
问题描述:
这是一段代码,我试图让第一天:Overrided if语句
proceed = 0
print """Welcome to Magyck and Monsters
A text-based RPG"""
charactor_name = raw_input("What is your name? ")
print "Welcome ", charactor_name
while proceed == 0:
gender_answer = raw_input("Are you male or female? ")
if gender_answer == "male" or "MALE" or "mALE" or "Male":
charactor_gender = "male"
proceed = 1
elif gender_answer == "Female" or "FEMALE" or "female" or "fEMALE":
charactor_gender = "female"
proceed = 1
else:
print "Sorry, I could not understand you."
proceed = 0
if proceed == 1:
print "You are a ", + charactor_gender
它应该是一个基于文本的RPG游戏,问题是,当我运行它,不管我为性别而输入的信息,我得到了印刷的信息“你是男性”,好像它压倒了第一条陈述并以某种方式使其成为现实。它应该工作的方式是,在循环过程中,你会被问到一个问题,然后检查答案是否真的有意义,并为它指定一个不会改变的特定值。如果答案没有任何意义,它应该说“对不起,我不明白你。”并回到问题。我对编码相当陌生,很感激任何输入。
答
该行if gender_answer == "male" or "MALE" or "mALE" or "Male":
将始终为真。
如果gender_answer等于“male”,或者如果其他选项中的其中一个选项为真,其他选项的测试结果为truthiness。由于任何非空字符串为真,条件将变为gender_answer == "male" or True
,这将始终为真。
使用if gender_answer in ("male", "Male", "MALE", "mALE"):
代替或更好if gender_answer.lower() == "male":
。
答
您需要制定一个完整的条件。
if gender_answer == "male" or gender_answer=="MALE" or gender_answer=="mALE" or gender_answer=="Male":
elif的相同解决方案。
因为“男性”(或任何字符串)被认为是真的,你进入if。你需要每次比较一下。
没有真正与问题相关,但是您有学习Python2的原因吗? Python3现在已经相当成熟,我认为他们推荐使用v3,除非有一个特定的原因(某些库还没有可用等)。 – Holloway 2015-03-24 22:59:18
正如我所说,我对python相当陌生,并且正在使用名为“Hello World 2”的书来学习它。它使用Python 2,所以我这样做。当我编码更好时,我可能会切换到python 3。 – 2015-03-28 14:03:37