Python 为什么我总是得到一个';名称错误';?
我已经用Python编写了几个小时的小代码练习:Python 为什么我总是得到一个';名称错误';?,python,python-3.7,nameerror,Python,Python 3.7,Nameerror,我已经用Python编写了几个小时的小代码练习: def collatz(number): if number % 2 == 0: print(number // 2) return number // 2 elif number % 2 == 1: result = 3 * number + 1 print(result) return re
def collatz(number):
if number % 2 == 0:
print(number // 2)
return number // 2
elif number % 2 == 1:
result = 3 * number + 1
print(result)
return result
print('Enter a number: ')
try:
enter = int(input())
except ValueError:
print('Please type an integer. Try again...')
while enter != 1:
enter = collatz(enter)
当输入一个数字时,它似乎工作正常,当我输入一个非整数值时,我得到了正确的响应,但在响应之后,我一直得到这个错误:
Enter a number:
Hello
Please type an integer. Try again...
Traceback (most recent call last):
File "C:/Users/P1ttstop/PycharmProjects/sweigartLearning/collatzSequence.py", line 17, in <module>
while enter != 1:
NameError: name 'enter' is not defined
输入一个数字:
你好
请键入一个整数。再试一次。。。
回溯(最近一次呼叫最后一次):
文件“C:/Users/P1ttstop/PycharmProjects/sweigartnearning/collatzSequence.py”,第17行,在
当进入时!=1:
NameError:未定义名称“enter”
我一直在试图解决这个问题,但令我沮丧的是,我似乎无法解决它。这里发生了什么?摘自Python文档,NameError异常是: 未找到本地或全局名称时引发。这仅适用于非限定名称。关联的值是一条错误消息,其中包含找不到的名称 ValueError异常是: 当操作或函数接收到类型正确但值不正确的参数,并且该情况未由更精确的异常(如Indexer Ror)描述时引发
运行此行并输入字符串“Hello”后,您将收到ValueError异常: except块随后将处理此错误,这意味着enter变量将永远不会被赋值为“Hello”。由于从未定义enter变量,以下行将生成NameError:
while enter != 1:
我已经测试了代码,并修改了一些部分
def collatz(number):
if number % 2 == 0:
print(number // 2)
return number // 2
elif number % 2 == 1:
result = 3 * number + 1
print(result)
return result
print('Enter a number: ')
try:
enter = int(input())
while enter != 1:
enter = collatz(enter)
except ValueError:
print('Please type an integer. Try again...')
输入一个号码:你好
请键入一个整数。再试一次
由于enter=int(input())
失败,因此在进入while enter!=1:
您可能应该将输入代码放入循环中。。。
def collatz(number):
if number % 2 == 0:
print(number // 2)
return number // 2
elif number % 2 == 1:
result = 3 * number + 1
print(result)
return result
print('Enter a number: ')
try:
enter = int(input())
while enter != 1:
enter = collatz(enter)
except ValueError:
print('Please type an integer. Try again...')