我有以下代码:
Buffer.BlockCopy(buffer, offst, allData, 0, fileSize);
我想打印for n in range(1, 101):
if 100 % n == 0:
print(n, end='')
的所有除数。但是,我希望它们在一行中(我通过在代码中放置100
来完成)。最重要的是,我想要数字之间的逗号。我希望得到这样的输出:
end=''
1, 2, 4, 5, 10, 20, 25, 50, 100
由于它所处的循环不起作用。sep=','
会起作用,但这会导致100之后的逗号,这不是我想要的。
答案 0 :(得分:2)
您可以创建一个列表,然后使用str.join
。例如:
lst = []
for n in range(1, 101):
if 100 % n == 0:
lst.append(str(n))
print(','.join(lst))
示例/演示 -
>>> lst = []
>>> for n in range(1, 101):
... if 100 % n == 0:
... lst.append(str(n))
...
>>>
>>> print(','.join(lst))
1,2,4,5,10,20,25,50,100
这也可以通过使用列表解析单行完成:
print(','.join([str(n) for n in range(1, 101) if 100 % n == 0]))
演示:
>>> print(','.join([str(n) for n in range(1, 101) if 100 % n == 0]))
1,2,4,5,10,20,25,50,100
答案 1 :(得分:1)
您需要将值存储到列表中,然后使用.join()
。此外,请注意,您必须将列表中的元素转换为字符串。
my_list = []
for n in range(1, 101):
if 100 % n == 0:
my_list.append(n)
print(", ".join(str(x) for x in my_list))
答案 2 :(得分:0)
我没有足够的声誉向Anand S Kumar添加评论,但我想指出你不需要在联接内部列表,因为它可以采用生成器表达式。所以你也可以这样做:
>>> print(", ".join(str(n) for n in range(1, 101) if 100 % n == 0))
1, 2, 4, 5, 10, 20, 25, 50, 100
编辑:我发表评论说这更快。事实证明这是不正确的。
答案 3 :(得分:0)
试试这个
ls = []
for n in range(1, 101):
if 100 % n == 0:
ls.append(str(n))
print (','.join(ls))
答案 4 :(得分:0)
您可以使用字符串格式
for n in range(1, 101):
if 100 % n == 0:
print "%s," %n,
输出
1, 2, 4, 5, 10, 20, 25, 50, 100,