资源简介 第四章 程序设计基础 单元测试一、选择题1.在Python语言中,运行下面程序后,变量m的值为( )a=8b=16c=32if a>b: m=aelse: m=bif c>m: m=cprint(m)A.1 B.8 C.16 D.322.有如下Python程序段:import randoms="12345678"g=""for i in range(3): n=len(s) pos=random. randint(1,n-1) g+=s[pos] s=s[0:pos]+s[pos+1:n]print(g)在该程序段执行时,变量g的值可能为( )A."542" B."138" C."336" D."15"3.某Python程序段代码如下,与该程序段功能等价的是( ))if x>90: y=x*0.5else: y=x*0.9A.if x>90: y=x*0.5 y=x*0.9 B.if x<90: y=x*0.9 else: y=x*0.5C.y=x*0.9 if x>90: y=x*0.5 D.if x>90: y=x*0.5 if x<90: y=x*0.9A.A B.B C.C D.D4.若x是整型变量,下列选项中,与表达式not(x>=0 and x<8)含义相同的是( )A.x<0 and x>=8 B.x<0 or x>=8 C.x>=0 or x<8 D.not x>=0 and not x<85.下列语句用于计算s=1+2+5+8+11+…+26的结果并输出,则range函数的各个参数为s=1for i in range( ): s=s+iprint(s)A.1,26,3 B.1,27,3 C.2,26,3 D.2,27,36.已知a="012345",b=["012",3,4,5],c={0:1,2:4,3:5},下列语句执行完毕后,s的值为5的是( )A.s=0 for i in a[5]: s=s+1 B.s=0 for i in range(b[2]): s=s+1C.s=0 while s<=c[2]: s=s+1 D.s=0 while s>c[3]: s=s+1A.A B.B C.C D.D7.一个班的学生排成一列,从第一位同学开始按1-6循环报数,能正确表示第n位同学所报数字的Python表达式是( )A.n%6 B.n C.(n-1)%6+1 D.(n+1)%6-18.某Python程序如下:s="Dijob 2023"s1=""for i in range(0,len(s)): c=s[i] if"a"<=c<="z" or "A"<=c<="Z": s1=s1+chr(ord(c)-1) else: s1=c+s1print(s1)程序运行后,输出的结果是( )A.China 2023 B.3202 China C.2023 China D.China 32029.a="345",若要构造其回文数b为"34543",以下语句无法实现的是( )A.b=a+a[-2:-4:-1] B.b=int(a)*100+int(a[1::-1])C.b=a+a[1]+a[0] D.b=(a[0]+a[1]+a[2])*210.某python程序如下,程序运行完后,输出x的值是( )x=0for i in range(1,11,2):x+=iprint(x)A.9 B.16 C.25 D.3611.有如下Python程序,其功能为删除无序链表(元素个数大于等于2)中的重复元素。def dele(a, head):pre=head; p=a[head][1]while p!=-1:q=headflag=Falsewhile :if a[q][0]==a[p][0]: p=a[p][1]flag=Truebreakq=a[q][1]if not flag:pre=p;p=a[p][1]a=[[0, 3], [1, 2], [1, 4], [0, 1], [0, 5], [2, -1]]dele(a, 0)①q!=-1 ②q!=p ③a[pre][1]=a[p][1] ④a[pre][1]=a[q][1]方框中填入的正确代码依次为( )A.②④ B.②③ C.①④ D.①③12.列表d有n个整型元素,输出列表中最长连续递增序列的长度。小明编写的Python程序段如下:k=1; lmax=1; n=len(d)for i in range(1, n):if d[i]>d[i-1]:k+=1else:if k>lmax:1max=kk=1print(lmax)该程序段在某些情况下无法得到符合题意的结果,下列4组数据中能测试出这一问题的是( )A.[1, 4, 5, 1, 2] B.[1, 2, 3, 4, 1] C.[1, 5, 1, 2, 3] D.[5, 4, 3, 2, 1]13.有如下Python自定义函数:def fun(x, i):if xreturn ielif x%i==0:return xelse:return fun(x-i, i+1)执行语句k=fun(37, 3)后,k的值为( )A.5 B.6 C.30 D.3414.已知列表a的长度为6,a[0]至a[5]的值依次为18,12,24,15,21,0,某程序如下所示:head, tail=0, 5x=a[head]head+=1while(head+1) % len(a)! =tail:t=y=a[head]head=(head+1)%len(a)if xx, y=y, xif x%y!=0:a[tail]=x%ytail=(tail+1)%len(a)x=tprint(a[head])程序运行后,输出的结果是( )A.24 B.12 C.3 D.015.某 Python 程序段如下:from random import randint #randint(x,y)随机产生[x,y]之间整数ans=""while len(ans)<3:t=chr(randint(0,25)+randint(0,1)*32+ord("A")) #大小写字母ASCII码值相差32if t not in ans:ans+=tprint(ans)程序运行后,输出的结果不可能是( )A.Txt B.txt C.BMP D.jpg二、填空题16.自定义函数一般包括 、 、 和 四部分。17.以下程序中的函数CircleArea( )实现的功能是import mathdef CircleArea(r): area=math.pi *r *rreturn area18.在函数中, 是用来向函数传递值的。19.Python 语言使用 语句导入模块。20.下列程序的作用是 。sum=0for i in range( 2,101,2): sum +=iprint( sum)三、判断题21.下列Python程序段运行结束后,赋值语句sum=sum+i共被执行了9次。( )22.常量是指在程序运行过程当中其值始终不发生变化的量。( )23.print(1+"2")的输出结果是"3"( )24.在Python中可以使用if作为变量名。( )25.在 Python 语言中,定义函数无须指定函数返回值的类型。( )四、操作题26.筛法求素数。埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种由希腊数学家埃拉托斯特尼所提出的一种简单鉴定素数的算法。要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。算法思想:先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去……现在使用埃氏筛法求1~n之间的素数个数,代码如下: n=int(input()) a=[1]*(n+1) a[0],a[1]=0,0#标记小于2的数,0表示非素数,1表示素数 ① i=2 while i<=n: if ② : for j in range(2*i,n+1,i): a[j]=0 i+=1 for i in range(n+1): ③ print(num)(1) 请在划线处填入合适的代码。(2) 若输入的值为20,则输出为 。27.编写程序,实现如下功能:在键盘上输入两个正整数a、b(aa= int(input("请输入整数a:"))b= int(input("请输入整数b:"))s=0for i in ①____:if ②____:s=s+iprint("[" ,a, b,"]区间内的奇数和为:",s)程序中划线①处应填入的代码为程序中划线②处应填入的代码为28.输入一个嵌套列表,嵌套层次不限,根据层次求列表元素的加权和。第一层每个元素的值为:元素值*1,第二层每个元素的值为:元素值*2,第三层每个元素的值为:元素值*3,…,运行程序如下图所示请输入列表:[2,4,[12,[5,8],-2],21]输出结果:86请回答以下问题(1)输入列表[[[1,-2,3]]],输出结果是(2)请在划线①②③④处填入合适的代码s = input("请输入列表:")count = 0ans = 0flag = 1while i < len(s):if s[i] == "[":count += 1elif s[i] == "]":count -= 1elif s[i] == "-":elif "9">=s[i]>="0":j = inum = 0while "9">=s[j]>="0":num =j += 1ans = ans+count*num*flagflag = 1i += 1print("输出结果:",ans)29.数学学习小组在绘制余弦函数y=cos(x)的图像,他们选择的方式是利用Python编程进行绘图,程序代码如下所示:(1)需要完善程序代码才能画出余弦函数图像,上面程序代码第5行应该填写 。(2)如果将程序代码第3行修改为x=np.arange(-6,6,0.1),则第2行相应修改为 。30.某银行在整存项目上,利率是0.02,每年结束的时候,将年度利息加入本金作为第二年的本金。如王阿婆第一年存入10000元,第二年的本金为10000x1.02=10200元,第三年以此类推。计算最少多少年后,王阿婆去取款的时候,至少可以拿到12000元。(1)根据题意,程序流程图中应该填入 。(2)填写程序中空缺的代码,完成程序。(3)程序中,变量i代表的含义是 。(4)解决该问题使用的算法属于( )(枚举法/解析法/递归法)#银行存款计算程序s=i=0whiles<12000: i=i+1 s=print(i)五、简答题31.按照下列步骤顺序,逐条写出相应的代码。(1)导入模块math;(2)将16赋给变量a;(3)将表达式math.sqrt(a)的值赋给变量b;(4)将表达式a*b赋给变量c;(5)使用输出语句在屏幕上输出c的值。32.按照下列步骤顺序,逐条写出相应的代码。(1)将字符串“国泰与”赋给变量a;(2)将字符串“民安”赋给变量b;(3)将表达式a+b的值赋给变量c;(4)将c[3]的值赋给变量d;(5)使用输出语句在屏幕上输出d的值。33.请描述列表和元组之间的区别,以及分别在他们之间转型?34.编写程序,根据输入的年份(4位整数),判断该年份是否是闰年。35.根据输入的百分制分数,将其转换为等级制(优、良、中、及格、不及格)并输出。参考答案1.D2.A3.C4.B5.D6.C7.C8.B9.D10.C11.B12.C13.C14.C15.B16.函数名 参数 返回值 函数体17.求圆的面积18.参数19.import 模块名20.求1~100(含100)的偶数之和21.正确22.正确23.错误24.错误25.正确26.num=0 a[i]==1或其他等价答案 num+=a[i]或num=num+a[i] 827.range(a,b+1) i%2==128.6 i=0 flag=-1 num*10+int(s[j]) i=j-129.plt.plot(x,y) import numpy as np30.s<12000 第i年之后枚举法 10000 s*1.02 或 s*(1+0.02)31.import matha=16b=math. sqrt(a)c=a*bprint(c)32.a="国泰与"b="民安"c=a+bd=c[3]print(d)33.List 和tuple 区别不同点:1 定义的方式list[] tuple()2 是否可变list可变 tuple() 不可变3 list中有 append(),insert() 函数,tuple中没有相同点: 都是有序的集合(容器)List转为tuple:temp_list = [1,2,3,4,5]将temp_list进行强制转换:tuple(temp_list)tuple 转为list:temp_tuple = (1,2,3)方法类似,也是进行强制转换即可:list(temp_tuple)34.x=int(input("请输入一个年份(四位数):"))if x%400==0: print("{}年是闰年".format(x))elif x%4==0 and x%100!=0: print("{}年是闰年".format(x))else:print("{}年不是闰年".format(x))35.score=eval(input("请输入你的分数:"))if score>=90: print("等级为优")elif 80<=score<90: print("等级为良")elif 70<=score<80: print("等级为中")elif 60<=score<50: print("等级为及格")else: print("等级为不及格") 展开更多...... 收起↑ 资源预览