python - 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: ")))
但我想知道是否可以按照说明在函数中收集输入。
解决方案
是的,可以从函数中获取输入。您正确地从用户那里获得了输入,但是,您似乎遇到了函数范围问题。
您遇到的 NameError 问题是由于变量的范围。您已经在函数 multiply 中定义了它们,并且您试图在函数范围之外访问它们。Python 函数范围意味着您只能在函数下方的缩进空间中访问这些变量。
例如:如果您有:
multiply():
num_1 = 2
print(num1)
不会有名称错误,因为您在函数的范围内。但是,如果你做了这样的事情:
multiply():
num_1 = 2
print(num1)
您将收到 NameError: num_1 is not defined
推荐阅读
- azure - 为什么直到循环提前结束?
- c# - 如何使用 .NET 对构建进行签名?
- google-play-console - APK 需要有效的隐私政策您的应用正在上传用户的主要帐户信息
- monaco-editor - 如何在摩纳哥差异编辑器中隐藏/取消隐藏模型或面板
- vue.js - Vue.js 错误 8:3 错误解析错误:Unexpected keyword 'new'
- docker - 从其他机器访问在 docker-compose 中运行的 kafka
- sql - PostgreSQL - 将 JSON 对象存储到 Postgresql 表
- mongodb - mongoose 不在 mongodb atlas 中创建 2dsphere 索引
- python - Python Matlab 引擎在 Docker 中的使用
- node.js - Node-Soap 故障“无效的安全性”