内容正文:
第2章 算法与程序实现
一、选择题
1.某自定义函数如下:
def func(x):
i=0;s="";num=0
while i < len(x):
if x[i] in "0123456789":
s+=x[i]
else:
num+=int(s)
s=""
i+=1
return num
调用自定义函数func("12a34t56")执行后输出的结果是( )
A.12 B.34 C.46 D.102
2.正确导入Python模块的语句是( )
A.import pd as pandas B.input pandas
C.from pandas import math D.Import Pandas as pd
3.将数值变为字符串的函数是( )
A.float( ) B.int() C.str( ) D.abs()
4.小明用Python语言编写好“找出三个数中最大的数”的程序后,在调试运行的过程中,程序没有报错且能顺利运行,但得出的结果与预期不符,造成这个结果的原因是( )
A.使用了不合法的变量名 B.使用了中文状态下的“:”
C.逻辑上存在指误 D.语法上存在错误
5.有如下Python程序段:
a=[3,6,12,5,9,20,17,8]
p=0
for i in range (1,len(a)):
if a[i]>a[p]:
p=i
a.pop(p)
则执行程序段后,数组a中的元素为( )
A.3,6,12,5,9,20,17,8 B.3,6,12,5,9,17,8 C.3,6,12,5,9,20,17 D.6,12,5,9,20,17,8
6.有如下 Python 程序段:
s = input(); ans = ""
for i in s:
if 'a'<= i <='z':
ans = ans + i
elif '0' <= i <= '9':
ans = i + ans
print(ans[0:4])
执行该程序段,输入“4P3aQb5”,则运行结束后,输出结果为( )
A.534 B.534a C.34b D.435a
7.有如下Python程序段:
a=3
b=4
a=a+b
b=a+b
运行程序后a、b的值分别是( )
A.3,4 B.7,7 C.7,11 D.11,7
8.下列选项中,不适合用于描述“水仙花数问题”算法的是( )
A.自然语言 B.流程图 C.伪代码 D.机器语言
9.下列Python表达式运算结果为True的是( )
A.3 ** 2 < 8 and 2 % 5 > 1
B.25 // 4 > 4 and 3 / 2 < 1
C.not 7 < 8 or 9 > 6 + 2
D.not (2 ** 3 < 9 or 6 % 4 < 2)
10.在 Python中,表达式"12"+"3"的值为( )
A.15 B."15" C.123 D."123"
11.有如下自定义函数,函数参数是三个Boolean类型变量,如果三个参数中至少有两个的变量值为True则函数值返回True,否则返回False。
①
Function f(a As Boolean, b As Boolean, c As Boolean) As Boolean
f = (a And b) Or (b And c) Or (a And c)
End Function
②
Function f(a As Boolean, b As Boolean, c As Boolean) As Boolean
If a = b Then f = a Else f = c
End Function
③
Function f(a As Boolean, b As Boolean, c As Boolean) As Boolean
If a Then f = b Or c Else f = b and c
End Function
④
Function f(a As Boolean, b As Boolean, c As Boolean) As Boolean
f = (a Or b) And (b Or c) And (a Or c)
End Function
上述四个函数中能实现该要求的个数有( )
A.1 B.2 C.3 D.4
12.下列Python语句不正确的是()
A.version="HUAWEI"+60 B.a[i],a[i-1]= a[i-1] ,a[i]
C.a,b="AI",[5,1] D.B%=2
13.某算法部分流程图如图所示,若输入m和n的值分别为15和18,执行这部分流程后,变量m的值为( )
A.1 B.2 C.3 D.4
14.有python程序段如下:
import random
q=[""]*100;head=0;tail=0
ans=""
s=input()
for i in range(len(s)):
q[tail]=s[i];tail+=1
while head<tail:
x=random.randint(0,1)#随机生成整数0或1
ans+=q[head];head+=1
if head < tail and x%2==0:
q[tail]=q[head]
tail+=1;head+=1
print(ans)
当s的输入值为"Hello-world!"时,程序输出的结果不可能是( )
A.Hll-wrd!eool B.Hell-wordol! C.Hlo-ord!elwl D.eHll-wrd!ool
15.有如下Python程序:
score=int(input())
if score>=90:
grade='A'
elif score>=60:
grade='B'
else:
grade='C'
print(score,grade)
运行程序,输入“78”后回车,程序的输出结果是( )
A.78 B B.78 A C.B 78 D.78 C
16.有如下程序段:
s=['']*len(a)
head=2;q=head;top=-1
while q!=-1:
top+=1
s[top]=a[q][0]
q=a[q][1]
print(s[top-2])
若a=[['a',3],['b',0],['c',1],['d',-1]],则输出的结果为( )
A.a B.b C.c D.d
二、填空题
17.在python语言中对变量或常量进行运算处理时,“+”、“*”,“=”、and 、“<”运算符中优先级别最高的是 。
18.我们还可以利用计算机来模拟“割圆术”计算验证圆周率。如图所示,设圆的半径为1,正n边形的边长AB=xn,弦心距为hn,面积为Sn,正2n边形的边长AC=x2n;由勾股定理即可推导出,其中x6=1。观察发现,正2n边形的面积等于正n边形的面积加上n个等腰三角形的面积,即。利用这个推导公式,编写如下程序,求解π的近似值。据此完成下面小题。
from math import* #从math模块调用常用的数学函数
n=int(input("请输入多边形的边数:"))
i=6
x=1
s=6*sqrt(3)/4 #sqrt():math中的函数,用于求算术平方根
while i<=n/2: #当i>n/2时,结束循环,执行print()
h=sqrt(1-(x/2)**2)
s=s+i*x*(1-h)/2
x=sqrt((x/2)**2+(1-h)**2)
i=2*i
print("当正多边形的边数为",n,"时,π的近似值为:",s)
1. 按照数字化工具的功能分类,Python语言编程软件属于( )
A.信息传输工具 B.信息加工工具 C. 信息检索工具 D.信息存储工具
2. Python文件的后缀名为( )
A..c B..jar C. .xls D..py
3. s=6*sqrt(3)/4是一条( )
A.输入语句 B.赋值语句 C. 输出语句 D.注释语句
4. “(x/2)**2+(1-h)**2”表达的代数式是( )
A. B.
C. D.
5. “i<=n/2”中包含①算术表达式②逻辑表达式③关系表达式④赋值表达式( )
A.①② B.①③ C. ②④ D.②③
6. 程序中“#当i>n/2时,结束循环,执行print()”的功能为( )
A.数据输入 B.数据输出 C. 注释或解释 D.赋值
7. “print("当正多边形的边数为",n,"时,π的近似值为:",s)”的作用是( )
A.数据输入 B.数据输出 C. 运算 D.赋值
8. 在h=sqrt(1-(x/2)**2)语句中,**是( )运算符。
A.乘 B.除 C. 求余 D.幂
9. 在Python程序设计语言中,数据输入通过input函数来实现,input函数的返回值是( )
A.数值 B.字符串 C. 字典 D.列表
10. 利用计算机模拟“割圆术”,计算验证圆周率,体现了数字化学习的( )特点。
A.多样性 B.局限性 C. 创造性 D.单一性
11. 编制计算机程序解决问题的一般过程为①设计算法②编写程序③调试运行程序④分析问题,正确的排序是( )
A.①②③④ B.④①②③ C. ④②①③ D.①④②③
19.x3+改写成Python表达式 。
20.哥哥考弟弟一道数学题,题目内容如下:“有一筐鸡蛋,2个2个数多1个,3个3个数多2个,4个4个数多3个,5个5个数正好数完,问这筐鸡蛋最少是几个?”流程图是解决此问题的算法,则空白横线处应填 。
21.以下算法的输出结果是: 。
三、判断题
22.深度优先搜索算法是否适用于求解拓扑排序问题( )
23.在 Python 语言中,可以对列表进行追加、删除、修改、查询操作。( )
24.已知A和B是两个集合,并且表达式A<B的值为False,那么表达式A>B的值一定为True。( )
25.在编写程序时,要养成添加注释的良好习惯,以提高程序的可读性。( )
26.在程序中,x=y与y=x是不一样的。( )
四、操作题
27.小明编写了一个字符串加密程序,功能如下:运行程序后,通过键盘输入一串明文,输出加密后的密文。加密算法如下:
1)将明文中每个字符用8位二进制ASCII码(不足八位的左端补0,凑足八位)表示;如“A”的二进制ASCII码值为01000001;
2)对8位二进制编码进行取反码(0变1,1变0)操作,如01000001的反码是10111110;
3)将8位二进制反码用2位十六进制表示,得到该字符的密文;
4)将每个字符的密文按照明文的倒序连接。
运行结果如图所示:
请输入一串明文:China
密文是:9E919697BC
为实现上述功能,使用Python编写程序如下:
s=input(′请输入一串明文:′)
code=′0123456789ABCDE′
res=″
for a in s:
①
k =″
l = ″
while m>0:
k=②
m∥=2
while len(k)%4!=0:
k=′1′ + k
for b in range(0,len(k),4):
sum=int(k[b])*8+int(k[b+1])*4+int(k[b+2])*2+int(k[b+3])*1
③
res=l+res
print(′密文是:′,res)
(1)请在划线处填入合适代码。
程序划线①处应填入的代码为: ;
程序划线②处应填入的代码为: ;
程序划线③处应填入的代码为: 。
(2)根据该加密算法,字符“A”的密文是 。
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.C
【详解】本题考查Python程序设计。程序遍历每个字符,如果为连续的数字字符,进行顺序连接,如检测到非数字字符,将之前的连续数字累加到num中,由于最后的数字“56”后面没有非数字字符,不能累加入num,因此最终结果是num=12+34=46。故选C。
2.D
【详解】本题主要考查Python模块的导入。导入Python模块的关键字是import,pd作为pandas模块的别名,应使用as关键字,即Import Pandas as pd,故本题选D选项。
3.C
【详解】本题考查Python基础。float函数是将字符串或整数转换为浮点数。int函数是将字符串或浮点数转换为整数。abs函数是求绝对值。str函数是将数值转换为字符串。故选择C。
4.C
【详解】本题主要考查Python程序的调试。程序没有报错,则原因不会是:使用了不合法的变量名、使用了中文状态下的“:”或语法上存在错误。可能的原因是逻辑上存在指误,故本题选C选项。
5.B
【详解】本题考查Python程序。根据“if a[i]>a[p]: p=i”语句可知,此段程序是在数组a中找到最大值,并将其下标赋给p;而a.pop(p)的作用是去掉指定位置p上的元素,数组a最终的元素为“3,6,12,5,9,17,8”。故答案为:B。
6.B
【详解】本题考查Python程序。程序中,对输入的字符串逐个字符进行判断和处理:如果字符是小写字母,则添加到结果字符串的末尾;如果字符是数字,则添加到结果字符串的开头。根据输入“4P3aQb5”,按照上述逻辑处理,得到的结果字符串为“534ab”,输出的是ans[0:4]=534a。故答案为:B。
7.C
【详解】本题主要考查Python程序的执行。a=3,b=4,a=a+b=3+4=7,b=a+b=7+4=11,故本题选C选项。
8.D
【详解】本题考查的是算法描述方法。算法描述方法有:自然语言、流程图、伪代码等。机器语言是计算机语言的一种,故本题应选D。
9.C
【详解】本题考查算术、关系、逻辑运算符的综合应用。A选项,3 ** 2<8 结果为False,2 % 5 > 1结果为True,False and True结果为False,A选项错误;B选项,25 // 4 > 4结果为True,3 / 2 < 1结果为False,False and True结果为False,B选项错误;C选项,not 7 < 8 结果为Falsee,9 > 6 + 2结果为Truese,False or True结果为True,C选项正确;D选项,25 // 4 > 4结果为True,3 / 2 < 1结果为False,False and True结果为False,D选项错误;故本题答案为C选项。
10.D
【详解】本题考查的是Python表达式。加上双引号表明12、3是字符串,在字符串运算中“+”表示字符串的连接。故表达式"12"+"3"的值为"123"。选项D正确。
11.D
【详解】本题主要考查逻辑表达式的相关内容。四个自定义函数均能满足三个参数中至少有两个的变量值为True则函数值返回True,否则返回False,因此D选项正确;A、B、C选项均不符合题意。
12.A
【详解】本题考查的是Python表达式。"HUAWEI"是字符串类型数据,60是整数类型数据。符串类型数据与整数类型数据不能进行加运算。故本题应选A。
13.C
【详解】本题考查流程图。程序运行过程如下。因此变量m的值为3。故答案为:C。
m
n
15
18
15
3
12
3
9
3
6
3
3
3
14.D
【详解】本题主要考查Python程序的调试。分析程序可知,head初值为0,第一遍循环,执行ans+=q[head]后,ans="H",因此输出的结果以字母H开头,故不可能的是eHll-wrd!ool,故本题选D选项。
15.A
【详解】本题主要考查Python多分支结构。输入78后回车,满足elif score>=60部分grade='B',故程序的输出结果是78 B。选A。
16.B
【详解】本题考查Python列表相关操作。进入循环之前,head=2;q=head;top=-1;第一次进入循环:q=2,top=0,s[0]=a[2][0]=’c’,q= a[2][1]=1,继续;第二次进入循环:q=1,top=1,s[1]=a[1][0]=’b’,q= a[1][1]=0,继续;第三次进入循环:q=0,top=2,s[2]=a[0][0]=’a’,q= a[0][1]=3,继续;第四次进入循环:q=3,top=3,s[3]=a[3][0]=’d’,q= a[3][1]=-1,结束循环。最后输出s[2],即’b’。
17.“*”
【详解】本题主要考查Python运算符优先级。小括号具有最高优先级,运算符优先级按类别排序:算术 > 位 > 身份 >成员 > 比较 > 逻辑 > 赋值。故在python语言中对变量或常量进行运算处理时,“+”、“*”,“=”、and 、“<”运算符中优先级别最高的是“*”。
18. B D B D B C B D B C B
【详解】本题主要考查Python程序的综合应用。(1)Python语言编程软件属于信息加工工具,选B选项。(2)Python文件的后缀名为.py,选D选项。(3)s=6*sqrt(3)/4是一条赋值语句,将等号右边的表达式赋给左边的变量s,选B选项。(4)Python中幂运算用“**”,故“(x/2)**2+(1-h)**2”表达的代数式是,选D选项。(5)“i<=n/2”中包含算术表达式(n/2)和关系表达式(i>n/2),选B选项。(6)“#”用于注释,故选C选项。(7)print()是输出函数,故选B选项。(8)在h=sqrt(1-(x/2)**2)语句中,**是幂运算符,选D选项。(9)input函数的返回值是字符串类型,选B选项。(10)利用计算机模拟“割圆术”,计算验证圆周率,体现了数字化学习的创造性,选C选项。(11)编制计算机程序解决问题的一般过程为:分析问题、设计算法、编写程序、调试运行程序,故选B选项。
19.x**3+3*a*b/(6-y)或 x**3+(3*a*b)/(6-y)
【详解】本题主要考查Python表达式。Python幂运算符是“**”,乘运算符是“*”,除运算符是“/”,故x3+改写成Python表达式x**3+3*a*b/(6-y)或 x**3+(3*a*b)/(6-y)。
20.not p
【详解】本题考查流程图。在这个算法中,通过对变量n分别进行除以2、3、4、5的取余运算,并将结果分别存储在p1、p2、p3、p4中。然后通过p=p1 and p2 and p3 and p4来判断当前的n是否同时满足“2个2个数多1个,3个3个数多2个,4个4个数多3个,5个5个数正好数完”这些条件。由于我们要找的是满足条件的最小的n,所以在每次循环中,当p为True时,说明当前的n满足所有条件,不符合“最少”的要求,需要继续寻找更小的n。只有当p为False时,才继续增加n的值进行下一轮判断,直到找到满足条件且最小的n。因此,空白横线处应填not p。故答案为:not p。
21.85
【详解】本题考查的是流程图的执行过程。a=“5”,b=“8”,“5”>“8”,N,x=“85”。故输出的结果为85。
22.正确
【详解】本题考查算法。
深度优先搜索算法适用于求解拓扑排序问题。通过深度优先搜索,我们可以遍历图中的所有节点,并根据节点的入度和邻接关系来确定拓扑排序的顺序。故正确。
23.正确
【详解】本题考查Python列表相关操作。列表是一个有序且可更改的集合。在Python中,列表用方括号表示。列表里面的内容可以是任意类型,可重复。可以对列表进行的操作有:向列表添加数据;删减列表中数据;查找元素;修改元素等。故本题答案是:正确。
24.错误
【详解】本题考查Python集合数据类型的描述。已知A和B是两个集合,并且表达式A<B的值为False,那么表达式A>B的值不一定为True,也有可能A=B。故表述错误。
25.正确
【详解】本题考查程序设计注释相关内容。注释的作用是为了让自己或他人更快地了解程序作者的思路和意图,提高代码的可读性,同时在多人协同开发时,也可以提高开发效率。说法正确。
26.正确
【详解】本题考查程序设计中赋值语句的理解。在Python程序中,x=y是将y的值赋给x,y=x是将x的值赋给y,因此,x=y与y=x是不一样的。故正确。
27. m=ord(a) str(1-(m%2))+k l+=code[sum] BE
【详解】本题考查程序分析设计。
(1)根据题干描述的算法分析程序,for语句用来逐个遍历明文中的字符,而每遍历到一个字符都要求出对应的ASCII,结合第一个while语句中的“m>0”,第①空应当求出字符的ASCII,应填m=ord(a);第一个while语句用于求出ASCII的二进制数,但仔细观察第二个while语句,发现“补足8位”的操作并不是在前补“0”,而是补“1”,并且后面的程序也没有“取反码”的处理,所以第②空处是除2取余并且把余数直接取反,再连接在变量k的前面,故应填str(1-(m%2))+k;第③空,sum用于求出4位一组的二进制数的十进制,再用该十进制数为索引对字符串code进行切片,切出的字符即为十六进制数,故应填l+=code[sum]。
(2)根据题目中的算法描述,加密字符“A”的密文是BE。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$