---
title: Python 循环结构习题集
author: 萑澈
pubDatetime: 2026-05-30T00:00:00Z
featured: false
draft: false
printable: true
tags:
  - Python
  - 中考
  - 信息技术
description: Python 循环结构（for/while）编程填空题汇总（含答案），共 75 题，涵盖取余筛选、迭代求和、迭代求积、嵌套循环、While 循环、图案输出、增长衰减、最大公约数等题型。
---

## range 循环

### 取余筛选

#### 题目 1

输出 100 以内能被 3 整除的数：

```python
for i in ①:
    if ②:
        print(i)
```

<details data-answer>
<summary>答案</summary>

① `range(101)`　② `i%3==0`

</details>

#### 题目 2

找出 100 以内能同时被 4 和 7 整除的数：

```python
for i in range(1, 100):
    if i % 4 == 0 ① i % 7 == 0:
        ②("可以同时被4和7整除的数是", i)
```

<details data-answer>
<summary>答案</summary>

① `and`　② `print`

</details>

#### 题目 3

找出 100 以内所有能被 5 和 7 整除的数：

```python
for x ① range(1, 100):
    if x % 5 == 0 ② x % 7 == 0:
        print(x)
```

<details data-answer>
<summary>答案</summary>

① `in`　② `and`

</details>

#### 题目 4

输出 100 以内能被 7 整除但不能被 6 整除的整数：

```python
for i in range(101):
    ① i % 7 == 0 and i % 6 ② 0:
        print(i, end=" ")
```

<details data-answer>
<summary>答案</summary>

① `if`　② `!=`

</details>

#### 题目 5

输出 100 以内能被 9 整除但不能被 7 整除的整数：

```python
for i in ①(101):
    if i % 9 == 0 and i % 7 ② 0:
        print(i, end=" ")
```

<details data-answer>
<summary>答案</summary>

① `range`　② `!=`

</details>

#### 题目 6

以下是计算 20 以内能被 3 整除的数的乘积：

```python
s=1
for i ① range(1,21):
    if i②3= =0:
        s=s* i
print(s)
```

<details data-answer>
<summary>答案</summary>

① `in`　② `%`（运行结果为 524880，即 3×6×9×12×15×18）

</details>

#### 题目 7

输入 3 个正整数，判断是否能同时被 23 和 37 整除：

```python
for i in range(3):
       m=①(input("任意输入一个正整数"))
       if  m%23==0  ② m%37==0:
              print("该数可以被23和37整除",m)
       else:
              print("输入下一个数")
```

<details data-answer>
<summary>答案</summary>

① `int`　② `and`

</details>

### 迭代求和

#### 题目 8

计算 1+2+3+4+…+10，答案 55：

```python
s = ①
for i in range(1, ②):
    s = s + ③
print(s)
```

<details data-answer>
<summary>答案</summary>

① `0`　② `11`　③ `i`

</details>

#### 题目 9

计算并输出 1+5+9+13+17+21 的和，答案 66：

```python
s = 0
for i in range(1, 22, ①):
    s = s + ②
print(s)
```

<details data-answer>
<summary>答案</summary>

① `4`　② `i`

</details>

#### 题目 10

求 20 以内所有奇数的和，答案 100：

```python
s = 0
for i ① range(1, 20, ②):
    s = s + i
print(s)
```

<details data-answer>
<summary>答案</summary>

① `in`　② `2`

</details>

#### 题目 11

300 以内（包括 300）所有能被 3 整除的数的和，答案 15150：

```python
s = ①
for i in range(3, ②, 3):
    s = s + i
print(s)
```

<details data-answer>
<summary>答案</summary>

① `0`　② `301`

</details>

#### 题目 12

计算 3+7+11+15+…+47：

```python
s = 0
for i in range(3, 48, ①):
    s = s + ②
print(s)
```

<details data-answer>
<summary>答案</summary>

① `4`　② `i`

</details>

#### 题目 13

计算 1+4+7+…+19：

```python
s = 0
for i in ①(1, 20, ②):
    s = s + i
print(s)
```

<details data-answer>
<summary>答案</summary>

① `range`　② `3`

</details>

#### 题目 14

求 20 以内（包括 20）所有偶数的和：

```python
s = 0
for a ① range(0, 21, 2):
    s = s + a
②(s)
```

