所以我有这个代码来计算Hailstone序列并继续这样做5次迭代。因此,如果我输入数字128,我应该得到64,32,16,8,4。我最终会这样做,但不是没有显示列表在列表末尾一次添加一个数字。我想获得整个列表,没有别的。 这是我的代码:
lines=list()
n=int(input("Enter the a number greater than 128: "))
if n<128:
print("ENTER A NUMBER GREATER THAN 128!!!!")
else:
i=5
m=5
for i in range(m):
if n%2==0:
n=n/2
line=n
lines.append(line)
else:
n=3*n+1
line=n
lines.append(line)
print (lines)
这是我的输出:
[64.0]
[64.0, 32.0]
[64.0, 32.0, 16.0]
[64.0, 32.0, 16.0, 8.0]
[64.0, 32.0, 16.0, 8.0, 4.0]
我唯一想要的是最后一个列表,我不想要第一个3.我该怎么做?
答案 0 :(得分:2)
将print
放在循环之外。
试试这个:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
lines=list()
n=int(input("Enter the a number greater than 128: "))
if n<128:
print("ENTER A NUMBER GREATER THAN 128!!!!")
else:
i=5
m=5
for i in range(m):
if n%2==0:
n=n/2
line=n
lines.append(line)
else:
n=3*n+1
line=n
lines.append(line)
print (lines)
答案 1 :(得分:1)
您正在'for'循环中打印列表(行)。 所以很明显,每次循环迭代你的print语句都会执行。 如果您必须打印最终列表,则必须将打印件保留在for循环之外。
答案 2 :(得分:0)
因为print
循环内的for
函数将其放在循环旁边:
lines=list()
n=int(input("Enter the a number greater than 128: "))
if n<128:
print("ENTER A NUMBER GREATER THAN 128!!!!")
else:
i=5
m=5
for i in range(m):
if n%2==0:
n=n/2
line=n
lines.append(line)
else:
n=3*n+1
line=n
lines.append(line)
print (lines)
>>>Enter the a number greater than 128: 128
[64, 32, 16, 8, 4]
或者如果要打印出列表,可以使用map
将转换索引转换为str
和join
函数以将str号与,
连接起来:
print ','.join(map(str,lines))
>>>Enter the a number greater than 128: 128
64,32,16,8,4