1、【编程】python二级模拟试卷2一、选择题1在Python中自定义函数需要什么关键字放在函数开始( )AfunctionBdefCdefineDvoid2运行下列Python程序,输出结果为True,则空白处应为( )a=15b=46if_: print(True)else:print(Flase)Aa=bBabCa=0: b=a+2 Else: b=a-2 print(b)A6B8C10D1213下列不是Python中所有循环必须包含的是( )。A冒号B循环次数C循环体D缩进14在Python中,已知a=3,b=5,运行下列程序段后,a和b的值为a = a * bb = a / ba =
2、a / bAa=3 b=5Ba=15 b=3Ca=5 b=5Da=5 b=315在Python中,若x=10, y=20,下面程序段执行后,变量x、y的值分别是( )x=yy=xA10、 10B10、20C20、 20D20、 10二、程序填空16某餐馆近期推出“消费1000元及以上享受8折优惠,1000元以下享受每满100减15优惠”的活动。以下Python程序段实现了生成顾客消费清单的功能,请补全处代码。def gs(n): #字符串长度统一if len(n)=5:n=_ #取字符串的前5个字符else:n=n+ *(5-len(n)return nr=1000;x=100;y=15;z=
3、0.8 #从系统中分别获取消费额度、满和减以及打折的数值dis=红烧排骨,香炸刀鱼,虾仁,菜心,米饭 #某顾客所点菜品名称num=1,1,1,1,3 #某顾客所点菜品数量mon=46,45,68,16,1 #某顾客所点菜品单价print(菜品名称,数量,小计)_for i in range(len(dis):print(gs(disi),numi, ,numi*moni)s=s+numi*moniif s=r:total=s*zelse:_print(消费合计:,s)print(应收现金:,total)17(项目情境)递归就是自己调用自己,它是设计和描述算法的一种有力工具,常常用来解决比较复杂
4、的问题。为求解规模为N的问题,设法将它分解成规模较小的问题,从小问题的解容易构造出大问题的解,并且这些规模问题较小的问题也能采用同样的分解方法,分解成规模更小的问题,并能从这些更小问题的解构造出规模较大问题的解。一般情况下,规模N=1时,问题的解是已知的。已知:从1到n的连续自然数相乘的积、叫做阶乘、用符号n!表示。如5!=12345,规定0!=1。我们用递归算法可以较容易求n的阶乘。求n的阶乘算法可以描述如下:n!=n*(n-1)! (n-1)!=(n-1)*(n-2)! (n-2)!=(n-2)*(n-3)!2!=2*1! 1!=0! 0!=1如果把n!写成函数形式,即f(n),f(n)=
5、n*f(n-1)。如f(5)就是表示5!,求5!的过程可以写成如下形式:f(5)=5*f(4) f(4)=4*f(3) f(3)=3*f(2) f(2)=2*f(1) f(1)=1(问题求解)在python中用递归算法求1!+2!+n!(n的值为整数,从键盘输入)。请阅读如下程序,在空白处填写适当的表达式或语句,使程序完整。def f(n): if n=0: return 1 else: return _s=0n=int(input(请输入n:)for i in_: s=_print(s)18小强开展网上直播售货,为此购买了以下直播硬件设备:手机耳机自拍杆数码照相机背景画无线路由器请回答下列问
6、题:(1)在购买的直播硬件设备中,属于模数转换的设备是_(多选,填序号)(2)小强选择借助某著名直播平台售货,根据直播平台要求,直播画面是1080*1920像素、24位真彩色、帧频为25fps,视频压缩比为100:1,在不考虑视频传输优化的情况下,问小强家目前10Mbps的宽带_(选填:能/不能)满足直播要求。请列式证明_。(3)小强将某一天的售货情况从平台导出,保存为文件shqk.xlsx数据已按“流水号”升序排序,如图a所示。流水号为2019030602的售货记录中,已成交的商品类别数是_(填写数字),该流水号的总利润是_元(填写数字,保留1位小数)图a(4)为了快速了解各类别商品的利润,
7、小强用python编程处理。处理的结果界面如图b所示。部分代码如下,请在划线处填写合适的代码。图bimport pandas as pdimport numpy as npimport matplotlib. pyplot as pltdetail=pDread_excel (_)print(detail)for i in range(len(detail:):if detail成交与否i=1:detaillirun=_dg=detai1类别, lirun. groupby(by=类别)print(“总利润”,detaillirun.sum()数据可视化代码略19某字符转置算法描述如下:将字符
8、串(均为大写字符)s依次转换为相对应的数值(字符AZ对应数值126);转换后的数值以K个数据为一段,将n个待处理的数据依次分割成若干段(最后一段不足部分用0来补充);每一段中K个数据与K*K转置矩阵进行乘法运算;将乘法运算得到的每一个结果值除以26求余数,依次转换成相应字符(数值126对应字符AZ),最后按原始字符串长度输出。乘法运算规则如下:第i个元素c(i)=第j个元素a(j)*转置矩阵第j行第i个元素b(t)的乘积之和(其中j=1,2K)例如:字符串s=PYTHON,区块大小K=4,的转置过程如下:(1)根据算法描述,上述示例中,字符“N”的相乘结果(即图中()处)为_。(2)请在划线处
9、填入合适代码。Private Sub Commandl_Click()Dim a(1 To 100)As Integer 存储字符串,长度不超过100个字符Dim b(1 To 100)As Integer 存储转置矩阵,长度不超过 10*10Dim c(1 To 100)As LongDim s As String, tmp As StringDim k As Integer, t As Integer, i As Integer, j As IntegerDim n As Integer, m As Integer, lens As Integers=Textl. Text 在 Textl
10、 中输入原始字符串k=Val(Text 2.Text) 在 Text 2 中输入区块大小KRandomizeFor i=1 To k2b(i)=Int(Rnd*9)1tmp=tmp十Str(b(i)If i Mod k=0 ThenList 2. AddItem tmptmp= .End IfNext ilens=Len(s):n=lensFor i=1 To ntmp=Mid(s,i,1)_Listl. AddItem Str(a(i)Next iDo While n Mod k0n=n十1a(n)=0Listl. AddItem Str(a(n)LoopFor i=1 To nm=(i1)
11、Mod k+1t=1Forj= _c(i)=a(j) * b(m-1) * k+t)+c(i)t=t1Next jNext i For i=1 To nList 3. AddItem Str(c(i)Next is=For i=1 To lens_s=s+Chr(t+64)Next iText 3.Text=s 在Text 3 中输出转置后的字符串End Sub20求1100内奇数之和(使用range函数)21编写程序。信息社团的三个同学和Bruce一起做游戏,他们的游戏规则很简单,从1开始依次报数,每当一个数能被7整除或者十位是7就要跳过这个数,现在给出一个数N,请输入从1到N(包含N)中要
12、跳过的数。【参考答案】*试卷处理标记,请不要删除一、选择题1B【详解】本题主要考查Python函数。自定义函数的格式是,def 函数名(参数):语句或语句组 return 返回值,故在Python中自定义函数需要def关键字放在函数开始,故本题选B选解析:B【详解】本题主要考查Python函数。自定义函数的格式是,def 函数名(参数):语句或语句组 return 返回值,故在Python中自定义函数需要def关键字放在函数开始,故本题选B选项。2C【详解】本题考查Python程序调试ab时,执行print(True)。故本题选C选项解析:C【详解】本题考查Python程序调试a=0,执行b=
13、a+2=8,故在Python中运行后,b的值是8,故本题选B选项。解析:B【详解】本题主要考查Python程序的执行。a=6,满足a=0,执行b=a+2=8,故在Python中运行后,b的值是8,故本题选B选项。13B【详解】本题主要考查Python循环结构。Python中所有循环必须包含的是冒号、循环体、缩进。不是Python中所有循环必须包含的是循环次数,可能是while循环条件,故本题选B选项。解析:B【详解】本题主要考查Python循环结构。Python中所有循环必须包含的是冒号、循环体、缩进。不是Python中所有循环必须包含的是循环次数,可能是while循环条件,故本题选B选项。1
14、4D【详解】本题主要考查Python表达式的运行。a=3,b=5,a = a * b=15,b = a / b=15/5=3,a = a / b=15/3=5,故运行下列程序段后,a和b的解析:D【详解】本题主要考查Python表达式的运行。a=3,b=5,a = a * b=15,b = a / b=15/5=3,a = a / b=15/3=5,故运行下列程序段后,a和b的值为a=5 b=3,故本题选D选项。15C【详解】本题主要考查Python程序的执行。x=10,y=20,x=y=20,y=x=20,故程序段执行后,变量x、y的值分别是20、 20,故本题选C选项。解析:C【详解】本题
15、主要考查Python程序的执行。x=10,y=20,x=y=20,y=x=20,故程序段执行后,变量x、y的值分别是20、 20,故本题选C选项。二、程序填空16n0:5 s=0 total=s-s/x*y 【详解】本题主要考查Python程序的执行与调试。此处通过条件分支结构取字符串n的前5个字符,当len(n)=5时,取n= n0:5,即索引为0、1、2、3、4,故填n0:5。用变量s统计消费合计,初值为0,故填s=0。此处else部分处理1000元以下享受每满100减15优惠。应付金额用total统计,变量r保存消费额度,x和y分别是满和减,变量s是消费合计,故填total=s-s/x*
16、y。17n*f(n-1) range(1,n+1) s+f(i) 【详解】本题主要考查Python程序的执行与调试。此处是定义递归函数f(n),由题干,当n=0时,返回1,否则返回n*f(n-1),故此处填n*f(n-1)。用递归算法求1!+2!+n!,故变量i的范围应是1n,for i in range(1,n+1)表示i的范围是1,n,故此处填range(1,n+1)。循环体实现累加,将每一项阶乘f(i)加到s中,故此处填s+f(i)。18 不能 1080*1920*24*25*1/1024/1024/10010.8Mbps,大于网络传输带宽10Mbps,所以不能满足直播要求。 1 2或2
17、.0 shqk. xlsx或“shqk. xlsx” (detai1售价-detail进价)*detai1数量 【详解】本题主要考查Python程序设计相关知识点。手机、数码照相机均属于模数转换的设备,可以实现模拟信号与数字信号的转换,故填。根据直播平台要求,直播画面是1080*1920像素、24位真彩色、帧频为25fps,视频压缩比为100:1,在不考虑视频传输优化的情况下,小强家目前10Mbps的宽带不能满足直播要求。视频存储容量=像素*颜色深度*帧频*时长,1080*1920*24*25*1/1024/1024/10010.8Mbps,大于网络传输带宽10Mbps,所以不能满足直播要求。
18、由图可知,1表示成交,0表示未成交,流水号为2019030602的售货记录中,已成交的商品类别数是1,都是饮料(即货号17和货号5)。该流水号的总利润是(2.9-2.5)*3+(1-0.8)*4=2.0,故填2或2.0。该表格文件名是shqk.xlsx,此处读入该表格文件,故填shqk. xlsx或“shqk. xlsx”。利润=(售价-进价)*数量,数据已经读到detail中,故此处填(detai1售价-detail进价)*detai1数量。19a(i)=Asc(tmp)-64或a(i)=Asc(tmp)-Asc(A)+1 im+1To im+k t=(c(i)1) Mod 261 【详解】
19、本题考查乘法运算规则的理解以及转置矩阵中行列数据的读取。(1)根据算法描述,图中(1)处的值为1551410209=89。(2)程序先随机生成数组b,其下标为1到kk,并以行列的形式显示在列表框list2中(即为转置矩阵),然后读取大写字符串s中的每个字符,并将每个字符转换成相应字母表中的位置存储在数组a中。代码处为字符转成相应的字母表中位置值,下方代码将a(i)输出在列表框listl中,故此处应获取a(i)的值。根据题干描述“字符AZ对应数值126”,此处为将tmp获取的字符通过Asc函数进行转换,语句为“a(i)=Asc(tmp)-64”,还可以是“a(i)=Asc(tmp)-Asc(A)
20、1”。代码处为循环变量j的取值范围,根据乘法规则,变量j的范围是每一段中的1到k之间的值,需要获取每一段的起始位置下标,结合上文得到的m值,可得循环变量的范围是“i-m1 To i-m十k”。代码处是将计算结果c(i)按原长度转换成相应大写字符,计算结果要求除以26取余,若直接写成c(i)Mod 26,则导致数值26的结果为0,因此需要先减1,Mod后再加1这样的处理技巧,因此答案为“(c(i)-1)Mod 261”。20Sum=0for i in range(1,101,2):Sum+=iprint(Sum)【详解】本题主要考查Python程序设计。求1100内奇数之和,用Sum来求和,变量i的范围是1到100,每次递增2,可以使用range函数,具体代码如下:Sum=0for i in range(1,101,2):Sum+=iprint(Sum)21N=int(input(请输入一个数)for i in range(1,N+1):if(i%7=0 or i/10=7):print(i,end= )【详解】本题考查Python语言编程解决实际问题。本题要找到能被7整除或者十位是7的数,并且这两个条件是或的关系,其关键代码为i%7=0 or i/10=7。程序运行代码详见下图: