编写一个名为collatz()的函数,它有一个名为number的参数
如果参数是偶数,那么collatz()就打印出number//2,并返回该值
如果number是奇数,collatz()就打印并返回3*number+1
然后编写一个程序,让用户输入一个数,并不断对这个数调用collatz(),直到函数返回值1
def collatz(number):
if number%2==0: #偶数
print(number//2)
return number//2
elif number%2==1: #奇数
print(number*3+1)
return number*3+1
def inputNun():
try:
print('Enter number')
xin=int(input())
while xin!=1 and xin>1:
xin=collatz(xin)
if xin==1:
pass
if xin<1:
print('Enter a int and higher than 0')
inputNun()
except ValueError:
print('Enter a int and higher than 0')
inputNun()
inputNun()
print('Done')但如果输入值是负数该怎么办呢,可考虑加入abs()函数,取绝对值
0会无限循环,1不需要参加运算,所以0和1都不需要进入collatz函数
def collatz(number):
if number%2==0: #偶数
print(number//2)
return number//2
elif number%2==1: #奇数
print(3*number+1)
return 3*number+1
def inputNun():
try:
print('Enter number')
xin=abs(int(input())) #输入值取整数型,负数取绝对值
while xin!=1 and xin!=0:
xin=collatz(xin)
if xin==1:
pass
except ValueError:
print('Please enter a int:')
inputNun()
inputNun()
print('Done')0、负数、浮点、字母都考虑了
但浮点还是走到了except,并重新进入循环
def collatz(number):
if number%2==0:
print(number//2)
return number//2
elif number%2==1:
print(3*number+1)
return 3*number+1
def inputNun():
try:
print('Enter number')
xin=abs(int(float(input())))
while xin not in(0,1):
xin=collatz(xin)
if xin==1:
pass
except ValueError:
print('Please enter a int:')
inputNun()
inputNun()
print('Done')好啦,浮点、0、负数、字母都考虑完成了,o啦~
| 留言与评论(共有 0 条评论) “” |