<details data-answer>
<summary>答案</summary>

① `in`　② `print`

</details>

#### 题目 15

求 20 以内（包括 20）所有偶数的和（另一种写法）：

```python
sum = 0
for a in ①:
    ②
print(sum)
```

<details data-answer>
<summary>答案</summary>

① `range(2,21,2)`　② `sum=sum+a`

</details>

#### 题目 16

计算 3+6+9+…+300 之和：

```python
s = 0
for i in range(1, ①):
    s = s + 3 * ②
print(s)
```

<details data-answer>
<summary>答案</summary>

① `101`　② `i`

</details>

#### 题目 17

计算 5+10+15+…+500：

```python
s = 0
for i in range(1, ①):
    s = s + 5 * ②
print(s)
```

<details data-answer>
<summary>答案</summary>

① `101`　② `i`

</details>

#### 题目 18

计算 32+62+92+…+482：

```python
s = 0
for i ① range(1, 17):
    s = s + (30 * i) ② 2
print(s)
```

<details data-answer>
<summary>答案</summary>

① `in`　② `+`

</details>

#### 题目 19

计算 1+1/2+1/3+1/4+…+1/10 的和：

```python
s = ①
for i in ②(1, 11):
    s = s + 1 / i
③(s)
```

<details data-answer>
<summary>答案</summary>

① `0`　② `range`　③ `print`

</details>

#### 题目 20

计算 1²+2²+3²+…+100² 的值，答案 338350：

```python
s = ①
for i in range(1, 101):
    s = s + i ② i
print(s)
```

<details data-answer>
<summary>答案</summary>

① `0`　② `*`

</details>

#### 题目 21

前 n 个自然数的和：

```python
n = int(input("请输入n的值："))
s = 0
for i in range(1, ①, 1):
    ②
print(s)
```

<details data-answer>
<summary>答案</summary>

① `n+1`　② `s=s+i`

</details>

#### 题目 22

求 4+10+16+22+28+34+40：

```python
s=①
for i in range(1,②):
    s=s+(4+i*6)
print(s)
```

<details data-answer>
<summary>答案</summary>

① `4`　② `7`（运行结果为 154）

</details>

#### 题目 23

求 10 以内数的平方和：

```python
s=0
for n ① range(1,11):
    s=s+n*n
print("s=", ② )
```

<details data-answer>
<summary>答案</summary>

① `in`　② `s`（运行结果为 385）

</details>

#### 题目 24

求 50 内所有能被 9 整除的数之和：

```python
s=①
for i in range(9,51,9):
    s=s+②
print("和为：",s)
```

<details data-answer>
<summary>答案</summary>

① `0`　② `i`

</details>

### 迭代求积

#### 题目 25

计算 9!：

```python
p = 1
for i in ①:
    ②
print("9!=", p)
```

<details data-answer>
<summary>答案</summary>

① `range(1,10)`　② `p=p*i`

</details>

#### 题目 26

计算 2×3×4×…×10 的积，答案 3628800：

```python
s = ①
for i in range(2, 11):
    s = s * ②
print(s)
```

<details data-answer>
<summary>答案</summary>

① `1`　② `i`

</details>

#### 题目 27

计算 1×3×5×…×11：

```python
s = 1
for i in range(1, 12, ①):
    s = s * ②
print(s)
```

<details data-answer>
<summary>答案</summary>

① `2`　② `i`

</details>

#### 题目 28

计算 1×3×5×7×…×19：

```python
s = ①
for i in range(3, 20, 2):
    s = s * ②
print(s)
```

<details data-answer>
<summary>答案</summary>

① `1`　② `i`

</details>

#### 题目 29

输出 20（含 20）以内所有能被 5 整除的数的积：

```python
s=①
for  i in  range(5,21,5):
    s=s ② i
print(s)
```

<details data-answer>
<summary>答案</summary>

① `1`　② `*`（运行结果为 15000）

</details>

### 综合

#### 题目 30

300 以内所有被 3 整除的数的和：

```python
s = 0
for i in range(①):
    if i ② 3 == 0:
        s = s + i
print(s)
```

<details data-answer>
<summary>答案</summary>

① `301`　② `%`

</details>

#### 题目 31

找出 50 以内所有能被 3 和 5 整除的数的个数：

