def collatz(number):
if number % 2 == 0:
print (number//2)
return number//2
else:
print(3*number+1)
return 3*number+1
while True:
try:
number=int(input('Enter a number: '))
except ValueError:
print('请输入正整数!')
while number!=1:
number=collatz(number)
这样写的话,很奇怪,首先如果第一次输入的数值是整数的话,程序就会一直循环算出结果然后跳回 enter a number ,之后再输入浮点数,也会跳回去。
Enter a number: 0.8
请输入正整数!
Enter a number: 9.2
请输入正整数!
Enter a number: 10
5
16
8
4
2
1
Enter a number:
如果第一次输入的就是浮点数,就直接报错了
Enter a number: 3.1
请输入正整数!
Traceback (most recent call last):
File "G:\python学习\collatz4.py", line 15, in <module>
while number!=1:
NameError: name 'number' is not defined