未绑定的局部错误:在try和except语句内部赋值之前引用的局部变量

2024-05-08 00:50:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个非常简单的菜单系统,使用所有python工具(try and except语句、循环、if语句),但我遇到了一点麻烦。在

这是我现在收到的代码和错误消息

def Menu():
while True:
    print("""
    Hello, please enter a number 1 - 4
        1 - Compliment
        2 - Fact
        3 - Insult
        4 - Quit
        """)

    try:
        UserInput_INT = int(input("> "))


    except ValueError:
        UserInput_STR = (UserInput_INT)
        if len(UserInput_STR) == 0:
            print("You have entered nothing. Please enter a number between 1 and 4")
        print("You entered a character. Please enter a number between 1 and 4")
        Menu()

    if  UserInput_INT not in range (1, 5):
        print("Invalid input please enter a whole number between 1 and 4")
        continue

    UserInput_STR = (str(UserInput_INT))
    if UserInput_STR == '1':
        print(" You look horrible today!")

    elif UserInput_STR == '2':
        print("Sam Birkenshaw & Jordan Ives can code better than Mr Bath. ")

    elif UserInput_STR == '3':
        print("You are bad at coding ")

    elif UserInput_STR == '4':
        quit()

菜单()

错误消息:

“回溯(最近的呼叫最后一次): 文件“E:/全部/学校作业/计算机科学/代码/山姆损坏”代码.py“,第12行,在菜单中 UserInput_INT=INT(输入(“>;”) ValueError:基为10的int()的文本无效:“”

在处理上述异常时,发生了另一个异常:

回溯(最近一次呼叫): 文件“E:/全部/学校作业/计算机科学/代码/山姆损坏”代码.py“,第39行,英寸 菜单() 文件“E:/全部/学校作业/计算机科学/代码/山姆损坏”代码.py“,第16行,在菜单中 UserInput_STR=(UserInput_INT) UnboundLocalError:赋值之前引用了局部变量'UserInput'u INT'”

我需要这样做,如果用户什么都不输入,有一个不同的消息显示,如果他们输入了一个字母,如果他们输入了其他东西,而不是一个接受的答案。在

(我目前正在运行python3.6.2)


Tags: and文件代码you消息numberif菜单
1条回答
网友
1楼 · 发布于 2024-05-08 00:50:29

作为输入传递给程序的值不是有效的整数。现在,当引发异常时,没有为变量UserInput_INT赋值,从而导致第二个错误。在尝试强制转换之前,请尝试检查该值是否为整数。在

input = input("> ")
UserInput_INT = int(input) if input.isdigit() else input

作为补充说明,请尝试遵循命名约定。在

相关问题 更多 >