首页 > 解决方案 > collat​​z 序列名称未定义

问题描述

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 猜想的程序。在用户输入非整数值的情况下,我在做任何事情时都没有遇到任何问题整数值,但由于某种原因,当它到达异常语句下的 while 循环时会引发错误,该语句指出“名称‘数字’未定义’,我不确定它为什么会引发此错误

标签: python

解决方案


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

作为单独的评论,请考虑您将从哪种类型的数据中返回以及如果不满足或不满足任何条件input可以collatz返回什么?ifelse


推荐阅读