UnboundLocalError:TRY EXCEPT STATEMENTS

时间:2017-10-03 21:24:30

标签: python python-3.x

我目前正在创建一个包含try except工具的菜单。我正在尝试创建它,以便用户不输入任何内容(按ENTER键)输出:

  

您尚未输入任何内容,请输入1到4之间的数字

This is the error message(click here)

这是我到目前为止所做的:

def Menu():
    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")


    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()

Menu()

2 个答案:

答案 0 :(得分:1)

试试这个和你预期的输出一样。

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

所以这里我们首先输入UserInput_INT然后在try块中将它转换为整数类型。

答案 1 :(得分:0)

在语句UserInput_STR = (UserInput_INT) [*]中,您正在访问一个您没有初始化的变量,因为int(input("> "))失败了。这是一个较短的例子:

def f():
    try:
        x = 2/0
    except:
        print(x)

print(x)应该做什么?变量确实是本地的,但不受约束。它没有初始化。

[*]我相信你的意思是UserInput_STR = str(UserInput_INT),但出于同样的原因,它不会起作用。