这是我有一天想要制作的一段代码:
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游戏,问题是,当我运行它时,无论我输入什么性别,我得到打印的消息“你是一个男性”,好像它覆盖了首先,如果声明,并以某种方式使其成立。它应该工作的方式是在一个循环中你会被问到一个问题,然后检查答案是否真的有意义,并为它分配一个不会改变的特定值。如果答案没有任何意义,应该说“抱歉,我无法理解你”。然后回到问题。我对编码很新,并希望得到任何意见。
答案 0 :(得分:3)
第if gender_answer == "male" or "MALE" or "mALE" or "Male":
行始终为真。
您正在检查的是,如果gender_answer等于“男性”,或者其他选项之一为真,则其他选项会针对其truthiness进行测试。当任何非空字符串为True时,条件变为gender_answer == "male" or True
,这将始终为真。
使用if gender_answer in ("male", "Male", "MALE", "mALE"):
代替或更好if gender_answer.lower() == "male":
。
答案 1 :(得分:0)
你需要做一个完整的条件。
if gender_answer == "male" or gender_answer=="MALE" or gender_answer=="mALE" or gender_answer=="Male":
elif的相同解决方案。
因为"男性" (或任何字符串)被认为是真的,你进入if。你需要每次比较它。