内容正文:
3.2 Python语言程序设计
一、选择题
1.已知在python语言中,int(x)函数的功能是返回x的整数部分,设a=3,b=4,c=5,则下列表达式的运算结果中值最大的是( )
A.abs(a-b) B.int(2*a-c/b) C.math.sqrt(b) D.a**2+b**2-c**2
2.有如下Python程序段
from random import randint
a=[0]*5
for i in range(5):
a[i]=randint(-4,4)*2+1 #randint(a,b)随机生成一个[a,b]范围内的整数
for i in range(1,5):
k=a[i]
j=i-1
while j>=0 and a[j] < k:
a[j+1]=a[j]
j-=1
a[j+1]=k
执行该程序段后,列表a的值可能是( )
A.[-9,5,3,1,1] B.[7,5,1,1,-5] C.[7,3,0,-5,-1] D.[-3,-1,1,3,9]
3.下面两个Python程序的运行结果分别是( )
A
4 3 1 0
4 3
B
4 3 1
4 3
C
4 3
4 3 1 0
D
4 3 2 1
4 3 2 1
A.A B.B C.C D.D
4.我们可以对文本中词频较高的分词,通过词云图给予视觉上的突出,小明打算用Python程序来生成词云图,程序中需要用到以下哪个第三方库?( )
A.WordCloud B.math C.random D.turtle
5.有如下Python程序段:
def double f(m):
if m==1 or m==2:
return m
else:
return double f(m-2)*m
n=int(input("请输入一个正整数n:")
print(double f(n))
执行该程序段后,输入n 的值为7,输出的结果是( )
A.1 B.7 C.105 D.35
6.下面代码的输出结果是( )
a,b=1,1
for i in range(3,7):
a,b = b,a+b
print(a)
A.5 B.8 C.13 D.21
7.在Python中,下列赋值语句不合法的是( )
A.x+=7 B.x+y=z C.x_y=10 D.x,y=y,x
8.s="1"+"1",此时s的值是( )
A.2 B."11" C.11 D."2"
9.有如下Python程序段:
m = "2a03b145c1"
s=" ";x = 0;i=0
while i<len(m):
ch=m[i]
if "a"<=ch<="z":
s=ch+"="+str(x)+","+s
x=0
else:
x=x*10+int(ch)
i=i+1
print(s)
执行该程序段后,输出的结果为( )
A.a=2,b=3,c=145, B.a=2,b=3,c=45, C.a=3,b=145,c=1, D.c=145,b=3,a=2,
10.绘制sin(x)的图形如下图所示。
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,20,100)
y=np.sin(x)
________________
plt.legend()
plt.show()
则程序划线处应填入的代码是( )
A.plt.plot(x,″g--″,label=″sin(x)″) B.plt.plot(x,y,″g--″,label=″sin(x)″)
C.plt.plot(x,y,″g--″) D.plt.plot(y,″g--″,label=″sin(x)″)
11.列表是Python中常用的序列类型,和变量样是可变的。以下关于列表的描述正确的是( )
A.列表中的元素索引不能为负值 B.列表中元素的值可以修改
C.列表中的元素不能是列表类型 D.列表中元素的数据类型必须是一样的
12.某Python程序如下:
dic={};s="1223212"
for i in s:
if i in dic:
dic[i]+=1
else:
dic[i]=1
print(dic["2"])程序运行后,输出的结果是( )
A.1 B.2 C.3 D.4
13.定义如下函数:
def f(x):
if x<3:
return 2
return f(x-1)*f(x-3)
关于该函数,下列说法正确的是( )
A.采用了迭代算法 B.时间复杂度是0(log2n)
C.计算f(5),函数f被调用的次数是6次 D.f(5)的返回值为16
14.我们在用Python进行数据分析的时候,经常会用到pandas库中的DataFrame,这是类似于( )的数据结构 ( )
A.一维表格 B.二维表格 C.三维表格 D.四维表格
15.使用列表模拟单向链表,链表中p节点的a[p][0]存储数据,a[p][1]存储其后继节点的指针。编写Python程序删除链表中所有的偶数项(头节点为该链表的第1项),部分代码如下:
p=head #head指向该链表的头节点
while p!=-1:
q=a[p][1] if (1) :
(2)
p=a[p][1]
上述程序段划线处可选语句为
①q!=-1 ②a[q][1]!=-1 ③a[q][1]=a[p][1] ④a[p][1]=a[q][1]
则(1)(2)处填入的语句依次为( )
A.①③ B.①④ C.②③ D.②④
16.程序代码如下:
age=float(input(“请输入年龄=”))
HRrest=float(input(“请输入安静心率=”))
gender=input(“请输入male或female:”)
n=220
else:
n=210
low=(n-age-HRrest)*0.6+HRrest
high=(n-age-HRrest)*0.8+HRrest
print(“最适宜运动心率是:”,low,”~”,high)
横线上应填入的内容是( )
A.if gender=male: B.if male==gender:
C.if gender==male: D.if gender==”male”:
17.使用列表lnk模拟链表结构,head为头指针,每个节点包括性别、身高和后续指针。原链表按先男生再女生升序排列(如图a所示),现要修改各节点的链接关系,使得链表按先女生再男生升序排列(如图b所示),实现该功能的代码如下:
lnk=[["男",178,1],["男",180,2],["男",185,3],["女",160,4],["女",172,5],["女",174,-1]]
head = 0
t = head
pre = cur = lnk[head][2]
while lnk[cur][2] ! = -1:
if lnk[cur][0] == "男":
pre = cur
cur = lnk[cur][2]
lnk[cur][2]=t
方框处应填入正确的代码为( )
A. B. C. D.
二、填空题
18.填空题:在Python中,使用 可以创建一个函数。
19.用python编写程序,实现一元二次方程式ax2+bx+c=0(a≠0)的求解。输入系数a、b、c的值,输出方程可能的解。
import math
a=int(input("a:"))
b=int(input("b:"))
c=int(input("c:"))
if ① :
X1=((-1)*b+sqrt(f(a,b,c)))/(2*a)
x2=((-1)*b-sqrt(f(a,b,c)))/(2*a)
print("x1=",x1,"x2=",x2)
else:
print(“该方程式无解!”)
请把上面程序划线①处的代码补充完整。
20.Python中读写文本文件的方法,其中打开用 把外存储器里的文本文件(.txt)打开;存储用 将内存中的数据存储到外存储器的文件中;关闭文件时一定要用 关闭文件。
21.小申编写了run.py文件用于实现登录模块的业务逻辑。请协助小申把左侧内容拖动至右侧对应的虚线框中,将程序编写完整。
(1)处对应的字母是
(2)处对应的字母是
22.Pygame自带了一个监听类循环,不断检查用户的操作,这个循环在程序运行过程期间持续工作。仔细阅读理解如下代码填写括号内容
while True:
for event in pygame.event.get(): # ( )
if event.type==pygame.QUIT: # ( )
sys.exit() #退出程序
if event.type==pygame.MOUSEBUTTONDOWN: # ( )
三、判断题
23.在Python中,表达式4/2的运算结果是2。( )
24.已经构建发布的模块可以直接使用。( )
25.在Python语言中,数据的输出是通过output()函数实现的。( )
26.Python语言的变量名要区分英文字母的大小写。( )
四、操作题
27.编写一个Python程序,功能为:输入关键字后,在书目清单列表中查找书名中包含关键字的书,并统计数量,然后在所有找到的书目中找出价格最贵的书。书目清单存储在列表book中,每本书包含三个内容:书名、作者和价格。程序运行示例如下图所示:
(1)观察上图的运行结果,如果希望在书目清单列表中查找书名中包含关键字的书,比较合适的方法是 (选填:“顺序查找”或“二分查找”)
(2)实现上述功能的Python程序如下,请在程序划线上填入合适的代码:
# 列表book中存储了书本的信息,列表内容略
n=len(book)
print("书目清单为:")
for i in range(0,n,3):
print(book[i:i+3])
keyword=input("请输入关键词:")
print("符合要求的书单有:")
count,maxprice,posi=0,0,-1
while i<=n-3:
if :
print(book[i:i+3])
count+=1
if maxprice<book[i+2]:
maxprice=book[i+2]
i=i+3
print("共找到",count,"本")
if posi==-1:
print("对不起,没有找到你要的书!")
else:
print("价格最贵是:",book[posi:posi+3])
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.B
【详解】本题考查Python基础。
选项A,abs(3−4)=abs(−1)=1
选项B,int(2*a-c/b)=int(2∗a−c/b=2∗3−5/4)=int(6−1.25)=4
选项C,math.sqrt(4)=2
选项D,a**2+b**2-c**2=9+16−25=0
故正确答案为:选项B。
2.B
【详解】本题考查程序分析。该程序功能,随机生成奇数赋值给列表a,不会生成偶数。故排除选项C。如果a[i-1]<a[i],则a[i]=a[i-1]。故不可能出现a[i-1]<a[i]结果,故排除选项A、D。故正确答案为选项B。
3.C
【详解】本题考查Python程序设计相关内容。“break”和“continue”在编程中都是用来控制循环的关键字,但它们的使用场景和效果有所不同:(1)使用场景。“continue”通常用于当循环中的某些条件被满足时,需要跳过当前循环,继续下一次循环的场景;“break”通常用于当循环中的某些条件被满足时,需要立即退出循环的场景。(2)效果。使用“continue”后,循环会立即跳到下一轮,不会执行本轮循环中“continue”后面的语句;使用“break”后,整个循环会立即结束,不论是否已经完成所有的循环。两个程序段均采用while循环,第一个使用break进行转向,第二个使用continue进行转向。使用break时,若n==2成立,则结束循环,所以第一个程序段输出结果为:4 3;使用continue时,若n==2成立,则结束本次循环,再去判断循环条件n>0是否成立,若成立,继续执行循环体,若不成立,结束循环,所以第二个程序段输出结果为:4 3 1 0。故本题答案是C选项。
4.A
【详解】本题主要考查Python库。WordCloud是优秀的词云展示第三方库 ,math库提供常用的数学函数,random提供常用的随机函数,turtle库用于绘图,故本题选A选项。
5.C
【详解】本题主要考查递归函数的应用。n=7,double_f(7)=double_f(5)*7=double_f(3)*5*7=double_f(1)*3*5*7=1*3*5*7=105,故本题选C选项。
6.A
【详解】本题主要考查Python循环结构。a=1,b=1,变量i的范围是从3~6,即循环4次,第一次:a=b=1,b=a+b=1+1=2;第二次:a=b=2,b=a+b=3;第三次:a=b=3,b=a+b=5;第四次:a=b=5,b=a+b=8,循环结束,故输出a的值为5,故本题选A选项。
7.B
【详解】本题考查赋值语句。赋值语句 x+y=z 不合法,因为在赋值语句中应该使用等号(=)将右侧的表达式的值赋给左侧的变量,x+y不是合法的变量。故答案为B选项。
8.B
【详解】本题主要考查Python字符串的运算。"1"是字符型数据,因此s="1"+"1"="11",故本题选B选项。
9.D
【详解】本题考查Python程序设计相关内容。分析程序段可知,其功能是将输入字符串转换为多个表达式并用“,”隔开后逆序连接。若遇到数字字符按照“x=x*10+int(ch)”转换为十进制数;若遇到字母,则按照“s=ch+"="+str(x)+","+s”将字母放在赋值号左边,十进制数再转换为字符串放在赋值号右边后加上“,”作为分隔,再放在s的前面。推知,先转换的在s尾部,最后转换的在s前面。“2a03b145c1”转换后结果为:“c=145,b=3,a=2,”。故本题答案是D选项。
10.B
【详解】本题考查的是python绘制sin(x)。观察图形可知是线形图,图例为“sin(x)”,plt.plot(x,y,″g--″,label=″sin(x)″),其中x是横坐标值,y是纵坐标值,“g--”是虚线,label=“sin(x)”是定义图例名称,故选项B正确。
11.B
【详解】本题考查的是列表相关知识。列表中的元素索引可以为负值,负值表示从末尾开始的位置,故选项A说法错误;列表中元素的值可以修改,选项B说法正确;列表中的元素可以是列表类型,选项C说法错误;列表中元素的数据类型可以不一样的,故选项D说法错误。
12.D
【详解】本题主要考查Python程序的执行。该程序实现统计字符串s中每个字符出现的个数,用字典dic统计,因此程序执行后dic={'1': 2, '2': 4, '3': 1},则dic["2"]=4,故本题选D选项。
13.D
【详解】本题主要考查递归算法。该函数采用了递归算法,时间复杂度是O(n),f(5)=f(4)*f(2)=f(3)*f(1)*f(2)=f(2)*f(0)*f(1)*f(2)=2*2*2*2=16,因此计算f(5),函数f被调用的次数是7次,故本题选D选项。
14.B
【详解】本题考查的是pandas库。 pandas库中的DataFrame是一个二维的、大小可变的、成分混合的、具有标签化坐标轴(行和列)的表数据结构。DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。故本题应选B。
15.B
【详解】本题主要考查链表数据结构及Python程序实现。头节点为该链表的第1项,p的初值指向head,q为p的下一个节点,因此每次删除q节点即可,删除之前需要判断q是否为-1,故if判断条件是q!=-1,删除q节点的方法是,p的后继节点指向q的后继节点,即a[p][1]=a[q][1],选项B符合题意,故选B。
16.D
【详解】本题考查的是Python选择语句。由n=220可知输入的是男性,male表示男性是字符串类型必须加上双引号,==表示相等,=表示赋值,故横线上应填入的内容是:if gender==”male”:。选项D正确。
17.C
【详解】本题考查Python程序。初始化链表:lnk是一个列表,模拟了链表结构,每个节点包括性别、身高和后续指针。head为头指针,t初始化为头指针指向的下一个节点,pre和cur初始化为链表的第二个节点。遍历链表:循环遍历链表,直到找到第一个男生节点,更新pre和cur的指针,pre始终指向上一个节点,cur指向当前节点。修改指针:一旦找到第一个男生节点,将当前节点的后续指针指向头指针,调整链表结构。这段代码的目的是在遍历链表时,找到第一个男生节点,并进行链表重排。判断条件t==head:如果t等于head,意味着遍历开始时,链表的第一个节点为男生。将head更新为当前节点cur(即第一个男生节点)。将上一个节点pre的后续指针设置为-1,表示新的链表结尾。否则cur=lnk[cur][2]:如果t不等于head,意味着链表的第一个节点为女生,继续更新当前节点cur。最终,链表将按女生节点在前、男生节点在后的顺序排列。故答案为:C。
18.def
【详解】本题考查Python函数的创建。在Python中,使用def关键字可以创建一个函数。函数定义的基本语法是def 函数名(参数):,然后在下一行缩进的代码块中编写函数体。
19.f(a,b,c)〉=0
【详解】本题考查Python程序设计相关内容。一元二次方程的求解:若b*b-4*a*c>0成立,表明方程有两个不等实根;若b*b-4*a*c==0成立,表明方程有两个相等实根;若b*b-4*a*c<0成立,表明方程无解;由给定程序段知,b*b-4*a*c的值通过调用函数f(a,b,c)获得,故本题答案是:f(a,b,c)〉=0。
20. open函数 write方法 close方法
【详解】本题考查Python相关知识。Python中读写文本文件的方法,其中打开用open函数把外存储器里的文本文件(.txt)打开;存储用write方法将内存中的数据存储到外存储器的文件中;关闭文件时一定要用close方法关闭文件。
21. B A
【详解】本题主要考查Flask框架的应用。导入模块使用import关键词,(1)处填import sqlite3。(2)处创建应用,填app=Flask(_name_)。
22. ①监听并获取事件列表 ②Quit事件 ③侦听到鼠标点击事件
【详解】本题考查的是Python中的Pygame模块。pygame.event.get()是监获取事件列表,pygame.QUIT是Quit事件,pygame.MOUSEBUTTONDOWN是侦听到鼠标点击事件。
23.错误
【详解】本题考查Python表达式相关内容。除法(/):除法运算符返回两个数字相除后的商的精确值,无论两个数字是什么类型,返回的结果都是一个浮点数(小数)。4/2-->2.0。故本题答案是:错误。
24.错误
【详解】本题考查Python模块的导入。已经构建发布的模块不可以直接使用,需要使用import关键字进行导入后才可以使用,故表述错误。
25.错误
【详解】本题考查的知识点是Python语言中的输出语句。在Python语言中,实现数据的输出是使用print函数,故答案为错误。
26.正确
【详解】本题考查Python。Python语言的变量名是区分英文字母大小写的,这意味着在Python中,变量名var和Var被视为两个不同的变量。故说法正确。
27. 顺序查找 i=0 keyword in book[i] posi=i
【详解】本题主要考查Python程序的综合应用。①如果希望在书目清单列表中查找书名中包含关键字的书,比较合适的方法是顺序查找。使用二分查找的前提是元素是有序的,而书目清单不是有序的。②此处初始化变量i的值,变量i是列表book的下标,从0开始,故此处填i=0。③列表book中存储了书本的信息,此处查找书名中包含关键字的书是否在列表book[i]中,故if判断条件是keyword in book[i]。④变量posi保存价格最贵的书的下标索引开始的位置,由上一条语句“maxprice=book[i+2]”更新完最贵价格maxprice后,此处需要更新posi=i。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$