如何解决我怎样才能将input函数放入python 3中的定义中
我正在研究在书中发现的collatz序列,我想输入数字,但是它没有用,当我输入数字时,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 举报,一经查实,本站将立刻删除。