```python
n = 0
for x ① range(50):
    if x % 3 == 0 ② x % 5 == 0:
        n = n + 1
print(n)
```

<details data-answer>
<summary>答案</summary>

① `in`　② `and`

</details>

#### 题目 32

计算 20 以内（包括 20）所有奇数的和以及所有偶数的和，答案 100, 110：

```python
s1 = 0
s2 = 0
for i in ①(1, ②):
    if i ③ 2 == 1:
        s1 = s1 + i    # 奇数和
    else:
        s2 = s2 + i    # 偶数和
print("奇数和为：", s1)
print("偶数和为：", s2)
```

<details data-answer>
<summary>答案</summary>

① `range`　② `21`　③ `%`

</details>

#### 题目 33

求 1-2+3-4+5-…+99-100：

```python
s = 0
for i in range(1, 101):
    if i % 2 == 0:
        s = ①
    else:
        s = ②
print("s=", s)
```

<details data-answer>
<summary>答案</summary>

① `s-i`　② `s+i`

</details>

#### 题目 34

计算 1-2+3-4+5-6+7-8+9-10+11 的结果：

```python
s=0
for i in range(12):
    if i%2①1:
        s=s+i
    ②:
        s=s-i
print(s)
```

<details data-answer>
<summary>答案</summary>

① `==`　② `else`（运行结果为 6）

</details>

#### 题目 35

根据输入的学生总数和女生人数，输出男女生比值：

```python
s=int(input("请输入学生总数："))
g=①(input("请输入女生人数："))
m=②  #计算男生人数
a=m/g
print("男女生比值为：",a )
```

<details data-answer>
<summary>答案</summary>

① `int`　② `s-g`

</details>

#### 题目 36

某位老师编写程序，连续输入 3 个文件名，判断是否为 WORD 文档：

```python
for  i  in  ①(3):
    m=input("请输入一个文件名")
    if  m=="doc":
        print("该文件为WORD文档")
    elif  m=="docx":
        print("该文件为WORD文档")
    ②:
        print("继续输入下一个文件")
```

<details data-answer>
<summary>答案</summary>

① `range`　② `else`

</details>

#### 题目 37

在学校举办的“庆五一”绘画大赛中有三位评委为作品打分，当平均得分在 85 分以上就获得优秀作品奖：

```python
s=0
for i in range(3):
    t=float(input("评委打分为："))
    s+=①
s=s/3
②  s>85:
    print("作品被选为优秀参赛作品")
```

<details data-answer>
<summary>答案</summary>

① `t`　② `if`

</details>

#### 题目 38

为了了解中学生体重指数情况，随机选择 20 个学生测量身高和体重，计算 BMI 指数：

```python
for  i in  ①(20):
         s=float(input("输入体重"))       #体重单位为公斤
         t=float(input("输入身高"))       #身高单位为米
         p=s/(t**2)
         print("该学生的体重指数是",②)
```

<details data-answer>
<summary>答案</summary>

① `range`　② `p`

</details>

### 嵌套循环

#### 题目 39

已知五位数密码 35\*\*9，能被 9 整除，找出符合要求的密码：

```python
for i ① range(10):
    for j in range(10):
        num = 35009 + 100 * i + 10 * j
        if num % 9 ② 0:
            print("可能的密码是:", num)
```

<details data-answer>
<summary>答案</summary>

① `in`　② `==`

</details>

#### 题目 40

已知五位数密码 23\*\*9，能被 9 整除，找出符合要求的密码：

```python
for i in range(0, ①):
    for j in range(0, ②):
        s = 2 * 10000 + 3 * 1000 + i * 100 + j * 10 + 9
        if ③ % 9 == 0:
            print(s)
```

<details data-answer>
<summary>答案</summary>

① `10`　② `10`　③ `s`

</details>

#### 题目 41

有 5 元、2 元、1 元钱共计 50 张（每种面额至少一张），总金额为 100 元，列出所有组合方案：

```python
for x in ①(1, 21):
    for y in range(1, 51):
        for z in range(1, 51):
            ② 5 * x + 2 * y + z == 100 and x + y + z == 50:
                ③(x, y, z)
```

<details data-answer>
<summary>答案</summary>

① `range`　② `if`　③ `print`

</details>

