覆盖if语句

时间:2015-03-24 22:40:04

标签: python python-2.7

这是我有一天想要制作的一段代码:

    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游戏,问题是,当我运行它时,无论我输入什么性别,我得到打印的消息“你是一个男性”,好像它覆盖了首先,如果声明,并以某种方式使其成立。它应该工作的方式是在一个循环中你会被问到一个问题,然后检查答案是否真的有意义,并为它分配一个不会改变的特定值。如果答案没有任何意义,应该说“抱歉,我无法理解你”。然后回到问题。我对编码很新,并希望得到任何意见。

2 个答案:

答案 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。你需要每次比较它。