我已经使用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 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
我一直在尝试解决此问题,但令我沮丧的是,我似乎无法弄清楚。这是怎么回事?
答案 0 :(得分:0)
来自Python文档的NameError异常是:
在找不到本地或全局名称时引发。这仅适用于不合格的名称。关联的值是一条错误消息,其中包含找不到的名称。
一个ValueError异常是:
在操作或函数接收到类型正确但值不合适的参数时引发,并且这种情况没有通过诸如IndexError之类的更精确的异常来描述。
运行此行并输入字符串“ Hello”后,您将收到ValueError异常:
enter = int(input())
然后,except块将处理此错误,这意味着将不会为enter变量分配值“ Hello”。由于从未定义enter变量,因此以下行将产生NameError:
while enter != 1:
答案 1 :(得分:0)
我已经测试了代码,并修改了一部分。
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...')
输入数字:您好
请输入一个整数。再试一次...