4.4.1《for循环的应用》粤教版(2019)数据与计算必修1-课后练习(含答案)

资源下载
  1. 二一教育资源

4.4.1《for循环的应用》粤教版(2019)数据与计算必修1-课后练习(含答案)

资源简介

for循环的应用练习题
(粤教版·必修一《数据与计算》)
一、单选题(共15题,每题5分,共75分)
1. 在Python中,for循环语句的基本格式是(  )
A. for 变量 in 序列: 语句块
B. for (变量 in 序列): 语句块
C. for 变量 = 起始 to 结束: 语句块
D. for 变量 from 起始 to 结束: 语句块
2. 执行 `for i in range(5): print(i, end=' ')` 的输出结果是(  )
A. 0 1 2 3 4
B. 1 2 3 4 5
C. 0 1 2 3 4 5
D. 1 2 3 4
3. `range(3, 10, 2)` 生成的数字序列是(  )
A. 3, 4, 5, 6, 7, 8, 9
B. 3, 5, 7, 9
C. 3, 5, 7, 9, 11
D. 2, 4, 6, 8
4. 下列代码的输出结果是(  )
```python
s = "Python"
for ch in s:
if ch == 'h':
break
print(ch, end='')
```
A. Pyt
B. Python
C. Pyth
D. Pt
5. 执行 `sum(range(1, 101, 2))` 的结果是(  )
A. 5050
B. 2500
C. 2550
D. 5000
6. 以下关于for循环的说法,错误的是(  )
A. for循环可以遍历字符串中的每个字符
B. for循环可以遍历列表中的每个元素
C. for循环的循环变量必须在循环之前预先定义
D. for循环可以和else子句配合使用
7. 执行以下代码,输出结果中数字5出现的次数是(  )
```python
for i in range(10):
if i % 2 == 0:
continue
print(i, end=' ')
```
A. 1
B. 4
C. 5
D. 0
8. 下列代码的输出结果是(  )
```python
for i in range(3):
for j in range(2):
print(i, j, end=' ')
```
A. 0 0 0 1 1 0 1 1 2 0 2 1
B. 0 0 1 0 2 0 0 1 1 1 2 1
C. 0 0 1 1 2 2 0 1 1 2 2 3
D. 0 0 0 1 1 0 1 1 2 0 2 1
9. 表达式 `list(range(5, 0, -1))` 的值是(  )
A. [5, 4, 3, 2, 1]
B. [5, 4, 3, 2, 1, 0]
C. [1, 2, 3, 4, 5]
D. [5, 4, 3, 2]
10. 下列代码中,用于输出1到100之间所有能被3整除的数的正确代码是(  )
A. `for i in range(1, 101): if i//3==0: print(i)`
B. `for i in range(1, 101): if i%3==0: print(i)`
C. `for i in range(3, 101, 3): print(i)`
D. B和C都正确
11. 执行以下代码,输出结果是(  )
```python
for i in range(2, 5):
print(i 2, end=' ')
```
A. 4 6 8
B. 2 4 6
C. 4 8 12
D. 6 8 10
12. 关于 `range(10)` 和 `range(0, 10)` 的关系,下列说法正确的是(  )
A. 两者完全相同
B. 前者生成0-9,后者生成0-10
C. 前者生成1-10,后者生成0-9
D. 前者报错,后者正确
13. 下列代码的输出结果是(  )
```python
total = 0
for i in range(1, 6):
if i == 3:
continue
total += i
print(total)
```
A. 12
B. 15
C. 10
D. 9
14. 以下哪个选项可以正确输出1到5的平方值?(  )
A.
```python
for i in [1,2,3,4,5]:
print(i**2)
```
B.
```python
for i in range(5):
print(i**2)
```
C.
```python
for i in range(1,6):
print(i**2)
```
D. A和C都正确
15. 下面代码运行后,变量 `s` 的值是(  )
```python
s = 0
for i in range(10):
if i % 2 == 1:
s = s + i
```
A. 25
B. 20
C. 30
D. 45
二、填空题(共10题,每题2分,共20分)
1. 在Python中,`range(n)` 生成的整数序列范围是从__________到__________(不包含终止值)。
2. 执行 `sum(range(10, 20, 2))` 的结果是__________。
3. 以下代码的输出结果是__________。
```python
for i in range(3):
print(i, end='')
else:
print("结束")
```
4. `for` 循环中的 `break` 语句用于__________循环,而 `continue` 语句用于__________本次循环。
5. 使用 `for` 循环遍历列表 `fruit = ["苹果", "香蕉", "橙子"]` 时,循环变量依次取值为__________。
6. 执行 `list(range(2, 8, 2))` 返回值是__________。
7. 以下代码用于计算1×2×3×...×10的积,请补充完整。
```python
product = 1
for i in range(1, 11):
product = product ______
```
8. 执行以下代码,输出结果是__________。
```python
for i in range(1, 5):
for j in range(1, i+1):
print(j, end='')
print()
```
9. 若想输出字符串 `s = "Python"` 中每个字符及其索引,可以写成:
```python
for index, ch in enumerate(s):
print(index, ch)
```
则当 `index=2` 时,`ch` 的值是__________。
10. 语句 `[i2 for i in range(5)]` 的执行结果是__________。
三、情景作答题(共3题)
情景一:校园运动会的得分累加
某校运动会中,每个班级参加多个项目。班级得分记录在一个列表中,例如 `[7, 5, 0, 9, 2]` 表示该班在5个项目中的得分。请编写程序完成以下任务:
1. 使用 `for` 循环计算该班级的总分,并输出。(4分)
2. 计算该班级的平均分(保留一位小数)。(4分)
3. 找出该班级的最高分及其所在的项目序号(序号从1开始),并输出。(要求:使用 `for` 循环实现,不允许使用 `max()` 等内置函数)(6分)
情景二:打印乘法口诀表(创新格式)
通常的乘法口诀表是左下三角形式。现要求打印一个右上三角形式的乘法口诀表,例如 `n=4` 时的输出如下:
1*1=1 1*2=2 1*3=3 1*4=4
2*2=4 2*3=6 2*4=8
3*3=9 3*4=12
4*4=16
请编写程序,输入一个正整数 `n`,打印 `n×n` 的右上三角乘法表。要求每行末尾无多余空格,各表达式之间用两个空格分隔。
问题:
1. 分析输出规律,说明如何使用嵌套循环控制缩进和表达式输出。(6分)
2. 编写完整的Python代码实现该功能。(8分)
情景三:循环加密算法(趣味编程)
有一种简单的加密算法:将字符串中的每个字母向后移动固定位数(凯撒密码)。例如,偏移量为3时,'A'→'D', 'a'→'d', 'Z'→'C'(循环),非字母字符不变。
编写程序,输入一个字符串和一个整数偏移量k(k为正整数,且小于26),输出加密后的字符串。
要求: 使用 `for` 循环遍历字符串,利用 `ord()` 和 `chr()` 函数进行转换。提示:大写字母范围65-90,小写字母范围97-122。
问题:
1. 对于一个给定的大写字母 `ch`,写出计算偏移k后新字母的表达式(考虑循环)。(4分)
2. 编写完整的加密函数 `encrypt(text, k)`,返回加密后的字符串。(6分)
3. 输入 `"Hello, World!"`,k=3,输出什么?(4分)
参考答案与解析
一、单选题答案解析
1. A
解析:Python中for循环语法为 `for 变量 in 可迭代对象:`,注意冒号和缩进。
2. A
解析:`range(5)` 生成0,1,2,3,4,依次赋值给i并输出,空格分隔。
3. B
解析:`range(start, stop, step)` 从3开始,步长为2,小于10的值有3,5,7,9。
4. A
解析:遍历"Python",当ch='h'时执行break,提前结束循环,只输出前面的P,y,t。
5. B
解析:`range(1,101,2)` 生成1到100的所有奇数,共50个,和为5050=2500(首项+末项=100,项数50,和=5050=2500)。
6. C
解析:for循环的循环变量在循环过程中自动从序列中取值,不需要预先定义;循环变量在循环结束后仍存在。C说法错误。
7. C
解析:循环i从0到9,if i%2==0时continue跳过打印,所以只打印奇数:1,3,5,7,9,共5个数。数字5出现1次?题目问“出现次数”,指的是输出中数字5这个数值出现的次数?但输出的是序列,其中5出现一次,选A。但仔细看:输出是"1 3 5 7 9",其中5出现一次。但选项有C5,可能误理解为数字个数。正确答案应为1次,选A。但选项C5也是数字。为避免歧义,题目应明确“数字5出现的次数”。我们按题意理解为输出中数字5本身出现的次数,选A。不过常见题会问打印了几个数,这里问“数字5出现的次数”只有一次。故答案为A。
(注:实际题中问“数字5出现的次数”,输出中有且仅有一个5,所以选A。但如果问“打印了多少个数字”,则选C5。根据题干,明确写“数字5出现的次数”,所以A。)
8. A
解析:外层i=0时,内层j=0,1 输出"0 0 0 1";i=1时,输出"1 0 1 1";i=2时,输出"2 0 2 1"。组合起来为A。
9. A
解析:`range(5,0,-1)` 从5开始递减到1(不包括0),所以序列为5,4,3,2,1,转换为列表得[5,4,3,2,1]。
10. D
解析:B和C都能正确输出1到100之间所有能被3整除的数。B用条件判断,C用步长3直接生成。D正确。
11. A
解析:range(2,5)生成2,3,4,分别乘以2得4,6,8。
12. A
解析:`range(10)` 等价于 `range(0,10)`,完全相同。
13. A
解析:i=1,2,3,4,5,当i=3时continue跳过累加,所以累加1+2+4+5=12。
14. D
解析:列表[1,2,3,4,5]和range(1,6)都能正确输出平方。range(5)输出0-4的平方,不符合1-5。故A和C正确。
15. A
解析:i从0到9,奇数为1,3,5,7,9,和为25。
二、填空题答案解析
1. 0;n-1(或0到n-1)
2. 70(range(10,20,2): 10,12,14,16,18,和=70)
3. 012结束(循环正常结束执行else,输出"结束")
4. 终止;跳过
5. "苹果"、"香蕉"、"橙子"
6. [2,4,6](2到8步长2,不包括8)
7. i
8. 1\n12\n123\n1234(每行输出数字,换行)
9. 't'(字符串索引0:P,1:y,2:t,3:h,4:o,5:n)
10. [0,2,4,6,8](列表推导式)
三、情景作答题答案解析
情景一:校园运动会的得分累加
```python
scores = [7, 5, 0, 9, 2]
1. 总分
total = 0
for s in scores:
total += s
print("总分:", total) 23
2. 平均分
average = total / len(scores)
print("平均分:", round(average, 1)) 4.6
3. 最高分及项目序号
max_score = scores[0]
max_index = 0
for i in range(1, len(scores)):
if scores[i] > max_score:
max_score = scores[i]
max_index = i
print("最高分:", max_score, "项目序号:", max_index+1) 9 和 4
```
情景二:打印乘法口诀表(右上三角)
1. 规律分析
- 需要打印n行,第i行(i从1到n)起始乘数为i,结束乘数为n。
- 第i行前面需要缩进 (i-1) 个表达式宽度(每个表达式格式为 `ij=ij`,长度不一,但为了对齐,通常用固定宽度。简单起见,题目没有严格要求严格对齐,只需按格式空格分隔即可。可以采用 `\t` 或固定空格。
- 每行内,j从i到n,输出 `f"{i}{j}={ij}"`,表达式之间用两个空格分隔。
2. 代码
```python
n = int(input("请输入n: "))
for i in range(1, n+1):
打印缩进:每行前面有 (i-1) 个表达式占位,用两个空格加上表达式宽度?为了简单,直接打印适当空格
用空格控制:每个表达式宽度假设为7(如"14=4 "),但实际长度不同,可用制表符或简单空格
更简单:先打印 (i-1) " " 但不够精确,这里采用字符串格式化固定宽度
line = ""
for j in range(1, i):
line += " " 8个空格代替一个表达式的占位(简单处理)
for j in range(i, n+1):
line += f"{i}{j}={ij}".ljust(8) 左对齐,宽度8
print(line.rstrip())
```
更简洁的方式:
```python
n = int(input())
for i in range(1, n+1):
打印前面的空格(每个占位8个字符)
print(" " 8 (i-1), end="")
for j in range(i, n+1):
print(f"{i}{j}={ij}", end=" ") 两个空格
print()
```
情景三:循环加密算法
1. 大写字母偏移表达式
```python
new_ch = chr((ord(ch) - ord('A') + k) % 26 + ord('A'))
```
2. 完整加密函数
```python
def encrypt(text, k):
result = ""
for ch in text:
if 'A' <= ch <= 'Z':
result += chr((ord(ch) - ord('A') + k) % 26 + ord('A'))
elif 'a' <= ch <= 'z':
result += chr((ord(ch) - ord('a') + k) % 26 + ord('a'))
else:
result += ch
return result
```
3. 输入 `"Hello, World!"`,k=3 输出
H→K, e→h, l→o, l→o, o→r, 逗号空格不变, W→Z, o→r, r→u, l→o, d→g, !不变。结果为 `"Khoor, Zruog!"`。

展开更多......

收起↑

资源预览