Python 按照collatz顺序合计步骤?
我不确定如何使用以下代码获取collatz序列中的步骤总数:Python 按照collatz顺序合计步骤?,python,python-3.x,Python,Python 3.x,我不确定如何使用以下代码获取collatz序列中的步骤总数: number = int(input('Enter a number, please:')) while number > 1: if number % 2 == 0: number = number / 2 print(number) else: number = number * 3 + 1 print(number
number = int(input('Enter a number, please:'))
while number > 1:
if number % 2 == 0:
number = number / 2
print(number)
else:
number = number * 3 + 1
print(number)
# print('Steps required:',NEED TO FILL , end='')
似乎您只想简单地计算
while
循环中采取的步骤。添加count
变量并打印结果如下:
number = int(input('Enter a number, please:'))
#initiate step count
steps = 0
while number > 1:
if number % 2 == 0:
number = number / 2
print(number)
else:
number = number * 3 + 1
print(number)
# add a step for each loop
steps += 1
print('Steps required: {}'.format(steps))
在shell中运行此操作将产生:
$ python3 -i collatz.py
Enter a number, please:14
7.0
22.0
11.0
34.0
17.0
52.0
26.0
13.0
40.0
20.0
10.0
5.0
16.0
8.0
4.0
2.0
1.0
Steps required: 17
试试这个:
def collatz(number):
if(number%2==0):
n=number//2
print(n,"\t",end="")
return n
else:
ev=3*number+1
print(ev,"\t",end="")
return ev
num1=input("Enter a number: \n")
step=0
try:
num=int(num1)
if(num==1):
print("Enter an integer greater than 1")
elif(num>1):
a=collatz(num)
while(True):
if(a==1):
step=step+1
break
else:
a=collatz(a)
step+=1
print("\nNumber of steps needed:",step)
else:
print("Please, Enter a positive integer to begin the Collatz sequence")
except:
print("please, Enter an integer")
def collatz(编号):
如果(数字%2==0):
n=数字//2
打印(n,“\t”,end=”“)
返回n
其他:
ev=3*编号+1
打印(ev,“\t”,end=”“)
返回电动汽车
num1=输入(“输入一个数字:\n”)
步长=0
尝试:
num=int(num1)
如果(num==1):
打印(“输入大于1的整数”)
elif(数值>1):
a=项圈(个)
虽然(正确):
如果(a==1):
步骤=步骤+1
打破
其他:
a=collatz(a)
步骤+=1
打印(“\n需要的步骤数:”,步骤)
其他:
打印(“请输入一个正整数以开始Collatz序列”)
除:
打印(“请输入一个整数”)
您提到的
while
循环在哪里?提示:您不想执行number=format(number/2,.0f')
。顺便说一句,这种模式被称为Collatz序列。你不能在一行中获得所有信息,因为用户必须点击Enter
来输入他们的号码。所以在你的例子中,在10和5之间会有一条换行符,但是所有其他的东西都可以在一条线上。您只需执行print(number,end='')
谢谢您指出序列的名称,我没有注意到,但我的示例没有正确复制@pm2如果您是正确的,在用户点击enter之后,每个值(5,16,8,4,2,1)都将分别出现在新行上。因此我对代码进行了一些修改,但我仍然不确定如何使用以下代码获取总步骤数:number=int(输入('enter a number,please:'))当数字>1时:如果数字%2==0:number=number/2打印(数字)否则:number=number*3+1打印(数字)#打印('Steps required:',NEED TO FILL,end='')你们能告诉我要添加哪些代码行吗代码>