Python质数打印格式问题:如何将2到指定值的质数单行输出
质数输出格式修正问题
我写了一个Python程序,用来输出用户输入数值以内的所有质数,功能正常但打印格式不符合预期。
原代码
def math(user): for num in range (user + 1): if num > 1: for i in range(2,num): if (num % i) == 0: break else: print('The Primes from 2 to ', user, 'are: ',num) def main(): user = ('Enter the maximum value to check primes up to: ') math(user)
当前输入10时的输出
Enter the maximum value to check primes up to: 10 The Primes from 2 to 10 are: 2 The Primes from 2 to 10 are: 3 The Primes from 2 to 10 are: 5 The Primes from 2 to 10 are: 7
期望输出
Enter the maximum value to check primes up to: 10 The Primes from 2 to 10 are: 2, 3, 5, 7
我猜测需要用列表,但不知道该加在哪里。
解决方案
你猜的没错,用列表收集所有质数后再统一打印就能解决格式问题,同时还要修正main函数里获取用户输入的错误(原代码只是赋值了字符串,没实际获取输入)。修改后的代码如下:
def math(user): primes = [] # 初始化空列表存储质数 for num in range(user + 1): if num > 1: for i in range(2, num): if (num % i) == 0: break else: primes.append(num) # 将质数添加到列表 # 统一打印结果,用逗号连接列表元素 print('The Primes from 2 to ', user, 'are: ', ', '.join(map(str, primes))) def main(): # 用input()获取用户输入,并转为整数 user = int(input('Enter the maximum value to check primes up to: ')) math(user) main() # 调用main函数执行程序
修改说明:
- 在
math函数开头创建空列表primes,遍历过程中把找到的质数用append()方法加入列表; - 移除循环内的
print语句,遍历结束后用', '.join(map(str, primes))把列表里的质数转为字符串并用逗号分隔,再一次性打印; - 修正
main函数:用input()实际获取用户输入,并用int()转为整数类型,否则原代码会把字符串传给math函数导致报错; - 最后添加
main()调用,启动程序。
内容的提问来源于stack exchange,提问作者Ichiro Fang
相关产品推荐
相关产品推荐

