内容正文:
浙教版(2019)必修一3.2Python语言程序设计同步作业
学校:___________姓名:___________班级:___________考号:___________
一、选择题
1.某次世界杯数据存在文件“sjb.xlsx”中,部分数据如图所示。编写Python程序,统计同个组别中,进球数最多的 5 个球队,并排序。
import pandas as pd
df=pd.read_excel("sjb.xlsx")
print(df_s[0:5])
方框中代码由下列语句中的部分语句组成:
①df_g=df.groupby('组别',as_index=False).max()
②df_g=df_s.groupby('进球',as_index=False).max()
③df_s=df.sort_values('进球',ascending=True)
④df_s=df_g.sort_values('进球',ascending=False)
要实现上述功能,下列选项正确的是( )
A.①④ B.①③ C.②④ D.③②
2.用Python编写如下自定义函数程序段,其功能是删除无序链表(元素个数大于等于2)中的重复元素。
def dele(a,head):
pre=head;p=a[head][1]
while p!=-1:
q=head
flag =False
while (1) :
if a[q][0]==a[p][0]:
a[pre][1]=a[p][1]
p=a[p][1]
f (2)
break
q=a[q][1]
if not flag:
pre=p
p=a[p][1]
方框处(1),(2)的语句可从下列选项中选择
①q!=p ②q!=-1 ③flag= True ④flag =False
则方框处(1),(2)填入的正确代码依次为( )
A.①③ B.②③ C.①④ D.②④
3.数组元素 a[0]至a[n-1]依次存放着n个数据,现需要将元素 a[n-1]插入在下标为x(0≤x<n-1)的位置,例如:n为5,数组 a 为[0,3,4,6,7],x为2,插入操作后a为[0,3,7,4,6]。为实现此功能,某同学编写Python程序如下:
temp=a[n-1]
for i in range(n-2,x-1,-1):
a[i]=a[i-1]
a[i]=temp
此程序不能正确实现上述添加功能,若a的值是[0,3,4,6,7],执行该程序段后输出结果是( )
A.[0, 3, 6, 4, 7] B.[0, 3, 3, 4, 7] C.[0, 3, 7, 4, 7] D.[0, 4, 3, 4, 7]
4.有如下 Python 程序段:
st=[0]*10
top=-1
num=int(input("请输入一个整数:"))
while top+=1
st[top]=num%7
num=num//7
while top>-1:
print(st[top],end="")
top-=1
若num的值是 777,执行该程序段后,下列说法正确的是( )
A.st[0]的值是2 B.将加框处语句改为num!=0影响程序的运行结果
C.top 的值是0 D.st[2]的值是1
5.有如下程序段:
import random
dic={1:1,2:4,3:9,4:16,5:25}
s=0
for i in range(3):
r= random. randint(1,5)
if r%2 == 0:
s=s+dic[r]%2
else:
s=s+dic[r]%3
print(s)
执行该程序段后,s的值不可能是( )
A.1 B.2 C.3 D.4
6.有如下Python程序段:
lst1=[2,2,9,7,7,8,6,3,3,3]
lst2=[]
for i in lst1:
if i not in lst2:
lst2. append(i) #在列表lst2末尾添加元素 i
运行后lst2中的内容是( )
A.[2,7,3] B.[9,8,6]
C.[2,2,9,7,7,8,6,3,3,3] D.[2,9,7,8,6,3]
7.教室里的学生最舒适的温度范围是tmin~tmax(包括tmin、tmax), 现要实现温度t正常、非正常(偏高或偏低)时,将对应的状态sta的值设为0和1(0为正常,1为偏低或偏高)。下列Python程序段不正确的是( )
A.if t>tmax:
sta=1elif t<tmin:
sta=1else:
sta=0
B.if not(tmin=<t<=tmax):
sta=1 else:
sta=0
C.if t<tmin:
sta=1 if t>tmax:
sta=1 else:
sta=0
D.sta=0
if t<tmin:
sta=1if t>tmax:
sta=1
A.A B.B C.C D.D
8.有如下 Python程序段:
s1="ABC";s2="PYATBHONC"
i=0;j=0;s3=""
while i< len(s1) and j< len(s2):
if s1[i]==s2[j]:
i+=1
else:
s3+=s2[j]
j+=1
执行该程序段后,变量s3的值是( )
A.PYTHON B.PYTO C.PYAHO D.PYT0N
9.有如下 Python程序段:
a=[68,88,76,60,98,100,64,85,99,59]
b=[0]*10;c=[0]*10;s=""
for i in range(1,10):
b[i]=abs(a[i]-a[i-1])
c[b[i]//10]+=1
for i in range(9):
if c[i]>0:
s=s+" "+str(c[i])
print(s)
执行该程序段,输出结果为( )
A.2 3 2 1 1 B.2 3 2 2 1 C.1 3 2 2 1 D.1 3 2 1 2
10.有如下 python程序段:
s1="4+6+12+16"
sum=0
for i in range(len(s1)):
if s1[i]=="+":
sum+=t
else:
t=int(s1[i])
程序运行后sum的( )
A.8 B.38 C.22 D.12
11.某班级组建研究性学习小组,小组成员的分组情况以及学员成绩存储在字典students 和列表scores 中。students={"第一组":["小红","小明","小张"],"第二组":["小黄","小霞","小斌"], "第三组":["小蓝","小华","小诚"]},scores=[{"小红":90,"小明":80,"小张":75},{"小黄":86,"小霞":79,"小斌":89},{"小蓝":67,"小华":90,"小诚":77}],下面说法不正确的是( )
A.要访问第二组第1位学员姓名的表达式为students["第二组"][1]
B.要访问小明的学习成绩的表达式为scores[0]["小明"]
C.scores[0]["小红"]+scores[0]["小明"]+scores[0]["小张"]表达式的值为245
D.修改小黄的学习成绩为99分的表达式为 scores[1]["小黄"]=99
12.生成2位能被3整除的随机整数的python表达式是( )
A.int(random.random()*90+10) B.random.randint(0,29)*3+12
C.int(random.random()*88+12) D.random.randint(0,30)*3+12
13.运行以下Python程序段后,输入字符串"5x",则输出的结果为( )
s=input()
k=int(s[0])
c=s[-1]
m=ord(c)
d=chr((m-ord('a')+k)%26+ord('a')) #字符'a'的 ASCII 码值为 97
print(d)
A.t B.b C.z D.c
14.运行以下Python程序段后,输出的结果为( )
lst=['1','a','2','b','3','c','4','d']
lst1=lst[::-2]
lst2=lst[2::2]
print(lst1[int(lst2[1])-1])
A.a B.b C.c D.d
15.目前国际上有多种条形码编码方式,下图为我国普遍采用的EAN13条形码,这种条形码由13位数字组成,其中第4~7位表示厂商代码。若用字符串变量s存储条形码,下列Python表达式中能提取出厂商代码的是( )
A.s[4:7] B.s[3:7] C.s[3:6] D.s[-10:-7]
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.A
【详解】本题考查Python程序。首先,我们需要按组别对数据进行分组,并找到每组中进球数的最大值。选项①使用df.groupby('组别',as_index=False).max()可以正确地按组别进行分组并获取最大值,这一步骤是关键且正确的。接下来,我们需要对获取到的结果按照进球数进行排序,以找到进球数最多的前5个球队。选项④df_g.sort_values('进球',ascending=False)能够实现对分组后的结果按进球数降序排序,从而得到我们想要的结果。选项②按“进球”分组是错误的方向,我们要按组别来分析。选项③的排序是升序排序,不符合要求我们的是进球数最多的情况,应该是降序排序。故答案为:A。
2.A
【详解】本题考查Python程序设计及单链表相关内容。内层while循环实现一一比较节点q和p,因此循环条件是q!=p;代码使用了一个标志变量flag(初始值设置为:False)来表明是否有重复数据,若a[q][0]==a[p][0]成立,表明有重复数据,flag应设置为True。故本题答案是A选项。
3.C
【详解】本题考查Python程序设计相关内容。结合题目内容,分析程序段,若a的值是[0,3,4,6,7],n为5,x为2,执行过程:循环体共执行两次,(1)i=3,a[3]=4;(2)i=2,a[2]=3。循环结束时,i值为2,执行a[i]=temp,即a[2]=7。所以程序段执行完毕后,a为[0, 3, 7, 4, 7],故本题答案是C选项。
4.D
【详解】本题考查程序设计相关内容。分析程序段,第一个循环运行如图所示:,所以st[0]的值是0,st[2]的值是1,A选项错误,D选项正确。加框处语句是循环条件,循环将在num等于0时结束,改为num!=0不会影响程序的运行结果,B选项错误。第二个循环是将栈st中元素出栈,出栈序列为:2 1 6 0,栈空时,top值为-1,C选项错误。故本题答案是D选项。
5.D
【详解】本题考查Python程序。随机数r取值范围是1到5,当r为偶数时,计算dic[r]%2,当r为奇数时,计算dic[r]%3。D选项,计算可得,即使三次循环中r都取到能使结果最大化的情况,也不可能得到4,所以s的值不可能是4。故答案为:D。
6.D
【详解】本题考查Python程序。程序通过遍历列表lst1,将不在列表lst2中的元素添加到lst2中,这样就可以去除lst1中重复的元素。lst1中的元素依次处理后,lst2最终得到的元素为[2,9,7,8,6,3],所以答案选D。
7.C
【详解】本题考查Python程序。C选项中,当t小于tmin时sta赋值为1,但是当t大于tmax时,无论之前sta是否为1,都会再次将sta赋值为1,不能正确区分温度偏高和偏低以及正常的情况。故答案为:C。
8.A
【详解】本题考查Python程序。程序段的主要逻辑是:初始化字符串s1为"ABC",字符串s2为"PYATBHONC"。初始化两个索引变量i和j为0,以及一个空字符串s3。通过一个while循环,遍历s2中的每个字符,并检查是否与s1中的当前字符相等。如果s2[j]等于s1[i],则递增i以比较s1的下一个字符。如果s2[j]不等于s1[i],则将s2[j]添加到s3中。无论是否匹配,j始终递增以比较s2的下一个字符。通过上述逻辑,s3中将包含s2中所有未在s1中找到的字符。我们具体分析每次循环的执行情况:第一次循环:s1[0]='A',s2[0]='P',不匹配,s3='P',j增1。第二次循环:s1[0]='A',s2[1]='Y',不匹配,s3='PY',j增1。第三次循环:s1[0]='A',s2[2]='A',匹配,i增1,j增1。第四次循环:s1[1]='B',s2[3]='T',不匹配,s3='PYT',j增1。第五次循环:s1[1]='B',s2[4]='B',匹配,i增1,j增1。第六次循环:s1[2]='C',s2[5]='H',不匹配,s3='PYTH',j增1。第七次循环:s1[2]='C',s2[6]='O',不匹配,s3='PYTHO',j增1。第八次循环:s1[2]='C',s2[7]='N',不匹配,s3='PYTHON',j增1。第九次循环:s1[2]='C',s2[8]='C',匹配,i增1,j增1。循环结束后,s3的值为“PYTHON”。故答案为:A。
9.C
【详解】本题考查Python程序设计相关内容。分析程序段,第一个循环运行过程如图所示:,此时,b为[0, 20, 12, 16, 38, 2, 36, 21, 14, 40],c为[1, 3, 2, 2, 1, 0, 0, 0, 0, 0]。第二个循环运行过程如图所示:。执行该程序段,输出结果为:1 3 2 2 1,故本题答案是C选项。
10.D
【详解】本题考查Python程序。程序首先定义了字符串s1和初始值为0的sum。然后通过循环遍历字符串s1的每个字符。当遇到“+”时,就将当前的t值累加到sum中,否则就将字符转换为整数赋值给t。第一次循环时t为4,遇到“+”后sum为4;第二次循环t为6,遇到“+”后sum为10;第三次循环t为2,遇到“+”后sum为12,因此最终的sum为12,故答案为:D。
11.A
【详解】本题考查Python字典操作相关内容。在Python中,字典是一种数据类型,用于存储键值对。字典中的键必须是唯一的,但值不必。值可以是任何类型,但键必须是不可变的,如字符串,数字,或者元组。字典的每个键值key:value对用冒号:分割,每个键值对之间用逗号,分割,整个字典包括在花括号{}中。A选项,第二组第1位学员姓名的表达式为students["第二组"][0],选项错误。B选项,scores中存储了学生成绩,访问小明的学习成绩的表达式为scores[0]["小明"],选项正确。C选项,scores[0]["小红"]+scores[0]["小明"]+scores[0]["小张"]-->90+80+75-->245,选项正确。D选项,修改小黄的学习成绩为99分的表达式为 scores[1]["小黄"]=99,选项正确。故本题答案是A选项。
12.B
【详解】本题考查Python表达式。A选项错误,生成的是一个10到99之间的随机整数,并不一定能被3整除。B选项正确,生成的是一个0到29之间的随机整数,乘以3后得到0到87之间的随机整数,再加上12得到12到99之间的随机整数,这样生成的数一定能被3整除。C选项错误,生成的是一个12到99之间的随机整数,并不一定能被3整除。D选项错误,生成的是一个0到30之间的随机整数,乘以3后得到0到90之间的随机整数,再加上12得到12到102之间的随机整数,超出了两位数的范围。故答案为:B。
13.D
【详解】本题考查Python程序设计相关内容。ord()函数是Python的内置函数的一种。它可以对应一个长度为1的字符返回相对应的Unicode值或者八进制的ASCII值。分析程序段,s值为"5x",k值为5,c值为'x',m值为120,则chr((m-ord('a')+k)%26+ord('a'))-->chr((120-97+5)%26+97)-->chr(99)-->'c'。故本题答案是D选项。
14.B
【详解】本题考查Python程序设计相关内容。分析程序段,由列表及切片相关知识推知:lst1值为['d', 'c', 'b', 'a'],lst2值为['2', '3', '4'],lst2[1]值为'3',则int(lst2[1])-1-->int('3')-1-->2,所以lst1[int(lst2[1])-1]-->lst1[2]为 'b',故本题答案是B选项。
15.B
【详解】本题考查Python切片相关内容。切片操作基本表达式:object[start_index:end_index:step],step:正负数均可,其绝对值大小决定了切取数据时的“步长”,而正负号决定了“切取方向”,正表示“从左往右”取值,负表示“从右往左”取值。start_index:表示起始索引(包含该索引对应值),该参数省略时,表示从对象“端点”开始取值。end_index:表示终止索引(不包含该索引对应值),该参数省略时,表示一直取到数据“端点”。第4~7位表示厂商代码,其切片表示为:s[3:7],故本题答案是B选项。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$