【问题标题】:Last else if statement does not print [duplicate]最后一个else if语句不打印[重复]
【发布时间】:2021-06-07 00:20:11
【问题描述】:

如果角色是“学生”,我试图让输出显示“学生没有获得密钥”,如果角色是“管理员”或“教师”,则显示“管理员和教师获得密钥”,以及“你如果角色不是这些选项中的任何一个,则只能是管理员、教师或学生”。使用下面的代码,如果用户键入“学生”,则第一个 if 语句和 elif 语句正确显示“学生没有获得密钥”,如果用户键入“管理员”或“管理员和教师获得密钥”,则正确显示老师”。 但如果用户写“看门人”,输出仍会显示“管理员和教师获得钥匙”。我已经尝试在末尾添加第二个 elif 语句而不是 else:然后在它下面if...:,但结果是一样的。我还尝试混合 if 语句的顺序,但输出永远不会打印“您只能是管理员、教师或学生”。我能做些什么?谢谢。

role = input("Your role: ")

if role == "student":
    print("Students do not get keys!")
elif role == "administrator" or "teacher":
    print("Administrators and teachers get keys!")
else:
    if role != "administrator" or "teacher" or "student":
        print("You can only be an administrator, teacher, or student!")

【问题讨论】:

  • 对不起,我不明白那里的答案。

标签: python string if-statement comparison-operators


【解决方案1】:

试试这个:

role = input("Your role: ")
print(role)
if role == "student":
    print("Students do not get keys!")
elif role == "administrator" or role =="teacher":
    print("Administrators and teachers get keys!")
elif role != "administrator" or role!= "teacher" or role!="student":
        print("You can only be an administrator")

将所有值放在一个列表中效果会更好

role = input("Your role: ")
print(role)
roles = ["student","teacher","administrator"]
if role == "student":
    print("Students do not get keys!")
elif role == "administrator" or role =="teacher":
    print("Administrators and teachers get keys!")
elif role not in roles:
        print("You can only be an administrator")

【讨论】:

    【解决方案2】:

    这段代码:

    role == "administrator" or "teacher"
    

    将永远为真。您基本上是在说角色是“管理员”还是“老师”为真。任何非空字符串都将评估为 True。所以你可能想要这样的东西:

    role in ["administrator", "teacher"]
    

    【讨论】:

      【解决方案3】:

      问题在于始终为真的 elif 语句,以解决此问题 试试这个代码:

      role = input("Your role:")
      
      if role == 'student':
          print("Students do not get keys!")
      elif role in ['administrator', 'teacher']:
          print("Administrators and teachers get keys!")
      else:
          print("You can only be an administrator, teacher, or student!")
      

      【讨论】: