我怎样才能将input函数放入python 3中的定义中

问题描述

我正在研究在书中发现的collat​​z序列,我想输入数字,但是它没有用,当我输入数字时,enter keybord键不起作用,是否在我的输入中出现了错误程序? :

even = range(0,10**5,2)
odd = range(1,2)

def collatz_s(num):
    while num !=1 :
        if num in even :
            result = num /2
            print(result)
            num = result

        elif num is odd :
            result = num *3+1
            num = result
            print(result)


num = int(input('choose a random number'))
collatz_s(num)

解决方法

要检查数字是否为奇数或偶数,而不是生成range对象并检查数字是否为in,请查看除以2的余数num % 2。如果剩余为1,则表示数字为偶数。否则,很奇怪。

此外,使用num // 2执行整数除法。这样,将16除以2将得到8(整数),而不是8.0(浮点数)。事实证明,这在这里非常重要,尤其是因为您有兴趣找到除法的余数(这个概念主要涉及整数。)

我相信浮点除法中的舍入错误很可能会使您的程序陷入无限循环(因为带有小数位的小数不会出现在even或{{1}中}范围。或者,如果您超出了范围的上限(10 5 ),您将处于两种分支都不匹配的情况。使用整数除法并使用余数检查偶数或奇数应该可以解决这两个问题。

odd
,

问题出在您的elif块内,这里elif num is odd :在将is处理剩余部分时in改为integer division(//)而不是避免{{1} }错误。

precision