【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编

四季读书网 1 0
【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编

  本公众号推出真题回顾系列,将VB题目进行了Python改编,并在最后附上对于目前选考备考来说,还有价值的其它题目。

改编过程中感慨万千。大概只有我们信息技术学科,在短短十年间,变化如此之大。

信息技术教师必须具备两种学习意识:对于底层知识,需要“慢思考”,沉下心去啃硬骨头,建立深刻的理解,这可能需要几年甚至十几年的积累。对于应用层知识,需要“快学习”,快速上手,快速迭代,甚至要有“用完即弃”的觉悟。这种精神上的分裂和持续的压力,是其他学科教师难以体会的。

也因此,浙江技术选考造就了一大批优秀的信息科技教师。

今天是第一期,看看我们的来时路。

一、选择题第12题:基本算法与数组处理

【2015年10月原题】12.(加试题)有如下VB程序段:

Dim a(1 To 5) AsInteger, i AsInteger, c AsIntegera(1) = 2 : a(2) = 1 : a(3) = 3 : a(4) = 4 : a(5) = 5c = 0For i = 3 To 5If a(i - 2) + a(i - 1) = a(i) Then c = c + 1Next iText1.Text = Str(c)

该程序段运行后,文本框Text1中显示的内容是( )

A. 1 B. 2 C. 3 D. 4

【Python版】有如下Python程序段:

a = [0, 2, 1, 3, 4, 5]c = 0for i in range(3, 6):if a[i-2] + a[i-1] == a[i]:c = c + 1print(c)

该程序段运行后,输出的是( )

A. 1 B. 2 C. 3 D. 4

【解析】

当 i=3 时:a(1)+a(2) = 2+1 = 3,等于 a(3),条件成立,c 变为 1。

当 i=4 时:a(2)+a(3) = 1+3 = 4,等于 a(4),条件成立,c 变为 2。

当 i=5 时:a(3)+a(4) = 3+4 = 7,不等于 a(5)(5),条件不成立。

结果:最终 c 的值为 2。故选 B

二、非选择题第14题:温度转换与循环结构

【2015年10月原题】14.编写VB程序,实现如下功能: 在文本框Text1和Text2中分别输入一个整数,单击命令按钮Command1,在列表框List1中显示结果。结果包含两列数据,第1列为两数之间的摄氏温度值(间隔1度、升序),第2列为对应的华氏温度值。

(1)要使命令按钮Command1上显示的文本改为“转换”,可在其属性窗口中将______属性修改为“转换”。

(2)实现代码如下:

t1 = Val(Text1.Text)t2 = Val(Text2.Text)If ___①___ Thent = t1: t1 = t2: t2 = tEnd Ifi = t1Do While ___②___f = i * 9 / 5 + 32List1.AddItem Str(i) + "" + Str(f)___③___Loop

划线①②处的选项:

A. i <= t2 B. f <= t2 C. t1 > t2 D. i < f

【Python版】输入两个摄氏温度整数,按升序输出该区间内所有摄氏度及其对应的华氏度(华氏度 = 摄氏度 × 9 / 5 + 32)。程序运行截图如下:

【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编 第1张

实现该功能的Python程序代码如下,请在划线处填入合适的代码或选项:

t1 = int(input("输入第1个整数: "))t2 = int(input("输入第2个整数: "))if ___①___:t1, t2 = t2, t1i = t1while ___②___:f = i * 9 / 5 + 32print(i,f)___③___

划线①②处的选项:

A. i <= t2 B. f <= t2 C. t1 > t2 D. i < f

解析】

① 选 C (t1 > t2):为了实现升序输出,如果第一个数大,必须交换。

② 选 A (i <= t2):循环变量 i 从较小的 t1 开始,增加到较大的 t2 结束。

③ 填i = i + 1:手动控制循环变量递增,间隔1度。

三、非选择题第16题:冒泡排序优化

【2015年10月原题】16.(加试题)冒泡排序优化: n个数据的冒泡排序需要经过n-1遍加工,每一遍加工自下而上比较。若某一遍加工过程中没有数据交换,说明数据已经有序。

' 加框处代码有错,请改正i = 1: flag = TrueDo While  i <= n - 1 Or flag = True'加框处:i <= n - 1 Or flag = True(1)flag = FalseFor j = n To i + 1 Step -1If a(j) < a(j - 1) Thenk = a(j): a(j) = a(j - 1): a(j - 1) = kflag = TrueEnd IfNext ji = i + 1Loop' (2) 处输出加工遍数逻辑(略)