#### 题目 42

用 100 钱买 100 只鸡（公鸡 5 钱/只、母鸡 3 钱/只、小鸡 1 钱 3 只），列出所有方案：

```python
for i in range(1, 20):
    for j in range(1, 34):
        for w in range(1, 100):
            if ① and ②:
                print("公鸡、母鸡、小鸡的数量分别是:", i, j, w)
```

<details data-answer>
<summary>答案</summary>

① `i+j+w==100`　② `5*i+3*j+w/3==100`

</details>

#### 题目 43

用 100 钱买 100 只鸡（另一种解法）：

```python
for i in range(1, 21):
    for j in range(1, 34):
        if i * 5 + j * 3 + ① == 100 and (100 - i - j) ② 3 == 0:
            print("公鸡、母鸡、小鸡的数量分别是:", i, j, ③)
```

<details data-answer>
<summary>答案</summary>

① `(100-i-j)/3`　② `%`　③ `100-i-j`

</details>

#### 题目 44

用 `*` 打印一个 5 行的直角三角形：

```python
for i in range(1, 6):
    ① j in range(1, i + 1):
        print("②", end="")
    print()
```

<details data-answer>
<summary>答案</summary>

① `for`　② `*`

</details>

#### 题目 45

小明带了 30 元买文具（铅笔 0.5 元/根，笔记本 3.5 元/本），求有几种买法：

```python
total = 30
for m in range(int(total / 0.5) + 1):
    for n in range(int(total / 3.5) + 1):
        ① 0.5 * m + 3.5 * n == total:
            print("能买铅笔:", m, "笔记本:", ②)
```

<details data-answer>
<summary>答案</summary>

① `if`　② `n`

</details>

### 图案输出

#### 题目 46

用 `*` 打印一个 6 行的直角三角形：

```python
for i in ①(1, ②):
    print(③ * "*")
'''
输出如下图案。
*
**
***
****
*****
******
'''
```

<details data-answer>
<summary>答案</summary>

① `range`　② `7`　③ `i`

</details>

#### 题目 47

打印一个 4 行的矩形图案：

```python
for i in range(①):
    print("②" * 4)
'''
输出如下图案。
****
****
****
****
'''
```

<details data-answer>
<summary>答案</summary>

① `4`　② `*`

</details>

#### 题目 48

打印一个 5 行的平行四边形图案：

```python
for i in ①(5):
    print(" " * i + "②" * 5)
'''
输出如下图案。
*****
 ****
  ***
   **
    *
'''
```

<details data-answer>
<summary>答案</summary>

① `range`　② `*`

</details>

#### 题目 49

打印一个 5 行的菱形图案（上半部分）：

```python
for i in range(1, 6):
    print(" " * (5 - i) + "①" * (② * i - 1))
'''
输出如下图案。
    *
   ***
  *****
 *******
*********
'''
```

<details data-answer>
<summary>答案</summary>

① `*`　② `2`

</details>

#### 题目 50

打印一个 5 行的倒三角形图案：

```python
for i in range(5, 0, -1):
    print("①" * ②)
'''
输出如下图案。
*****
****
***
**
*
'''
```

<details data-answer>
<summary>答案</summary>

① `*`　② `i`

</details>

## While 循环

### 累计求和

#### 题目 51

计算 1+2+…+100，答案 5050：

```python
s = 0
a = 0
while a ① 100:
    ② = s + a
    a = a + ③
print(s)
```

<details data-answer>
<summary>答案</summary>

① `<=`　② `s`　③ `1`

</details>

#### 题目 52

计算 100 以内整数的和：

```python
sum = 0
i = 1
while i <= 100:
    sum = ①
    i = ②
print(sum)
```

<details data-answer>
<summary>答案</summary>

① `sum+i`　② `i+1`

</details>

#### 题目 53

计算 50 以内所有偶数的和：

```python
s = 0
i = 0
① i < 50:
    s = s + i
    i = i + 2
②(s)
```

<details data-answer>
<summary>答案</summary>

① `while`　② `print`

</details>

#### 题目 54

计算 s = 1+6+11+…+101：

```python
s = 0
k = 1
while k <= 101:
    s = ①
    k = ②
print(s)
```

<details data-answer>
<summary>答案</summary>

① `s+k`　② `k+5`

