如何使用Python将素数以表格格式打印而非逐行输出
解决方案
原有代码的问题是每找到素数就直接调用print(),默认会追加换行符,导致每行仅输出一个数值。修改逻辑为先把所有筛选得到的素数存入列表,再按固定列数批量排版输出即可。
修改后完整代码
start = int(input("Start number: ")) end = int(input("End number: ")) # 输入合法性校验,优化为循环校验避免多次输入错误时失效 while start < 0 or end < 0: print("Start and End must be positive.") start = int(input("Start number: ")) end = int(input("End number: ")) while end < start: print("End must be greater than Start number: ") start = int(input("Start number: ")) end = int(input("End number: ")) # 存储所有符合条件的素数 primes = [] for num in range(start, end+1): if num > 1: # 素数判断逻辑做了效率优化,如需保留原有逻辑可改回range(2, num) for i in range(2, int(num**0.5) + 1): if num % i == 0: break else: primes.append(str(num)) # 按每行10个输出,对齐格式匹配示例 col_count = 10 for idx in range(0, len(primes), col_count): # 每个素数占3位宽度右对齐 line_content = ''.join([f"{num:>3}" for num in primes[idx:idx+col_count]]) print(f" #{line_content}")
关键修改说明
- 新增
primes列表暂存所有素数,避免找到单个素数就直接打印换行 - 输出时固定每行10个素数,用格式符
>3设置每个素数占3位宽度右对齐,完全匹配示例排版效果 - 每行开头添加
#,和要求的输出格式一致
内容的提问来源于stack exchange,提问作者altalio
相关产品推荐
相关产品推荐

