You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何使用for循环实现每行打印指定数量的范围内数字?

问题描述

我是Python新手,之前看过一些每行打印数字的示例但没搞懂,试了\n也没得到想要的效果。我写了一段代码,计算1到1000之间所有偶数的总和,同时打印这些偶数,但现在所有偶数都显示在同一行里。

现有代码

sum=0
sq=""

for i in range (0+2,1000+1,2):
   sum+=i
   if i<1000:
      sq=sq+str(i)+","
    
   else:
      sq=sq+str(i)
print(sq, end="\n")
print("Sum of all even numbers within 1 and 1000 =",sum)

当前输出

2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370,372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,402,404,406,408,410,412,414,416,418,420,422,424,426,428,430,432,434,436,438,440,442,444,446,448,450,452,454,456,458,460,462,464,466,468,470,472,474,476,478,480,482,484,486,488,490,492,494,496,498,500,502,504,506,508,510,512,514,516,518,520,522,524,526,528,530,532,534,536,538,540,542,544,546,548,550,552,554,556,558,560,562,564,566,568,570,572,574,576,578,580,582,584,586,588,590,592,594,596,598,600,602,604,606,608,610,612,614,616,618,620,622,624,626,628,630,632,634,636,638,640,642,644,646,648,650,652,654,656,658,660,662,664,666,668,670,672,674,676,678,680,682,684,686,688,690,692,694,696,698,700,702,704,706,708,710,712,714,716,718,720,722,724,726,728,730,732,734,736,738,740,742,744,746,748,750,752,754,756,758,760,762,764,766,768,770,772,774,776,778,780,782,784,786,788,790,792,794,796,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850,852,854,856,858,860,862,864,866,868,870,872,874,876,878,880,882,884,886,888,890,892,894,896,898,900,902,904,906,908,910,912,914,916,918,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962,964,966,968,970,972,974,976,978,980,982,984,986,988,990,992,994,996,998,1000
Sum of all even numbers within 1 and 1000 = 250500

期望输出

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40
42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80
…
922, 924, 926, 928, 930, 932, 934, 936, 938, 940, 942, 944, 946, 948, 950, 952, 954,956, 958, 960
962, 964, 966, 968, 970, 972, 974, 976, 978, 980, 982, 984, 986, 988, 990, 992, 994, 996, 998, 1000
Sum of all even numbers within 1 and 1000 = 250500

解决方案

可以通过计数器跟踪每行的数字数量,每收集20个偶数就打印一行,同时用列表拼接字符串的方式优化性能:

total_sum = 0
line_count = 0
current_line = []

for i in range(2, 1001, 2):
    total_sum += i
    current_line.append(str(i))
    line_count += 1
    
    # 每20个数字打印一行
    if line_count == 20:
        print(", ".join(current_line))
        current_line = []
        line_count = 0

# 打印剩余的数字(避免最后一行遗漏)
if current_line:
    print(", ".join(current_line))

print(f"Sum of all even numbers within 1 and 1000 = {total_sum}")

关键修改说明

  1. 变量命名优化:将sum改为total_sum,避免和Python内置函数sum重名
  2. 行内数字收集:用current_line列表存储当前行的数字字符串,比直接拼接字符串更高效
  3. 换行控制:用line_count计数器跟踪当前行的数字数量,达到20个时打印整行并重置列表和计数器
  4. 格式处理:用", ".join()自动生成带空格的逗号分隔格式,无需手动判断最后一个数字

内容的提问来源于stack exchange,提问作者SASORRRRI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 09:35:18