python - 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 但它对我不起作用。
解决方案
绕过作用域的一种方法是从函数中返回所需的变量并将其传递到需要的地方。我更喜欢使用全局变量:
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?")
通过这种方式,您可以传入不断变化的值(文本),并从变量解析和验证中获益。
推荐阅读
- php - 如何修复 Magento 2 中已弃用的 Zend_Rest 客户端?
- c# - 发布 ASP.NET 以供本地使用,无需 IIS
- javascript - 让 vue-i18n 与 nuxt generate 一起工作时遇到问题
- vue.js - 如何通过 Nuxt/Vue 中的 API 进行数据库调用
- flutter - 如何在颤动中改变盒子阴影的高度、宽度和不透明度?
- kubernetes - 处理多个命名空间时 K8s 集群中的 DNS 问题
- python - 纸浆优化错误 - LPVariable 对象不支持索引
- python - 如何中断 Tkinter 中的传入按钮事件?
- jenkins - 如何使用 SVN 配置 Jenkins“来自 SCM 的管道脚本”
- css - 在列/垂直中居中文本,CSS Grid