python 3:函数中输入的名称错误

时间:2018-06-11 20:33:51

标签: python python-3.x nameerror

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

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: ")))

但我想知道是否有可能在函数中收集输入作为指示。

3 个答案:

答案 0 :(得分:0)

由于输入是由用户定义的,因此该函数没有输入参数。使用:

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

multiply()

<强>结果:

'1 * 2 = 2'

答案 1 :(得分:0)

由于您在函数内部收集值,因此无需将它们作为参数传递。

def multiply_two_numbers():
    x = input("Enter a number: ")
    y = input("Enter another number: ")
    return x*y

>>> multiply_two_numbers()
Enter a number: 10
Enter another number: 12.5
125.0

答案 2 :(得分:0)

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

您获得的NameError问题是由于变量的范围。您已在函数中对它们进行了多次定义,并且您试图在函数范围之外访问它们。 Python函数作用域意味着您只能在函数下方的缩进空间中访问这些变量。

例如:如果你有:

multiply():
  num_1 = 2
  print(num1)

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

multiply():
  num_1 = 2

print(num1)

您将收到NameError:未定义num_1