用逗号分隔,以同一行打印一些数字。

20 浏览
0 Comments

用逗号分隔,以同一行打印一些数字。

我想打印如下格式的数字:

"(输入数字)的因数是" 1,2,5,10,50

但是实际打印出来多了一个逗号,像这样:

1,2,3,4,5,

input_number = int(input("请输入一个数字:"))
factors = []
for divisor in range(1, input_number+1):
        mod = input_number % divisor
        if mod == 0:
            factors.append(divisor)
print("数字 %i 的因数为:" % input_number)
for element in factors:
        print(element, end=",")

0
0 Comments

问题出现的原因是在打印因子时,每个因子之间没有用逗号分隔开。

解决方法是在打印语句中使用字符串的join方法,将因子列表转换为字符串,并用逗号分隔开。

以下是修改后的代码:

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))

这样就可以正确打印出因子,并用逗号分隔开。

0
0 Comments

问题的出现原因是在Python中,print函数的end参数指定了在打印第一个位置参数字符串后应该打印什么。因此,在打印每个元素后,你告诉Python打印一个逗号(,),这正是它所做的。

解决方法之一是使用数组枚举,显式地不设置最后一个元素的end参数,如下所示:

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

另一种方法是将数组转换为字符串,然后使用.join()方法,该方法使用一个"粘合"字符串连接可迭代对象的元素。

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

需要注意的是,将元素转换为str类型不会影响非字符串类型在标准输出中的打印方式,因为在打印时它们会被隐式转换为字符串。对于第二种方法,可以参考Python文档中的map函数的说明。

0
0 Comments

问题的出现原因是作者不知道print函数中存在sep参数,因此在打印可迭代对象时,使用了end参数来给每个元素加上分隔符,但是这样会导致最后一个元素也被加上了分隔符。

解决方法是使用print函数的sep参数,将可迭代对象传递给print函数,并解包它,然后设置sep参数为指定的分隔符。这样就可以在打印可迭代对象时,元素之间用指定的分隔符进行分隔。

具体的解决方法如下:

print(*factors, sep=",")

作者在这里提到,自己直到现在才发现了sep关键字参数的存在,并附上了Python官方文档的链接供读者参考。

0