myRank.append(A[i])
i+=1
else:
while((7)______):
myRank.append(B[j])
j+=1
print(myRank)
算法二:
myRank=[0]*(len(A)+len(B))
i=0
j=0
k=0
while((8)_____):
k=i+j
if(i>=len(A)):
myRank[k]=B[j]
j+=1
elif(j>=len(B)):
myRank[k]=A[i]
i+=1
elif((9)_____):
myRank[k]=A[i]
i+=1
else:
myRank[k]=B[j]
j+=1
print(myRank)
17.某种数据加密方法描述如下(加密前数据是ASCII字符):
●以8个数据为一段,将n个待加密数据依次分割成若干个数据段,剩余数据(个数小于8)为独立数据段。
●数据加密规则:
数据个数等于8的数据段,对各个字符进行位置变换;数据个数小于8的数据段,不进行位置变换。
位置变换:
用位置变换密钥数组c,将数据段每个字符进行位置变换,方法如下:
加密后某数据段的第i个元素=对应原数据段的第c(i)个元素,其中i=1,2,……,8。
数值变换:
位置变换后,依次取出各个字符进行数值变换:
把该字符的ASCII码转二进制,然后与密钥m对应的二进制数(m为1到255之间的整数)按位异或运算。
异或运算(⊕)规则:
如果a、b两个值不相同,则a⊕b结果为1;如果a、b两个值相同,则a⊕b结果为0,即:
0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0。
●把上述处理的得到二进制数依次拼接,即构成最后的加密数据例如,待加密数据为“python3.50”,数组c各元素的值依次是
数组c
3
6
1
5
2
8
4
7
则数据位置变换如下:
如值变换密钥m为35(二进制表示是00100011),则字符“t”(ASCII码值是116,二进制表示是010100)的数值变换过程如下:
变换前
0
1
1
1
0
1
0
0
密钥m
0
0
1
0
0
0
1
1
变换后
0
1
0
1
0
1
1
1
(1)已知“A”的ASCII码值是65,m=35,则“A”数值变换后的结果是_______(填二进制数据)。
(2)小李根据上述算法,设计了一个数据加密程序,其VB代码如下,请在划线处填入合适的代码。
Constn=1024
Dimc(1To8)AsInteger
PrivateSubForm_Load()
‘产生位置变换密钥数组c,代码略
EndSub
Functionconvert(cAsInteger)AsString
‘程序功能:
把整数c转成8位二进制数,代码略
EndFunction
PrivateSubCommand1_Click()
DimsAsString,stAsString,ssAsString,resAsString
DimiAsInteger,jAsIntegerstartAsInteger
Dima(1Ton)AsString,b(1Ton)AsString
s=Text1.Text
st=convert(Val(Text2.Text))
Fori=1ToLen(s)
a(i)=Mid(s,i,1)
Nexti
i=1:
start=-8
DoWhile①________
IfiMod8=1Thenstart=start+8
b(i)=②_______
i=i+1
Loop
Forj=iToLen(s)
b(j)=a(j)
Nextj
Fori=1ToLen(s)
③________
Forj=1To8
IfMid(ss,j,1)=Mid(st,j,1)Then
res=res+"0"Elseres=res+"1"
'按位异或
Nextj
Nexti
Text3.Text=res
EndSub
18.程序设计:
在舞会上,男生、女生各自排成一队。
舞会开始时,依次从男队和女队的队头各出一人配成舞伴。
跳完后的两人重新回到队尾。
例如:
boy=['Alex','Steven','Jack'],girl=['Ada*,'Babs'.,'Danla','Jane']
输出:
Turn1:
(Alex,Ada)
Turn2:
(Steven,Babs)
Turn3:
(Jack,Danla)
Turn4:
(Alex,jane)
……
Turn12:
(Jack,jane)
代码如下:
boy=['Alex','Steven',‘Jack']
girl=['Ada','Babs','Danla','Jane']
foriinrange(12):
x,y=①#出队
print(“Turn{:
2}):
({},{})".format(i+1,x,y))
boy.append(②)#再进队
girl.append(③)#再进队
(1)程序代码中①处正确的代码是(_______)。
A.boy.pop(l).girl.pop(l)B.girl.pop(l),boy.pop(l)
C.boy.pop(0),girl.pop(0)D.girl.pop(0),boy.pop(0)
(2)程序代码中②处正确的代码是(_______)。
A.xB.yC.iD.i+1
(3)程序代码中③处正确的代码是(_______)。
A.xB.yC.iD.i+1
19.操作说明:
编写一个程序实现以下功能,将程序以“Y:
/3/3.py”作为文件名保存。
题目:
设计100以内的数中能同时被3或5整除的个数。
20.编写程序,实现从键盘输入数据,数据前三位的ASCII值加2,从第四位开始ASCII值加3。
21.哥德巴赫在1742年提出了以下猜想:
任何一个大于2的偶数都可以写成两个质数之和,请完善代码帮助哥德巴赫验证他的猜想。
importmath
defss(n):
Flag=True
i=2
whilei<=int(math.sqrt(n))andFlag:
if_____________
Flag=False
_____________
returnFlag
n=int(input(“输入一个大于2的偶数”))
foriinrang(2,n//2+1):
if____________
print(str(n)+"="+str(i)+"+"+str(n-i))
如果输入“8”则结果显示_____
【参考答案】***试卷处理标记,请不要删除
一、选择题
1.B
【详解】
本题主要考查Python注释。
python单行注释和多行注释分别是#和"""""",故本题选B选项。
解析:
B
【详解】
本题主要考查Python注释。
python单行注释和多行注释分别是#和"""""",故本题选B选项。
2.A
【详解】
本题考查Python算法及其程序实现。
input()函数接收的是字符串,故print(A*5)时,输出5个A里存储的字符串。
通过键盘输入5,则运算结果是:
55555,选项
解析:
A
【详解】
本题考查Python算法及其程序实现。
input()函数接收的是字符串,故print(A*5)时,输出5个A里存储的字符串。
通过键盘输入5,则运算结果是:
55555,选项A正确。
3.D
【详解】
本题考查的是流程图相关知识。
圆角矩形用来表示程序的开始和结束,矩形用来表示处理框,菱形用来表示判断,平行四边形用来表示输入、输出。
故本题应选D。
解析:
D
【详解】
本题考查的是流程图相关知识。
圆角矩形用来表示程序的开始和结束,矩形用来表示处理框,菱形用来表示判断,平行四边形用来表示输入、输出。
故本题应选D。
4.B
【详解】
本题主要考查Python输入函数。
在Python中,input()函数的返回结果的数据类型为字符串String型,故本题选B选项。
解析:
B
【详解】
本题主要考查Python输入函数。
在Python中,input()函数的返回结果的数据类型为字符串String型,故本题选B选项。
5.A
【详解】
本题主要考查Python程序的执行。
29%3=2,满足if条件,输出结果为29不能被3整除,故本题选A选项。
解析:
A
【详解】
本题主要考查Python程序的执行。
29%3=2,满足if条件,输出结果为29不能被3整除,故本题选A选项。
6.A
【详解】
本题考查Python程序段。
当程序运行后,小新依次输入92*,即a=9,b=2,c=*,则elifc==‘*’:
成立,执行print(a*b),结果为18,故本题选A。
解析:
A
【详解】
本题考查Python程序段。
当程序运行后,小新依次输入92*,即a=9,b=2,c=*,则elifc==‘*’:
成立,执行print(a*b),结果为18,故本题选A。
7.B
【详解】
本题主要考查Python变量的命名。
变量的命名规则有:
只能以字母或下划线开头,不能包含特殊符号,不能是关键字。
故40XL不是Python合法的标识符,故本题选B选项。
解析:
B
【详解】
本题主要考查Python变量的命名。
变量的命名规则有:
只能以字母或下划线开头,不能包含特殊符号,不能是关键字。
故40XL不是Python合法的标识符,故本题选B选项。
8.A
【详解】
本题考查计算机语言的相关知识点
计算机高级语言有Python、Java等
计算机低级语言有汇编语言
机器语言是计算机直接识别并执行的语言。
故本题选A选项
解析:
A
【详解】
本题考查计算机语言的相关知识点
计算机高级语言有Python、Java等
计算机低级语言有汇编语言
机器语言是计算机直接识别并执行的语言。
故本题选A选项
9.C
【详解】
本题考查的是python的变量命名。
python的变量名是由数字、字母、下划线组成,并且数字不能打头。
故选项C符合题意。
解析:
C
【详解】
本题考查的是python的变量命名。
python的变量名是由数字、字母、下划线组成,并且数字不能打头。
故选项C符合题意。
10.A
【详解】
本题考查Python数据类型相关的知识点
Python不支持char类型、byte类型。
故本题选A选项
解析:
A
【详解】
本题考查Python数据类型相关的知识点
Python不支持char类型、byte类型。
故本题选A选项
11.C
【详解】
本题主要考查Python循环结构。
分析程序可知,该程序求m、n的最大公约数,程序结束后m=6,此时r=0,故本题选C选项。
解析:
C
【详解】
本题主要考查Python循环结构。
分析程序可知,该程序求m、n的最大公约数,程序结束后m=6,此时r=0,故本题选C选项。
12.C
【详解】
本题主要考查Python中常用运算符。
Python中“-=”是减法赋值运算符,c-=b等效于c=c-b,因此C选项正确。
【点睛】
解析:
C
【详解】
本题主要考查Python中常用运算符。
Python中“-=”是减法赋值运算符,c-=b等效于c=c-b,因此C选项正确。
【点睛】
13.B
【详解】
本题主要考查Python表达式的运算。
Python中取余符号是“%”,“==”是用来判断两个对象的值是否相等,故判断n是否为偶数的表达式是n%2==0,故本题选B选项。
解析:
B
【详解】
本题主要考查Python表达式的运算。
Python中取余符号是“%”,“==”是用来判断两个对象的值是否相等,故判断n是否为偶数的表达式是n%2==0,故本题选B选项。
14.C
【详解】
本题主要考查python的表达式。
or属于逻辑运算符,morn不是关系表达式。
故本题选C选项。
解析:
C
【详解】
本题主要考查python的表达式。
or属于逻辑运算符,morn不是关系表达式。
故本题选C选项。
15.A
【详解】
本题主要考查Python表达式的运算。
2**3//3+8%2*3=8//3+0*3=2,5**2%3+7%2**2=25%3+7%4=1+3=4,1314//100%10=13%10=
解析:
A
【详解】
本题主要考查Python表达式的运算。
2**3//3+8%2*3=8//3+0*3=2,5**2%3+7%2**2=25%3+7%4=1+3=4,1314//100%10=13%10=3,int("1"+"5")//3=5,故本题选A选项。
二、程序填空
16.myRank.append(A[i])j【详解】
本题主要考查python编程。
根据表格所示,列表B中第5个元素为309,因此①处为309;A[i]
【点睛】
17.①i<=(Len(s)\8)*8②a(start+c((i-1)Mod8+1))③ss=convert(Asc(b(i)))
【详解】
(1)“A”的ASCII码值是65,用二进制表示为0100001,m=35,用二进制表示为0010001,位做异或运算,相同为0,相异为1,可得:
01100010。
(2)①以8个数据为一段进行分段处理,个数等于8的数据段需进行位置变换,故需进行位置变换的数据段有(Len(s)\8)个,数据个数为i<=(Len(s)\8)*8。
②位置变换方法:
加密后数据段的第ⅰ个元素=原数据段的第c(i)个元素,其中i=1,2,……,8,i表示段内位置。
代码“DoWhilei<=(Len(s)\8)*8”中的i对应段内位置可为“1+(i-1)Mod8”,start表示该数据段第一个数据的前个位置,故数组b第i位置元素是来自数组a第start+c(1+(i*-1)Mod8)位置,故②处代码为“a(start+c(i-1)Mod8+1))”。
③位置变换后的数据需转二进制,再按位做异或运算,故③处的代码是调用自定义函数convert把b(i)中字符的ASCII码转二进制后存入变量ss,故此处代码为“ss=convert(Asc(b(i))”。
18.CAB
【详解】
本题主要考查队列数据结构及Python程序。
①队列是从队头出队,队尾入队,使用pop函数出队,队头的索引值是0,故此处填boy.pop(0),girl.pop(0)。
②队列入队使用append方法追加到队列尾,此处是男生入队boy.append(x),故选A选项。
③同理,此处是女生入队girl.append(y),故选B选项。
19.c=0
print("能同时被3或5整除的数是:
",end="")
foriinrange(1,101):
ifi%3==0andi%5==0:
c+=1
print(i,end="")
print("")
print("能同时被3或5整除的个数是:
"+str(c))
【详解】
本题主要考查Python程序设计。
设计100以内的数中能同时被3或5整除的个数,使用for循环变量i的范围是从1~99,用变量c统计能同时被3或5整除的个数,如果满足if判断条件,则变量c递增,循环完输出c的值,具体代码及运行结果如下:
20.s=input("请输入要转换的字符)
c=len(s)#len求字符串长度
foriinrange(0,c):
ifi<2:
print(chr(ord(s[i])+2))#ordord()函数是chr()函数配对函数,将字符转ASCII值
else:
print(chr(ord(s[i])+3))
【详解】
本题主要考查程序设计。
题干要求可通过Python程序条件分支结构实现,具体代码如下:
s=input("请输入要转换的字符)
c=len(s)#len求字符串长度
foriinrange(0,c):
ifi<2:
print(chr(ord(s[i])+2))#ordord()函数是chr()函数配对函数,将字符转ASCII值
else:
print(chr(ord(s[i])+3))
21.n%i==0:
i+=1ss(i)andss(n-i):
8=3+5
【详解】
本题主要考查Python程序的执行与调试。
①函数ss(n)用来判断n是否为质数,若是则返回True,否则返回False,此处是通过while循环逐个判断n是不是能整除i,故填n%i==0:
。
②若不满足if条件,则i递增,继续循环判断,故填i+=1。
③此处判断i与n-i是否都是质数,若是,则表明该偶数可以写成两个质数之和,并输出,故填ss(i)andss(n-i):
。
④如果输入“8”则结果显示8=3+5。