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游戏,问题是,当我运行它,不管我为性别而输入的信息,我得到了印刷的信息“你是男性”,好像它压倒了第一条陈述并以某种方式使其成为现实。它应该工作的方式是,在循环过程中,你会被问到一个问题,然后检查答案是否真的有意义,并为它指定一个不会改变的特定值。如果答案没有任何意义,它应该说“对不起,我不明白你。”并回到问题。我对编码相当陌生,很感激任何输入。

+2

没有真正与问题相关,但是您有学习Python2的原因吗? Python3现在已经相当成熟,我认为他们推荐使用v3,除非有一个特定的原因(某些库还没有可用等)。 – Holloway 2015-03-24 22:59:18

+0

正如我所说,我对python相当陌生,并且正在使用名为“Hello World 2”的书来学习它。它使用Python 2,所以我这样做。当我编码更好时,我可能会切换到python 3。 – 2015-03-28 14:03:37

该行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。你需要每次比较一下。