通过用逗号分隔它们来打印同一行中的一些数字

问题描述 投票:1回答:3

我想打印像“(input_number)因子”1,2,5,10,50这样的数字,但是用这样的额外逗号打印:1,2,3,4,5,

input_number = int(input("Enter A Number Please: "))
factors = []
for divisor in range(1, input_number+1):
        mod = input_number % divisor
        if mod == 0:
            factors.append(divisor)
print("Factors of %i are - " % input_number)
for element in factors:
        print(element, end=",")
python arraylist
3个回答
2
投票

你可以试试这个:

input_number = int(input("Enter A Number Please: "))
factors = []
for divisor in range(1, input_number+1):
        mod = input_number % divisor
        if mod == 0:
            factors.append(divisor)
print("Factors of %i are - " % input_number+ ",".join(str(row) for row in factors))

2
投票

如果你想用给定的分隔符打印一个iterable的元素,你应该将该iterable发送到print并解压缩它,然后使用sep参数,而不是用end参数单独打印每个元素(正如你所看到的那样)每个元素“end”的给定字符串,包括最后一个元素。

print(*factors, sep=",")

1
投票

在Python中,endprint关键字参数将指定在作为第一个位置参数传入的字符串之后应该打印的内容。所以在你打印的每个元素之后,你告诉Python打印一个逗号(,字符),这正是它正在做的事情。

您可以实现此目的的一种方法是明确不使用数组end为数组中的最后一项设置enumeration关键字参数,如下所示:

print("Factors: ", end="")
for index, element in enumerate(factors):
    if index == len(factors) - 1:
        print(element)
    else:
        print(element, end=",")

另一种可以实现此目的的方法是将数组转换为字符串,然后使用.join()方法,该方法将iterable的元素与“glue”字符串连接起来。

print("Factors: ", end="")
factors = map(str, factors)
print(",".join(factors))

注意到对str的转换不应该影响非字符串打印到STDOUT的方式可能会有所帮助,因为它们会在打印时隐式地转换为字符串。对于第二种方法,引用map的Python文档可能会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.