【问题标题】:python code running else statement even after if statement is true即使在 if 语句为 true 之后,python 代码也会运行 else 语句
【发布时间】:2018-04-12 19:46:44
【问题描述】:

我正在学习 python 编程并且正在经历 If Else 条件。 即使 If 语句为真,我的代码也会执行 else 条件。

请检查以下代码:

age = int(input("Enter your Age (in years)"))
sex = input("Enter you Sex(M/F)")
if(sex == 'M'):
    if(age < 20):
        print("You are just a teen.")
    if(age >= 20 and age < 25):
        print("You are a young man now.")
    elif(age >=25 and age < 30):
        print("You are a mature man now")
    else:
        print("You are getting old")
if(sex == 'F'):
    if(age < 20):
        print("You are just a teen.")
    if(age >= 20 and age < 25):
        print("You are a young woman now.")
    elif(age >=25 and age < 30):
        print("You are a lady now")

在这里,如果我输入年龄为 2,性别为 M,代码进入第一个条件并打印消息

“你们只是一个团队”

除此之外,代码还运行 else 条件并打印

你老了

我不明白这种行为。我检查了缩进,所有的缩进都是正确的。

【问题讨论】:

  • if 不是 elif
  • “青少年”是 2 岁的正确答案吗?

标签: python python-3.x


【解决方案1】:

你不小心把它变成了 double if,这会导致两个语句都执行。

age = int(input("Enter your Age (in years)"))
sex = input("Enter you Sex(M/F)")
if(sex == 'M'):
    if(age < 20):
        print("You are just a teen.")
    elif(age >= 20 and age < 25): # notice now it is one if-elif block
        print("You are a young man now.")
    elif(age >=25 and age < 30):
        print("You are a mature man now")
    else:
        print("You are getting old")
if(sex == 'F'):
    if(age < 20):
        print("You are just a teen.")
    elif(age >= 20 and age < 25): # same here
        print("You are a young woman now.")
    elif(age >=25 and age < 30):
        print("You are a lady now")

【讨论】:

    【解决方案2】:

    开关

    if(age < 20):
        print("You are just a teen.")
    if(age >= 20 and age < 25):
        print("You are a young man now.")
    

    if(age < 20):
        print("You are just a teen.")
    elif(age >= 20 and age < 25):
        print("You are a young man now.")
    

    发生的情况是,您在 if sex == 'M' 中的第二个 if 语句没有得到满足,因为年龄不在 20 到 25 之间。由于 elif 也没有得到满足,所以 else 块中的内容运行.

    【讨论】:

      【解决方案3】:

      在您给出的代码 sn-p 中,else 连接到第二个 if 语句:if(age &gt;= 20 and age &lt; 25):。第一个“if”执行得很好,但是当第二个“if”失败时,它会执行“else”。这可以通过将第二个“if”更改为“elif”来解决:

      if(sex == 'M'):
          if(age < 20):
              print("You are just a teen.")
          elif(age >= 20 and age < 25):
              print("You are a young man now.")
          elif(age >=25 and age < 30):
              print("You are a mature man now")
          else:
              print("You are getting old")
      

      【讨论】:

        【解决方案4】:

        它正在打印正确的输出。首先,它检查年龄是否小于 20 岁,这是正确的,然后打印“You are just a teen.”。

        if(sex == 'M'):
            if(age < 20):
                print("You are just a teen.")
        

        之后它检查第二个“if”语句,然后是“elif”,然后它转到“else”并打印该语句,因为之前没有匹配项。

        if(age >= 20 and age < 25):
            print("You are a young man now.")
        elif(age >=25 and age < 30):
            print("You are a mature man now")
        else:
            print("You are getting old")
        

        你可能在这里打错了:

        if(age >= 20 and age < 25):
            print("You are a young man now.")
        

        您可能在这里尝试使用 'if' 而不是 'elif'。

        【讨论】: