任务描述
一个正整数,若为偶数,则把它除以2,若为大于 1
的奇数,则把它乘以3加1。经过如此有限次运算后,可以得到整数1。求经过多少次运算可得到整数1。
输入格式
- 输入一个数字
输出格式
第一行依次输出从n开始每步的运算结果,每步的输出后跟一个空格
第二行输出总的运算次数
若输入数据不是正整数,输出’ERROR‘
示例
输入: 33
输出: 33 100 50 25 76 38 19 58 29 88 44 22 11 34 17 52 26 13 40 20 10 5
16 8 4 2 1 26
平均代码量 17 行
代码
def f(n):
if n%2 == 0 :
n = n // 2
else:
n = n*3 +1
return n
num=0
l=[]
a = eval(input())
if a<0 or type(a)!=int:
print("ERROR")
else:
while a!=1:
#偶数
l.append(a)
num+=1
a=f(a)
l.append(a)
for i in l:
print(i,end=" ")
print()
print(num)
参考:
Python type() 函数https://www.runoob.com/python/python-func-type.html