资源简介 第四章 程序设计基础 练习一、选择题1.下列Python表达式的值为数值5的是( )A.int(max(["36","100","5"])) B.len([1,2,3,"IT"])C.ord("e")-ord("a") D.str(abs(-5))2.有如下Python程序段:x,y=11,6if x%2!=0:if y%3==0:s=x*yelse:s=x//yelse:s=x+y程序执行后,s的值为( )A.66 B.17 C.1 D.报错3.某店铺优惠活动:消费满688后打7折,不满额则9折。计算优惠价格的Python程序段如下:if x>=688:y=x*0.7else:y=x*0.9下列选项中与上述功能相同的是( )A. B. C. D.4.已知字典 medals={"金牌":201,"银牌":111,"铜牌":71},其中键是奖牌,值是数量,则引用"金牌"数量的方法是( )A.medals ["金牌"] B.medals ("金牌") C.medals [0] D.medals (1)5.有如下Python程序段:n=int(input())to_hex=['A','B','C','D','E','F']if n<10:res=nelse:res=to_hex[n%10]输入n的值为12,程序执行后,res的值为( )A.F B.E C.D D.C6.下列Python语句不正确的是( )A.numbers=[1,2,3,4] B.a,b=b,aC.x,y,z="AI",[5,1] D.n%=27.Python表达式3*7**2//10的值是( )A.4 B.14 C.7 D.478.有如下Python程序段:import randoma=[0]*6i=0while i<6:a[i]=random.randint(1,5)*2if a[i]==i*2:a[i]=0i+=1elif a[i]%2==i%2:a[i]=a[i]-1i+=1print(a)执行该程序后,输出的结果可能是( )A.[11,0,3,0,0,0] B.[0,0,1,0,3,0]C.[1,0,5,0,4,0] D.[3,0,5,0,5,0]9.有如下Python程序段:a=[[1,1],[2,2],[3,3],[4,-1]]head=0cur=a[head][1]a[head][1]=-1while cur!=-1:p=a[cur][1]a[cur][1]=headhead,cur=cur,p则程序运行后,a的值为( )A.[[1,1],[2,2],[3,3],[4,-1]] B.[[1,-1],[2,0],[3,1],[4,2]]C.[[4,1],[3,2],[2,3],[1,-1]] D.[[4,-1],[3,0],[2,1],[1,2]]10.有如下Python程序:import randoma=[2,4,5,6,6,6,8,8,10,12]key=int(random.random()*5+5)i=0;j=9;s=0while i<=j:m=(i+j)//2if a[m]<=key:i=m+1else:j=m-1s+=m程序运行后,s的值不可能是( )A.10 B.14 C.19 D.2211.数组a中存储着全校学生的学号和BMI信息,格式为 [[“0101”,19.2], [“0102”,18.5], [“0103”,20.1],……]。其中每条数据的第一项为学号,第二项为BMI值。数组a已经按学号升序排序,现要求按照BMI值进行降序排序,BMI相同的情况下仍然按照学号保持升序。则下列程序段可以实现该功能的是( )A. B.C. D.A.A B.B C.C D.D12.定义如下函数:def move(n,a,b,c):if n==1:print(a,”->”,c)returnmove(n-1,a,c,b)move(1,a,b,c)move(n-1,b,a,c)执行语句move(3,”A”, ”B”, ”C”),输出的第一行内容是( )A.B->C B.A->C C.C->A D.A->B13.在二维数组 a 中,a[3][1]表示的是第几行第几列的数据( )A.第1行3列 B.第3行1列C.第4行2列 D.第2行4列14.数据类型可以分为( )A.基本数据类型和原子数据类型 B.基本数据类型和结构数据类型C.原子数据类型和编程数据类型 D.应用数据类型和结构数据类型15.有如下Python程序段:s="cbcbaabcbbc"st=s[0]for i in range(1, len(s)):if len(st)==0 or s[i]!=st[-1]:st=s[i]+stelse:st=st[0:len(st)-1]print(st)执行该段代码后,输出结果为( )A.cbbc B.cbc C.bc D.b16.有如下Python程序段:from random import randinta=[0]*6i=0while i<6:a[i]=randint(1,10)if a[i]%2==i%2:i=i-1elif a[i]%2==0:a[i]=a[i]+1i=i+1执行该段代码后,列表a的值不可能为( )A.[5,3,1,11,9,3] B.[11,5,5,7,3,5] C.[1,3,9,11,1,11] D.[9,7,7,5,9,3]17.有如下Python程序段:a=[3,5,2,4,1]sum1=m=a[0]for i in range(1,len(a)):if a[i]m=a[i]suml+=m执行该程序后,sum1的值为( )A.6 B.9 C.11 D.1518.“回文串”是一个正读和反读都一样的字符串。下列Python段的功能是:输入一个字符串,判断该字符串是否为回文串,若是则输出“Yes”,否则输出“No”。s=input("请输入字符串:")i=0j=len(s)-1flag=Truewhile iif s[i]==s[j]:i+=1①else:flag=Falseif ② :print("Yes")else:print("No")则程序划线①②③处应填入的语句为( )A.①j+=1 ②flag B.①j+=1 ②not flagC.①j-=1 ②flag D.①j-=1 ②not flag19.根据国家标准,室内空气质量指数的正常范围为0.5~2.5,如果空气质量指数大于2.5,则表明空气质量较差,空气质量指数小于0.5,表明空气质量较好,下列选项能正确表示这三种情况的是( )A.if zs>2.5: print("较差") elif 0.5zs>0.5: print("正常") elif zs<0.5: print("较好") else: print("较差") C.if zs>2.5: print("较差") elif not zs>0.5: print("较好") else: print("正常") D.if zs<0.5: print("较好") elif not zs>2.5: print("正常") elif zs>2.5: print("较差")A.A B.B C.C D.D20.某DataFrame对象df共包含6个数据列、30个数据行,其中第2列为“姓名”列,下列语句中能读取df对象中“姓名”列所有数据的是( )A.df."姓名" B.df. columns[1] C.df[姓名] D.df["姓名"]二、填空题21.若输入987421,输出的结果是 。n = int(input("n=")) n = n % 1000 n = n // 100 print (n)22.x = 20if x = 10: value = 4*xelse: value = 5*xprint(value)本程序中分数变量,变量名称是 ,变量的数据类型是23.阅读如下一段程序,回答以下问题。x=20if x>=10: value=4*xelse: value=5*xprint(value)该程序采用 结构,程序输出结果是24.把数式写成Python语言的表达式 。25.Python表达式5<-5 or not 5<=5 and 5!=5的值是 。三、判断题26.在Python语言中,4和"4"的数据类型是一样的。( )27.“student id”是一个正确的变量名。( )28.Python程序 a=10;a=8;print(a)的运行结果是8。( )29.在Python中,运算符*=的优先级要高于运算符+=。( )30.实现控制循环的跳转需要用到break和continue两个关键字。其中,break是中断循环,continue是跳出本次循环的执行。( )四、操作题31.小光和小明根据某地机动车限行提示,如下图a所示,分别设计了根据尾号数字实现限行提醒的程序(程序A和程序B)。目前设计进度只能判断车牌的最后一位是数字的情况,如输入车牌号码“沪AGU332”,输出“星期一限行”,如下图b所示。 图a 图b程序编写如下,请回答下列问题程序A 程序B(1)请在划线处填入合适代码,程序A中的①②和程序B中①②填入代码是一样的,填一处即可:① 、② 。(2)在上述程序中,变量lic的数据类型为 (单选,填字母:A.整型/B.字符串/C.逻辑型)(3)程序A和程序B哪段程序效率高 (单选,填字母:A.程序A/B.程序B)(4)调试程序时出现1处报错,如下图所示如何修正程序为32.某国计划在海岸线上安装雷达探测海上的岛屿。假设海岸线是一条无限的直线,一边是陆地,另一边是海洋。为了找到覆盖所有岛屿所需雷达装置的最小数量,编写程序:输入岛屿数量n、雷达装置的覆盖距离d以及每个岛屿的位置(由x,y坐标值表示),若雷达能覆盖所有岛屿,则输出所需雷达的最小数量;否则,输出“无法覆盖”。如图所示海洋中有3个岛屿,位置分别为(1,2)、(-3,1)、(2,1),雷达的覆盖距离为2,则至少需要安装2个雷达装置,分别安装在(-2,0),(1,0)位置上。(1)若上述雷达覆盖距离修改为3,则至少需要安装的雷达装置数为(2)实现上述功能的Python程序如下,请在划线处填入合适的代码。from math import sqrtn = int(input('请输入岛屿的数量n:'))d = int(input('请输入雷达的半径d:'))# qj[i][0]、qj[i][1]分别存储可以覆盖第i个岛屿的雷达,能安装的最左边和最右边位置qj = [[0, 0] for i in range(n)]flag = Truefor i in range(n):x = int(input('岛屿坐标x:'))y = int(input('岛屿坐标y:'))if y > d:flag = Falsebreakqj[i][0] =qj[i][1] = x + sqrt(d * d - y * y)if :print('无法覆盖')else:# 按左端点升序排序,左端点相同时按右端点升序排序for i in range(n - 1):k = ifor j in range(i + 1, n):if :k = jif k != i:qj[k], qj[i] = qj[i], qj[k]num = 1cur = qj[0][1]for i in range(1, n):if cur > qj[i][1]:cur = qj[i][1]elif :num += 1cur = qj[i][1]print('安装的雷达数为:', num)(3)若将程序中加框处代码修改为 (单选:填字母),不影响的正确性。A.i==n-1 B.i==n C.i < n D.y > d(4)根据代码可知,对于n个岛屿,在进行排序时最多的交换次数为 。33.如下自定义函数实现一个加减法算式的运算,要求输入一个只包含运算符“+”和运算符“-”的合法算式,输出算式的运算结果。具体程序如下,请在划线处填入合适的代码。def fun(s):num1=i=0while iif s[i]>="0" and s[i]<= "9":num1=i+=1elif s[i]== "+" or s[i]<= "-":x=1if s[i]== "-":x=-1num2=0;j=i+1while jif s[j]>= "0" and s[j]<= "9":num2=mum2*10+int(s[j])j+=1elif s[j]== "+"or s[j]== "-":return fun(str(num1+x*num2)+ )if j==len(s):return34.在一个正整数序列中,由若干个连续的数据元素组成的序列,称为该序列的子序列。现输入一个整数序列和一个整数m,寻找一个满足下列条件的子序列:①该子序列的各元素之和不能超过m。②在所有满足条件①的子序列中寻找长度为最大(元素个数最多)的子序列。若满足条件的子序列有多个,则输出最左边的子序列。例如,整数序列为“1,5,4,2,3,1,5,8,1”,m的值为15,则元素之和不超过m的最长子序列有“[1,5,4,2,3]”和“[4,2,3,1,5]”,长度均为5,根据题目要求可知,最后输出的最长子序列为“[1,5,4,2,3]”。读入一个由整数组成的数据序列,输入m,输出符合条件的最长子序列及该子序列的长度。程序运行界面如图所示。请回答下列问题:(1)若原序列为“3,5,4,5,2,3,1,8,3,4”,m=20,则输出的最长子序列为 。(2)函数sumif(b)的功能是求列表b中元素的前缀和,即sumx[1]=b[0],sumx[i]=b[0]+…+b[i-1],请在程序划线处填入合适的代码。def sumif(b):sumx[0]=0for i in range(1,n+1):sumx[i]=return sumx(3)主程序如下,请在程序划线处填入合适的代码。#读入数据,并存入列表d中,代码略print("序列为:", d)n=len(d)m=int(input("请输入m的值:"))sumx=[0]*(n+1)sumx=sumif(d)maxn=0maxposi=-1for i in range(0,n+1):j=iwhile :j=j+1if j-i-1>maxn:maxposi=iprint("最长子序列长度为:", maxn)print("最长子序列为:",d[maxposi:maxn+maxposi])五、简答题35.列举Python程序设计语言中,for循环和while循环的基本的格式。36.什么是常量,什么是变量?常量和变量的特点是什么?37.从键盘上输入一个字符,当输入的是英文字母时,输出“输入的是英文字母”;当输入的是数字时,输出“输入的数字”;当输入的是其他字符时,输出“输入的是其他字符”。参考答案1.A2.A3.D4.A5.D6.C7.B8.D9.B10.B11.D12.B13.C14.B15.D16.B17.C18.C19.D20.D21.422.value int23.分支 8024.(a+b)/(2*a)25.False26.错误27.错误28.正确29.错误30.正确31.lic[-1]或其他适合答案 ["5","0"] B A 将最后一个print语句采用缩进格式书写或其他适合答案。32.1 x -sqrt(d * d - y * y) qj[k][0]>qj[j][0] or qj[k][0]==qj[j][0] and qj[k][1]>qj[j][1] cur33.num1*10+int(s[i]) s[j:] num1+num2*x34.[5,4,5,2,3,1]或5,4,5,2,3,1 或545231 sumx[i-1]+b[i-1] j<=n and sumx[j]-sumx[i]<=m (说明:不能写为sumx[j]-sumx[i]<=m and j<=n) maxn=j-i-135.for 循环结构的基本格式:for 循环变量 in 列表:语句或语句组While循环格式:While(表达式):语句或者语句组36.常量是指在程序运行过程中其值始终不发生变化的量,通常是固定的数值或字符串。变量是指在程序运行过程中其值可以发生变化的量。常量是固定值,变量可以多次赋值。37.ch=input("请输入一个字符:")if ch.isdigit()==True: print("输入的是数字")elif ch.isalpha()==True: print("输入的是英文字母")else:print("输入的是其他字符") 展开更多...... 收起↑ 资源预览