为什么我的Or语句会使我的程序混乱?

问题描述

users = {} 状态=“”

def Menu(): 全球地位 状态=输入(“您是注册用户吗?是/否?输入q退出。\ n”)

if status == "Y" or "y":  #I wanted to make the option do capital and lowercase Y and N but when I
    OldUser()
elif status == "N" or "n":  #enter "n" it goes to OldUser() instead of Register()
    Register()

def Register(): 名称=输入(“输入用户名:”)

if name in users:
    print("The username is already used. Try again.")
else:
    pass_w = input("Enter a password: ")
    users[name] = pass_w
    print("\n Registration Complete! \n")

def OldUser(): login_n = input(“输入您的用户名:”)

if login_n in users:
    login_p = input("Enter your password: ")

    if login_p == users[login_n]:
        print("\n Login Successful! \n")
    else:
        print("Password incorrect!")
else:
    print("\n Wrong user or user doesn't exist. \n")

while状态!=“ q”: 菜单()

解决方法

您需要这样做:

if status == "Y" or status == "y": 
    OldUser()
elif status == "N" or status == "n":  
    Register()

他们是这样做的另一个更好的解决方案:

if status.lower() == "y": 
    OldUser()
elif status.lower() == "n":  
    Register()
,
if status in ["Y","y"]:  
    OldUser()
elif status in ["N","n"]:  
    Register()

或者您可以使用

if status  == "Y" or  status  == "y":  
    OldUser()
elif status ==  "N" or  status  =="n":  
    Register()

或者您可以降低身份并执行此操作

if status.lower() ==  "y":  
    OldUser()
elif status.lower() ==  "n":  
    Register()