在这个嵌套的if / else语句中,elif没有被运行?

时间:2015-11-21 01:50:57

标签: python

我是编程和python的新手。虽然,我在www.udacity.com和www.codecademy.com上上了几节课。

我对代码块底部的嵌套if / else语句有问题,“嵌套”if语句正在运行但是elif语句之后未按预期运行时输入Age小于18的值。当我在 Python IDLE v中运行时,我没有收到任何错误消息。 2.5.4 让我相信存在类似于空格的问题,其中if语句不期望elseelif语句并认为代码以嵌套的if语句结束。

最后一个输出是嵌套if / else语句中两个打印语句中的第一个。

我已经搜索了我的问题的答案,但我找不到任何来源给我这个特定问题的答案,我无法弄清楚代码有什么问题。也许,我只是失明。

print("Welcome")

Name = raw_input("Enter your name ")

print("Hello, " + Name + ".")

Age = raw_input("Enter your age ")

Gender = raw_input("Gender? ")

if Gender == "M" or "Male" or "male" or "boy" or "Boy":
    if Age >= 18:
        print ("You are " + Name + ", a " + Age + " year old man.") 
    elif Age < 18:
        print ("You are " + Name + ", a " + Age + " year old boy.")

2 个答案:

答案 0 :(得分:3)

raw_input返回文字,你不能理智地*做到这一点:

Age (text) < 18 (number):

您需要将年龄转换为数字,例如

Age = raw_input("Enter your age ")
Age = int(Age)

(*虽然你被允许这样做,所以它不是Python的错误,它只是不能做你想要的)

答案 1 :(得分:-1)

以下是一个工作示例。你将你的年龄作为一个字符串并测试它与18相比。这几乎总是提供值true并显示你是男性来解决这个问题,你可以在测试值之前将年龄作为int。 / p>

同样在测试性别时,您可以通过测试输入的全部大写版本是否等于M或MALE来创建相同的结果,并且对于用户来说更容易,因为您已经删除了他们的区分大小写输入

print("Welcome")

Name = raw_input("Enter your name ")

print("Hello, " + Name + ".")

Age = input("Enter your age ")

Gender = raw_input("Gender? ")

if Gender.upper() == "M" or Gender.upper() == "MALE":
    if Age >= 18:
        print ("You are " + Name + ", a " + str(Age) + " year old man.") 
    elif Age < 18:
        print ("You are " + Name + ", a " + str(Age) + " year old boy.")