calculation = 0
def collatz(number):
global calculation
if number % 2 == 0:
calculation = number // 2
print(calculation)
return calculation
#odd number
elif number % 2 == 1:
calculation = 3 * number + 1
print(calculation)
return calculation
try:
number = collatz(input('Type a number:')))
except:
while type(number) != int:
print('Please type a numerical value')
number = collatz(int(input('Type a number:')))
while calculation > 1:
collatz(calculation)
问题: 在阅读我正在阅读的python书中的项目时,我被指示创建一个利用collatz conjecrture的程序。在用户输入无整数值的情况下,我可以毫无困难地完成所有工作,直到我希望它执行异常处理为止。我使用了type函数来遍历代码中的except语句块中的所有内容,直到用户键入整数值,但由于某种原因,它到达except语句下的while循环时抛出错误,该语句声明“未定义名称'number',并且我不确定为什么会引发此错误
答案 0 :(得分:1)
在代码的except
块中,将在哪里定义number
?它不可能在try
块中,因为如果您正在执行except
块,那么根据定义,try
块的操作将失败。
作为单独的注释,请考虑从input
或collatz
都不满足的情况下,将从if
返回的数据类型以及else
可以返回什么数据?