《Pyhton编程快速上手》第三章的实践题collatz序列
用最初的代码试了负数、0、小数,发现均有报错,查了下collatz序列仅对正整数生效,因此修改代码如下
# encoding = utf-8
import sys
def collatz(number):
flag = 0
if number % 2 == 0:
flag = number//2
else:
flag = number*3+1
print(flag)
return flag
while True:
try:
number = int(input('输入数字(0退出):'))
if number < 0:
print('非正整数会循环')
continue
elif number == 0:
break
else:
flag = collatz(number)
while flag != 1 :
flag = collatz(flag)
print('以1结束')
except Exception as e:
print('请输入正整数')
continue
不太会考虑程序内存、时间占用率,如果有更好的办法,希望大家分享
附已有的证明思路