collat​​z序列名称未定义

时间:2018-11-30 20:51:14

标签: python

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书中的项目时,我被指示创建一个利用collat​​z conjecrture的程序。在用户输入无整数值的情况下,我可以毫无困难地完成所有工作,直到我希望它执行异常处理为止。我使用了type函数来遍历代码中的except语句块中的所有内容,直到用户键入整数值,但由于某种原因,它到达except语句下的while循环时抛出错误,该语句声明“未定义名称'number',并且我不确定为什么会引发此错误

1 个答案:

答案 0 :(得分:1)

在代码的except块中,将在哪里定义number?它不可能在try块中,因为如果您正在执行except块,那么根据定义,try块的操作将失败。

作为单独的注释,请考虑从inputcollatz都不满足的情况下,将从if返回的数据类型以及else可以返回什么数据?