Python3:函数内输入的名称错误

2024-04-20 14:25:25 发布

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

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

NameError: name 'num_1' is not defined.

我的尝试是:

^{pr2}$

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

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

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


Tags: 函数用户namenumberinput定义错误整数
3条回答

因为您是在函数内部收集值,所以不需要将它们作为参数传递。在

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

因为输入是由用户定义的,所以函数没有输入参数。使用:

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

结果

^{pr2}$

是的,可以从函数获取输入。您从用户处获得的输入是正确的,但是,看起来您在函数范围界定方面遇到了问题。在

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

例如:如果您有:

multiply():
  num_1 = 2
  print(num1)

不会出现名称错误,因为您在函数的作用域内。但是,如果你做过这样的事情:

^{pr2}$

您将收到名称错误:num_1未定义

相关问题 更多 >