首页 > 解决方案 > int(input()) 错误 - NameError: name '...' is not defined

问题描述

当我尝试运行这个简单的 python 脚本时出现错误:

def ask_x():
    x = int(input('What is X?'))

def ask_y():
    y = int(input('What is Y?'))

def result():
    print(z)

def count():
    if (x>10):
        z = x + y
    else:
        z = 0
        print('nono')


#start of program
ask_x()
ask_y()
count()
result()

我正在使用 Python 3。我尝试搜索论坛并发现Stackoverflow - input() 错误 - NameError: name '...' is not defined 但它对我不起作用。

标签: pythonpython-3.x

解决方案


绕过作用域的一种方法是从函数中返回所需的变量并将其传递到需要的地方。我更喜欢使用全局变量:

def ask_x():
    return int(input('What is X?'))

def ask_y():
    return int(input('What is Y?'))

def result(z):
    print(z)

def count(x,y):
    if (x>10):
        z = x + y
    else:
        z = 0
        print('nono')
    return z

#start of program
x = ask_x()
y = ask_y()
z = count(x,y)
result(z)

最好使用如何询问用户有效输入中介绍的一种方法来获取您的输入:

def askInt(text):
    """Asks for a valid int input until succeeds."""
    while True:
        try:
            num = int(input(text))
        except ValueError:
            print("Invalid. Try again.") 
            continue
        else:
            return num

x = askInt("What is X?") 
y = askInt("What is Y?")

通过这种方式,您可以传入不断变化的值(文本),并从变量解析和验证中获益。


推荐阅读