用逗号分隔,以同一行打印一些数字。
用逗号分隔,以同一行打印一些数字。
我想打印如下格式的数字:
"(输入数字)的因数是" 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=",")
问题出现的原因是在打印因子时,每个因子之间没有用逗号分隔开。
解决方法是在打印语句中使用字符串的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))
这样就可以正确打印出因子,并用逗号分隔开。
问题的出现原因是在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函数的说明。