【Python版】n个数据的冒泡排序需要经过n-1遍加工,每一遍加工自下而上比较相邻两个数据,把较小者交换到上面。小刘发现:当某一遍加工过程中没有数据交换,说明数据已经有序,无需进一步加工。为此,小刘对算法进行优化。运行结果如图:

【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编 第2张

小刘编写的python程序如下,(1)(2)两处加框处代码有误,请修正。

= [443878379644569]print("排序前数据:",a)=8=1flag =Truewhile i <= n -1or flag ==True:#(1)加框处:i <= n - 1 or flag == Trueflag =Falsefor j inrange(n -1, i -1-1):if a[j] < a[j-1]:a[j], a[j-1= a[j-1], a[j]flag =True= i +1print("排序后数据:",a)print("加工遍数为:", i)# (2) 加框处:i

解析】

错误纠正 (1):原题使用 Or 是错误的。循环继续的条件必须是:既没有达到最大轮数 i <= n - 1,且 上一轮发生过交换 flag = True。一旦其中一个不满足(如 flag 为 False),就应停止。因此应改为 and。答案为:i <= n - 1 and flag == True

错误纠正 (2):由于循环末尾执行了 i = i + 1,退出循环时 i 比实际遍数多 1。答案为: i - 1

四、非选择题第17题:字符串加密算法

【2015年10月原题】17.【加试题】某数据加密方法描述如下:

(1)以字节为单位处理;

(2)将1个字节的8位二进制数分割成前4位与后4位;

(3)将两个4位二进制分别转换为十进制数;

(4)将每个十进制数转换为1个加密字符,对应的“密码表”如下:

VB运行如下(案例及代码其他略):

【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编 第3张

【Python版】某数据加密方法描述如下:

(1)以字节为单位处理;

(2)将1个字节的8位二进制数分割成前4位与后4位;

(3)将两个4位二进制分别转换为十进制数;

(4)将每个十进制数转换为1个加密字符,对应的“密码表”如下:

值(十进制)

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

加密字符

I

l

i

k

e

C

H

N

P

O

s

t

c

a

r

d

小明按照上述方法,设计了一个字符串(仅包含ASCII字符)加密的Python程序,功能如下:单击“加密”按钮,程序依次将输入字符串的每个字符的ASCII码值作为1个字节转换为两个加密字符,连接这些加密字符,并输出加密结果,下表显示了字符串中一个字符的加密过程:

【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编 第4张

程序运行情况如下:

【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编 第5张

实现上述功能的Python程序如下:

(1)请在划线处填入合适的代码。

def Code2Char(c):="IlikeCHNpostcard"return ___②___=input("请输入明文: ")___①___ss =""for i inrange(n):=ord(s[i]) # 获取ASCII码b1 = a //16b2 = a %16ss = ss + Code2Char(b1) + Code2Char(b2)print("密文:", ss)

(2)若将“密码表”中值为“0”对应的加密字符“I”改成“i”,加密后的密文可能无法解密,原因是 。

解析】

(1)填空 ①:需要获取待加密字符串的长度,答案为:n = len(s)

(1)填空 ②根据十进制值从密码表中取字符,使用字符串索引 s[c](2)安全性讨论:若将密码表中的“I”改为“i”,则“i”对应了 0 和 2 两个值,导致解密时无法确定原文,造成歧义。

五、其他有价值的题目:

【2015年10月第7题】

7.用24位二进制数来表示的RGB颜色,将其每位二进制数取反(0改为1,1改为0),即变为 另一种颜色,这种操作称为颜色反相。若某RGB颜色值用十六进制表示为123456H,则其反相后的颜色值用十六进制表示为

A.654321H B. 987654H C. EDCBA9H D. FEDCBAH

【解析】答案:C

简单做法:写出1,2的二进制,取反,再转十进制,即可得到答案。

快速做法:取反后的二进制数 + 原来的二进制数 = 1111(一个十六进制数转二进制数最多4位),因此可以快速判断。

【2015年10月第11题】

11.(加试题)已知单调函数 【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编 第6张 在 【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编 第7张 区间存在一个 【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编 第8张,使 【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编 第9张。现用对分查找法搜索 【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编 第10张 的值,开始搜索区间为 【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编 第11张。若经过 10 次对分查找后还需继续搜索,则第 11 次搜索区间的长度为

A. 【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编 第12张 B. 【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编 第13张 C. 【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编 第14张 D. 【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编 第15张

【解析】答案:D

初始区间长度是 1。每对分查找 1 次,区间长度就 除以 2。查找 10 次后,区间长度变成【真题回顾•第一期】2015年10月浙江省信息技术选考真题Python改编 第16张

抱歉,评论功能暂时关闭!