我要打印数字 “(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=",")
答案 0 :(得分: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))
答案 1 :(得分:2)
如果要打印具有给定分隔符的iterable的元素,则应将该iterable发送给print
并解压缩,并使用sep
参数,而不是分别使用end
参数(如您所见,该参数将给定的字符串放在每个元素(包括最后一个元素)的“末尾”。
print(*factors, sep=",")
答案 2 :(得分:1)
在Python中,end
的{{1}}关键字参数将指定在您作为第一个位置参数传入的字符串之后应打印的内容。因此,在打印完每个元素之后,您要告诉Python打印一个逗号(print
字符),这就是它的作用。
您可以通过在数组enumeration中不为数组的最后一项明确设置,
关键字参数来实现此目的,就像这样:
end
您可以完成此操作的另一种方法是将数组转换为字符串,然后使用.join()
方法,该方法将可迭代元素与“胶水”字符串连接起来。
print("Factors: ", end="")
for index, element in enumerate(factors):
if index == len(factors) - 1:
print(element)
else:
print(element, end=",")
请注意,强制转换为print("Factors: ", end="")
factors = map(str, factors)
print(",".join(factors))
不会影响将非字符串打印到STDOUT的方式,因为在打印时会将它们隐式转换为字符串。对于第二种方法,参考map
的Python文档可能会有所帮助。