微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决我怎样才能将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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。