跳转到内容

Python 循环结构习题集

Python 循环结构(for/while)编程填空题汇总(含答案),共 75 题,涵盖取余筛选、迭代求和、迭代求积、嵌套循环、While 循环、图案输出、增长衰减、最大公约数等题型。

最近更新

信息技术中考复习最后一课

range 循环

取余筛选

题目 1

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

for i in ①:
if ②:
print(i)
答案

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

题目 2

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

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

① and ② print

题目 3

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

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

① in ② and

题目 4

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

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

① if ② !=

题目 5

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

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

① range ② !=

题目 6

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

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

① in ② %(运行结果为 524880,即 3×6×9×12×15×18)

题目 7

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

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

① int ② and

迭代求和

题目 8

计算 1+2+3+4+…+10,答案 55:

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

① 0 ② 11 ③ i

题目 9

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

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

① 4 ② i

题目 10

求 20 以内所有奇数的和,答案 100:

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

① in ② 2

题目 11

300 以内(包括 300)所有能被 3 整除的数的和,答案 15150:

s = ①
for i in range(3, ②, 3):
s = s + i
print(s)
答案

① 0 ② 301

题目 12

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

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

① 4 ② i

题目 13

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

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

① range ② 3

题目 14

求 20 以内(包括 20)所有偶数的和:

s = 0
for a ① range(0, 21, 2):
s = s + a
②(s)
答案

① in ② print

题目 15

求 20 以内(包括 20)所有偶数的和(另一种写法):

sum = 0
for a in ①:
②
print(sum)
答案

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

题目 16

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

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

① 101 ② i

题目 17

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

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

① 101 ② i

题目 18

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

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

① in ② +

题目 19

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

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

① 0 ② range ③ print

题目 20

计算 1²+2²+3²+…+100² 的值,答案 338350:

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

① 0 ② *

题目 21

前 n 个自然数的和:

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

① n+1 ② s=s+i

题目 22

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

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

① 4 ② 7(运行结果为 154)

题目 23

求 10 以内数的平方和:

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

① in ② s(运行结果为 385)

题目 24

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

s=①
for i in range(9,51,9):
s=s+②
print("和为:",s)
答案

① 0 ② i

迭代求积

题目 25

计算 9!:

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

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

题目 26

计算 2×3×4×…×10 的积,答案 3628800:

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

① 1 ② i

题目 27

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

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

① 2 ② i

题目 28

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

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

① 1 ② i

题目 29

输出 20(含 20)以内所有能被 5 整除的数的积:

s=①
for i in range(5,21,5):
s=s ② i
print(s)
答案

① 1 ② *(运行结果为 15000)

综合

题目 30

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

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

① 301 ② %

题目 31

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

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

① in ② and

题目 32

计算 20 以内(包括 20)所有奇数的和以及所有偶数的和,答案 100, 110:

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

① range ② 21 ③ %

题目 33

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

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

① s-i ② s+i

题目 34

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

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

① == ② else(运行结果为 6)

题目 35

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

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

① int ② s-g

题目 36

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

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

① range ② else

题目 37

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

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

① t ② if

题目 38

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

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

① range ② p

嵌套循环

题目 39

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

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

① in ② ==

题目 40

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

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)
答案

① 10 ② 10 ③ s

题目 41

有 5 元、2 元、1 元钱共计 50 张(每种面额至少一张),总金额为 100 元,列出所有组合方案:

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)
答案

① range ② if ③ print

题目 42

用 100 钱买 100 只鸡(公鸡 5 钱/只、母鸡 3 钱/只、小鸡 1 钱 3 只),列出所有方案:

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

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

题目 43

用 100 钱买 100 只鸡(另一种解法):

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, ③)
答案

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

题目 44

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

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

① for ② *

题目 45

小明带了 30 元买文具(铅笔 0.5 元/根,笔记本 3.5 元/本),求有几种买法:

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, "笔记本:", ②)
答案

① if ② n

图案输出

题目 46

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

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

① range ② 7 ③ i

题目 47

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

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

① 4 ② *

题目 48

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

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

① range ② *

题目 49

打印一个 5 行的菱形图案(上半部分):

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

① * ② 2

题目 50

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

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

① * ② i

While 循环

累计求和

题目 51

计算 1+2+…+100,答案 5050:

s = 0
a = 0
while a ① 100:
② = s + a
a = a + ③
print(s)
答案

① <= ② s ③ 1

题目 52

计算 100 以内整数的和:

sum = 0
i = 1
while i <= 100:
sum = ①
i = ②
print(sum)
答案

① sum+i ② i+1

题目 53

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

s = 0
i = 0
① i < 50:
s = s + i
i = i + 2
②(s)
答案

① while ② print

题目 54

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

s = 0
k = 1
while k <= 101:
s = ①
k = ②
print(s)
答案

① s+k ② k+5

题目 55

计算 30 以内(包括 30)所有偶数的和,答案 240:

s = 0
a = 0
while a ① 30:
s = s + a
a = a + 2
print("求和为:", ②)
答案

① <= ② s

题目 56

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

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

① while ② 1

题目 57

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

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

① < ② s

题目 58

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

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

① m ② 1

题目 59

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

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

① m-s ② 1

题目 60

猜体重游戏(只有 3 次机会),体重为 65 公斤:

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

① input ② ==

题目 61

暑假读书:第 1 天读 1 页,第 2 天读 2 页……第 60 天读 60 页,共读多少页:

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

① while ② i(运行结果为 1830)

题目 62

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

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

① while ② i(运行结果为 66795)

基础

题目 63

用 while 循环输出 1 到 10:

i = 1
while i ① 10:
print(i)
i = i + ②
答案

① <= ② 1

题目 64

用 while 循环输出 10 到 1(倒序):

i = ①
while i >= 1:
print(i)
i = i - ②
答案

① 10 ② 1

题目 65

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

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

① 99 ② 10

题目 66

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

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

① != ② cnt

题目 67

输入密码,最多输入 3 次,密码为“1234”时结束:

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

① and ② else

题目 68

输入一个正整数,判断它是几位数:

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

① // ② cnt

题目 69

计算 n 的阶乘(n 由键盘输入):

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

① 1 ② s

题目 70

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

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, "不是回文数")
答案

① // ② n

增长/衰减问题

题目 71

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

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

① in ② j ③ and

题目 72

输出 100 以内所有满足 a<b 的勾股数:

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)
答案

① range ② < ③ print

题目 73

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

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

① >= ② / ③ t

题目 74

细菌半小时增加一倍,多长时间超过世界人口(76 亿):

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

① <= ② * ③ t

题目 75

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

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

① while ② t

题目 76

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

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

① for ② range ③ s

题目 77

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

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

① range ② money

最大公约数

题目 78

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

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

① t ② a