首页 > 解决方案 > python 3:函数内输入的名称错误

问题描述

我需要定义一个函数,它将从用户输入中收集的两个整数相乘。说明说要“在函数内”收集用户输入,但这样做会导致错误:

NameError: name 'num_1' is not defined.

这是我的尝试:

def multiply(num_1, num_2):
    num_1 = input("enter a whole number:")
    num_2 = input("enter another whole number:")
    result = int(num_1)*int(num_2)
    return(num_1 + " * " + num_2 + " = " + str(result))

multiply(num_1, num_2)

更改代码以便在调用函数时收集输入使其通过:

def multiply(num_1, num_2):
    result = int(num_1)*int(num_2) 
    return(num_1 + " * " + num_2 + " = " + str(result))

print(multiply(input("enter  a whole number: "), input("enter another whole number: ")))

但我想知道是否可以按照说明在函数中收集输入。

标签: pythonpython-3.xnameerror

解决方案


是的,可以从函数中获取输入。您正确地从用户那里获得了输入,但是,您似乎遇到了函数范围问题。

您遇到的 NameError 问题是由于变量的范围。您已经在函数 multiply 中定义了它们,并且您试图在函数范围之外访问它们。Python 函数范围意味着您只能在函数下方的缩进空间中访问这些变量。

例如:如果您有:

multiply():
  num_1 = 2
  print(num1)

不会有名称错误,因为您在函数的范围内。但是,如果你做了这样的事情:

multiply():
  num_1 = 2

print(num1)

您将收到 NameError: num_1 is not defined


推荐阅读