</details>

#### 题目 55

计算 30 以内（包括 30）所有偶数的和，答案 240：

```python
s = 0
a = 0
while a ① 30:
    s = s + a
    a = a + 2
print("求和为：", ②)
```

<details data-answer>
<summary>答案</summary>

① `<=`　② `s`

</details>

#### 题目 56

输出 20 以内所有奇数的和：

```python
n = 1
s = 0
① n <= 20:
    if n % 2 == 1:
        s = s + n
    n = n + ②
print(s)
```

<details data-answer>
<summary>答案</summary>

① `while`　② `1`

</details>

#### 题目 57

妈妈把小明的压岁钱 5000 元存入银行，利率 3%，计算需要多少年达到 8000 元：

```python
s = 5000
years = 0
while s ① 8000:
    ② = s + s * 0.03
    years = years + 1
print(years, "年后达到8000元")
```

<details data-answer>
<summary>答案</summary>

① `<`　② `s`

</details>

#### 题目 58

共有 150 吨燃料，一天用掉 2.6 吨，问最多可用几天：

```python
m = 150
n = 2.6
t = 0
while ① > 2.6:
    m = m - n
    t += ②
print("最多可以用", t, "天")
```

<details data-answer>
<summary>答案</summary>

① `m`　② `1`

</details>

#### 题目 59

天然气库存 150 亿 m³，每天消耗 2.6 亿 m³，最多可以用多久：

```python
m = 150
s = 2.6
t = 0
while ① >= 0:
    m = m - s
    t += ②
print("可以使用", t, "天")
```

<details data-answer>
<summary>答案</summary>

① `m-s`　② `1`

</details>

#### 题目 60

猜体重游戏（只有 3 次机会），体重为 65 公斤：

```python
weight = 65
time = 0
while time < 3:
    cai = int(①("我的体重是:"))
    if cai ② weight:
        print("恭喜你猜对了")
        break
    else:
        print("请再猜一次")
    time = time + 1
```

<details data-answer>
<summary>答案</summary>

① `input`　② `==`

</details>

#### 题目 61

暑假读书：第 1 天读 1 页，第 2 天读 2 页……第 60 天读 60 页，共读多少页：

```python
total=0
i=1
①  i<61:
    total=total+②
    i+=1
print("整个暑假可以读书：",total)
```

<details data-answer>
<summary>答案</summary>

① `while`　② `i`（运行结果为 1830）

</details>

#### 题目 62

记英语单词：今天记 1 个，每天比前一天多记 1 个，一年后词汇量增加多少：

```python
s=0
i=1
①  i<=365:
        s=s+②
        i=i+1
print("词汇量增加",s)
```

<details data-answer>
<summary>答案</summary>

① `while`　② `i`（运行结果为 66795）

</details>

### 基础

#### 题目 63

用 while 循环输出 1 到 10：

```python
i = 1
while i ① 10:
    print(i)
    i = i + ②
```

<details data-answer>
<summary>答案</summary>

① `<=`　② `1`

</details>

#### 题目 64

用 while 循环输出 10 到 1（倒序）：

```python
i = ①
while i >= 1:
    print(i)
    i = i - ②
```

<details data-answer>
<summary>答案</summary>

① `10`　② `1`

</details>

#### 题目 65

用 while 循环输出所有两位数中个位与十位之和为 10 的数：

```python
i = 10
while i <= ①:
    sw = i // 10
    gw = i % 10
    if sw + gw == ②:
        print(i)
    i = i + 1
```

<details data-answer>
<summary>答案</summary>

① `99`　② `10`

</details>

#### 题目 66

从键盘输入若干个正整数，输入 -1 时结束，统计输入了多少个正整数：

```python
cnt = 0
n = int(input("请输入一个正整数（输入-1结束）："))
while n ① -1:
    cnt = cnt + 1
    n = int(input("请输入一个正整数（输入-1结束）："))
print("输入了", ②, "个正整数")
```

<details data-answer>
<summary>答案</summary>

① `!=`　② `cnt`

</details>

#### 题目 67

输入密码，最多输入 3 次，密码为“1234”时结束：

```python
cnt = 0
mima = input("请输入密码：")
while mima != "1234" ① cnt < 2:
    cnt = cnt + 1
    mima = input("密码错误，请重新输入：")
if mima == "1234":
    print("密码正确")
②:
    print("3次输入错误，账户锁定")
```

