资源简介 第三章 算法的程序实现 检测练习一、选择题1.Python是当下热门的编程语言,它的特点有( )A.面向过程 B.代码规范 C.库丰富 D.广泛应用于人工智能领域2.下列选项中,flag的值与其他三项不同的是( )A. B.C. D.3.在Python程序设计语言当中,执行语句print(3,4,5,sep='*'),则输出结果为( )A.3,4,5 B.3 4 5 C.345* D.3*4*54.在Python程序设计语言当中,数据输出通过( )函数来实现。A.output() B.input() C.print() D.int()5.在Python语言中,如果要把a的值赋给b,赋值表达式的正确格式是( )A.a==b B.a=b C.b==a D.b=a6.在Python程序设计语言中,数据输入通过( )函数来实现。A.print() B.int() C.input() D.len()7.在Python程序中对变量赋值,通过赋值运算符( )来完成。A.= B.== C.!= D.>8.在Python程序设计语言当中,关系表达式“5>3”的值是( )A.True B.False C.5 D.39.在Python程序设计语言当中,如果a=3,b=2,则a+3*b的运行结果是( )A.2 B.3 C.9 D.1210.在Python程序设计语言当中,如果x=5,y=3,则2*x//y的值是( )A.1 B.2 C.3 D.511.在Python程序当中,表达式“7%3”的运算结果是( )A.1 B.2 C.3 D.712.以下Python程序数据,数据类型为Number(数值)的是( )A.16 B.'年龄' C.['张小明',16,'男'] D.('张小明',16,'男')13.在Python运行环境下,按顺序输入如下指令,变量a的值是( )a=1a='hello'a=[1,'hello']a=1+2A.1 B.'hello' C.[1,'hello'] D.314.以下变量标识符,符合Python程序设计语言规定的是( )A.1_Name B.Name C.1Name D.Name-115.不能被计算机直接识别、理解执行的语言需要转换,这种转换是( )A.人工转换或机器转换 B.人工智能技术中的自然语言理解C.操作系统负责转换 D.计算机语言提供的解释器或编译器负责转换16.以下不属于高级语言的是( )A.Java语言 B.Python语言 C.汇编语言 D.C语言17.下列不是Python中的字符串的是( )A.123 B."print" C."ABC" D."程序"18.2的平方使用Python语言怎么表示( )A.2*3 B.2**2 C.23 D.3**219.有以下Python代码:a=int(input(“请输入a的值:”))print(a*6)假如从键盘输入3,则运行结果为( )A.666 B.18 C.18.0 D.aaa20.已知列表x=[1,2,3,4],那么执行语句del x[1]后x的值为( )A.[2,3,4] B.[1,2,3,4] C.[1,3,4] D.[3,4]二、填空题21.为了便于程序的阅读和理解,通常会在源代码中添加 。22.在Python中通常用 来表示常量。23.写出运行结果。a,b,c=5,3,6a,b=b,aprint("输出a,b的值:",a,b)结果:24.写出运行结果。list=['石榴',1,'香蕉','橙子','栗子']list[0]='苹果'del list[l]list.append('猕猴桃')print (list)结果:25.下面程序的运行结果为( )三、判断题26.Python表达式'37'+str(21)的运行结果是'58'。( )27.Python中判断变量s能否被变量a整除,可以用表达式“s//a”的结果判断。( )28.Python是一种面向对象的编译型计算机程序设计语言。( )29.表达式x+5=y-2用来判断x+5和y-2是否相等。( )30.用Python程序产生一个[1,100]的随机整数,程序中应加入import math语句。( )四、操作题31.你是一名数据分析师,正在开发一个处理特定序列数据的应用程序,这些数据是以环状序列的形式提供的。现在需要设计一个算法,能够在这些环状序列中找出最长升序子串(若有多组最长子串,则输出最先出现那组)。例如环状序列“BCEGHBCEFGA”中最长升序子串是“ABCEGH”。程序运行界面如图所示。请输入序列数据:BCEGHBCEFGA最长升序长度是:6最长升序子串是:ABCEGH实现上述功能的程序段如下,请回答下列问题:(1)请在划线处填入合适的代码(2)加框处代码有误,请改正s=input("请输入序列数据:")n=len(s)for i in range(n-1):if:breakif i==n-2:k=n-1maxc=nelse:maxc=1cnt=1p1=i+1p2=(p1+1)%nwhile① :if s[p1]cnt+=1if cnt>maxc:maxc=cnt②else:cnt=1p1=p2p2=(p2+1)%nprint("最长升序长度是:",maxc)s1=""for i in range(maxc):s1=s[k]+s1③print("最长升序子串是:",s1)32.机器人从原点(0,0)开始在平面中移动。机器人只能通过用户给定的指令 UP 向上,DOWN 向下,LEFT 向左和 RIGHT 向右移动。如机器人收到的运动指令向上 5 步,向下 3 步,向左 3 步, 向右 2 步,按回车键结束指令输入,程序运行界面如下所示:请输入方向和步数,隔开UP,5,隔开DOWN,3,隔开LEFT,3,隔开RIGHT,2,隔开经过4个指令机器人距离原点2.24左侧为运动方向,右侧数字为前进步数。请编写一个程序,计算经过一系列运动之后,机器人当前位置离开原点的距离(四舍五入保留两位小数)。(1)请把下面的代码补充完整。import mathpos=[0,0]n=0print('请输入方向和步数')while True:s=input(',隔开')if not s: break① movement=s.split(',')#用于字符串分割的常用方法。如:'a#b#c'.split('#')结果为['a', 'b', 'c'] direction=movement[0] steps=② if direction=='UP': pos[1]+=steps elif direction=='DOWN': pos[1]-=steps elif direction=='LEFT': pos[0]-=steps③ : pos[0]+=stepsprint('经过'+④ +'个指令')print('机器人距离原点',⑤ )33.小钱设计了一个用于判定素单词的Python程序。判断素单词的规则如下:设定小写字母a—z对应的数字为1—26,大写字母A—Z对应的数字为27—52,将某个单词的所有字母按照其对应的数字求和,若和为素数则判断为素单词。现用程序来判断一个单词是否是素单词,如果是输出“yes”,反之则输出“no”。如单词“Hello”,字母分别对应的数字为:34、5、12、12、15,其和为34+5+12+12+15=78,不是素数,因此单词“Hello”不是素单词,输出“no”。(1)根据题意,当输入单词“Love”,输出的结果是 。(2)实现素单词判断的python程序如下,请在划线处填入合适的代码。s=input("请输入一个单词:")m=0flag=Truefor i in range(len(s)):ch=s[i]if "Z">=ch>="A":m=①elif "z">=ch>="a":#将小写字母转换为对应的数字并累加至变量m,代码略for i in range(2,m):if② :flag=Falsebreakif③ :print("yes")else:print("no")34.小嘉给好朋友小浙发送了一段字符串信息,该字符串信息是小嘉利用某种编码规则编码后的结果。编码规则如下:将字符串中连续出现n(n≥2)次的字符串str编码为“n[str]”的形式,若字符串str中仍然有连续出现多次的字符串,则继续转换,直到字符只出现1次。例如,可将原始字符串“mmfffmmfff”编码为“2[2[m]3[f]]”。请帮助小浙设计一段解码程序,将收到的字符串信息恢复成原始字符串。实现解码功能的程序段如下,请回答下列问题:(1)若小浙收到的字符串信息是“3[a2[c]]”,则原始字符串是“ ”(2)请在划线处填入合适的代码s = input("请输入经过编码的字符串:")Lst = []res,k="",0for i in range(len(s)):①If ch == "[":lst.append([k,res])#在列表末尾添加元素[k,res]k,res=0,""elif ch == "]":curk,lres = lst.pop(-1)#将列表末尾元素取出,并分别赋值给curk,lresres = lres + curk*reselif② :k = k*10+int(ch)else:res=③print("原始字符串为:",res)35.奇偶校验码是一种增加二进制传输系统可靠性的简单且广泛采用的方法,该方法通过增加一个校验位使得传输的二进制码中“1”的个数恒为奇数或偶数,因此该校验码也分为“奇校验” 和“偶校验”。“奇校验”的原理:在发送端发送的每个字节二进制码后增加一个校验位(0 或1),使得“1”的个数为奇数;接收端接收并统计每个字节及其校验位中“1”的个数,若为偶数,则意味着传输过程中存在差错。例如:接收到的每个字节及校验码 “1” 的个数 传输正误100101001 4 错误011010101 5 正确101011010 5 正确根据以上原理,小强编写了一个 Python 程序,对接收到的 9 位二进制编码进行“奇校验”, 判断其传输的正误,若判断正确则将该二进制编码(校验码除外)转成十六进制并输出。请回答下列问题:(1)若接收到的二进制码为“101011011”,传输过程 (选填:是/否)存在差错。(2)实现上述功能的 Python 程序如下,请在划线处填入合适的代码。def BtoH(s):p=0;ans=""code={10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"}for j in range(0,8,4):p=int(s[j:j+4],2)# int(x,2):将 x 按照二进制转换成十进制整数if 0<=p<=9:ans=ans+str(p)else:ans=①return anss=input("请输入 9 位二进制编码:")k=0for i in s:#统计 9 位二进制编码中“1”的个数k=k+int(i)if ② :print("传输错误!")else:print("传输正确!")result=③print("字节编码用十六进制表示:", result)(3)输入"1010110111"程序运行后,输出的结果正确的是( )(单选,填字母)A.传输正确! B.传输错误!C.传输正确! 字节编码用十六进制表示: AD D.传输错误! 字节编码用十六进制表示: AD参考答案:1.BCD2.A3.D4.C5.D6.C7.A8.A9.C10.C11.A12.A13.D14.B15.D16.C17.A18.B19.B20.C21.注释22.大写字母23.输出a,b的值:3,524.['苹果', '香蕉', '橙子', '栗子','猕猴桃']25.026.错误27.错误28.错误29.错误30.错误31. s[i]>s[i+1] p1!=i或p2!=i+1 k=p2 k=(k-1)%n32. n=n+1 int(movement[1])或float(movement[1]) elif direction=='RIGHT'或if direction=='RIGHT' str(n) round(math.sqrt(pos[0]**2+pos[1]**2),2)或round((pos[0]**2+pos[1]**2)**0.5,2)33. no m+ord(ch)-ord(‘A’)+27或m+ord(ch)-38 m%i==0 flag或flag==True或i==m-134. "accaccacc"或accaccacc ch=s[i] "0"<=ch<="9" res+ch35. 是 ans+code[p] k%2==0或(k+1)%2==1或(k-1)%2==1 BtoH(s) C 展开更多...... 收起↑ 资源预览