问题:编写一个名为collatz()的函数,它有一个名为number的参数。如果参数是偶数,那么collatz()就打印出number//2,并返回该值。如果number是奇数,collatz()就打印并返回3*number+1.
然后编写一个程序,让用户输入一个整数,并不断对这个数调用collatz(),直到函数返回1(令人惊奇的是,这个序列对于任何整数都有效,利用这个序列,你会迟早得到1!即使数学家也不能确定为什么。你的程序在研究所谓的“Collatz序列”,它有时会被称为“最简单的、不可能的数学问题”)。
尝试假如try和except语句,检测用户是否输入了一个非整数的字符串。正常情况下,int()函数在传入一个非整数字符串时,会产生ValueError错误,比如int('puppy')。在except语句中,向用户输出一条信息,告诉他们必须输入一个整数。
def collatz(number):
if number % 2==0:
a=number//2
return a
else:
b=3*number+1
return b
try:
number = int(input("请输入数字:"))
while True:
if collatz(number) != 1:
number=collatz(number)
print(number)
else:
print(collatz(number))
break
except ValueError as f:
print(f"输入的内容不合规{f},您必须输入一个整数")
请输入数字:rr
输入的内容不合规invalid literal for int() with base 10: 'rr',您必须输入一个整数
请输入数字:3
10
5
16
8
4
2
1