<details data-answer>
<summary>答案</summary>

① `and`　② `else`

</details>

#### 题目 68

输入一个正整数，判断它是几位数：

```python
n = int(input("请输入一个正整数："))
cnt = 0
while n > 0:
    n = n ① 10
    cnt = cnt + 1
print("这是一个", ②, "位数")
```

<details data-answer>
<summary>答案</summary>

① `//`　② `cnt`

</details>

#### 题目 69

计算 n 的阶乘（n 由键盘输入）：

```python
n = int(input("请输入n："))
i = 1
s = ①
while i <= n:
    s = s * i
    i = i + 1
print(n, "的阶乘为", ②)
```

<details data-answer>
<summary>答案</summary>

① `1`　② `s`

</details>

#### 题目 70

从键盘输入一个正整数，判断是否为回文数：

```python
n = int(input("请输入一个正整数："))
t = n
s = 0
while t > 0:
    s = s * 10 + t % 10
    t = t ① 10
if s == ②:
    print(n, "是回文数")
else:
    print(n, "不是回文数")
```

<details data-answer>
<summary>答案</summary>

① `//`　② `n`

</details>

### 增长/衰减问题

#### 题目 71

14 个小学生搬 38 捆书，男生每人搬 3 捆，女生每人搬 2 捆，求男生和女生各几人：

```python
for i ① range(1, 14):
    for ② in range(1, 14):
        if i + j == 14 ③ i * 3 + j * 2 == 38:
            print(i, j)
```

<details data-answer>
<summary>答案</summary>

① `in`　② `j`　③ `and`

</details>

#### 题目 72

输出 100 以内所有满足 a＜b 的勾股数：

```python
for a in ①(1, 101):
    for b in range(1, 101):
        for c in range(1, 101):
            if a * a + b * b == c * c and a ② b:
                ③(a, b, c)
```

<details data-answer>
<summary>答案</summary>

① `range`　② `<`　③ `print`

</details>

#### 题目 73

一根长 1 米的竹竿，每次折去原来的二分之一，折几次后小于原长度的 20%：

```python
h = 1
t = 0
while h ① 0.2:
    h = h ② 2
    t = ③ + 1
print(t)
```

<details data-answer>
<summary>答案</summary>

① `>=`　② `/`　③ `t`

</details>

#### 题目 74

细菌半小时增加一倍，多长时间超过世界人口（76 亿）：

```python
h = 1       # 初始细菌数量
t = 0       # 初始时间（小时）
while h ① 7600000000:
    h = h ② 2
    t = t + 0.5
print(③)
```

<details data-answer>
<summary>答案</summary>

① `<=`　② `*`　③ `t`

</details>

#### 题目 75

某发电厂天然气库存 12000 亿 m³，每天消耗 380 亿 m³，求可用多少天：

```python
m = 12000
s = 380
t = 0
① m >= 380:
    m = m - s
    t = t + 1
print("可以使用", ②, "天")
```

<details data-answer>
<summary>答案</summary>

① `while`　② `t`

</details>

#### 题目 76

有一学生在 6 岁时把 2000 块压岁钱买基金，年收益率 8%，到 18 岁能拿到多少钱：

```python
s = 2000
① i in ② (6, 19):
    s = ③ * (1 + 0.08)
print(s)
```

<details data-answer>
<summary>答案</summary>

① `for`　② `range`　③ `s`

</details>

#### 题目 77

某投资 200 万，年增长 r1=37.8%，年消耗 r2=49%，求 20 年后的金额：

```python
money = 2000000
r1 = 0.378
r2 = 0.49
for i in ① (20):
    money = money * (1 + r1 - r2)
print("二十年后有钱", ②)
```

<details data-answer>
<summary>答案</summary>

① `range`　② `money`

</details>

### 最大公约数

#### 题目 78

以下是用辗转相除法求最大公约数的程序：

```python
a = int(input("请输入第一个正整数："))
b = int(input("请输入第二个正整数："))
while b != 0:
    ① = a % b
    a = b
    b = t
print("最大公约数为：", ②)
```

<details data-answer>
<summary>答案</summary>

① `t`　② `a`

</details>
