



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第页大数据-编程练习试题简答题1.本题中我们会提供两个字符串str_1和str_2,我们已经在solution.py中帮你声明好了replace_string函数,该函数的初始str_1和str_2代表初始字符串,你需要:1.将str_1中的所有*替换成career;2.将str_2中的第一个*替换成career。Python的re模块提供了re.sub方法用于替换字符串中的匹配项。语法为:re.sub(pattern,repl,string,count=0,flags=0)其中的参数pattern代表正则中的模式字符串,repl表示替换的字符串,也可为一个函数,string表示要被查找替换的原始字符串,count表示模式匹配后替换的最大次数,默认为0,表示替换所有的匹配,参数flags表示编译时用的匹配模式,数字形式。其中前三个为必选参数,后两个为可选参数。importrestr_1='his*isteacherandher*isdoctor,my*isbasketballplayer'str_2='Nomatterwhat*youdointhefuture,youmustberesponsibleforyour*'defreplace_string(str_1,str_2):#--writeyourcodehere--【正确答案】:importrestr_1='his*isteacherandher*isdoctor,my*isbasketballplayer'str_2='Nomatterwhat*youdointhefuture,youmustberesponsibleforyour*'defreplace_string(str_1,str_2):print(re.sub('\*','career',str_1))print(re.sub('\*','career',str_2,1))replace_string(str_1,str_2)2.给定一个列表list_1,里面嵌套了多个列表,请你计算出每个嵌套列表的最大值,并输出所有最大值的平均值。list_1=[[54,28,88,99,77],[99,6,37,68,83],[90,52,36,4,53],[85,66,11,11,61],[20,52,9,81,61],[23,67,37,39,18],[21,36,66,80,30],[74,80,5,7,96],[30,35,71,73,4],[40,67,67,11,71]]#writeyourcodehere【正确答案】:list_1=[[54,28,88,99,77],[99,6,37,68,83],[90,52,36,4,53],[85,66,11,11,61],[20,52,9,81,61],[23,67,37,39,18],[21,36,66,80,30],[74,80,5,7,96],[30,35,71,73,4],[40,67,67,11,71]]#Pleaseyourcodehereans=0fornuminlist_1:ans+=max(num)print(f'{ans/len(list_1):0.2f}')3.使用python实现斐波那契数列斐波那契数列(Fibonaccisequence),又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.……请使用递归的方式实现,,参考如下:F0=0(n=0)F1=1(n=1)Fn=F[n-1]+F[n-2](n=>2)【正确答案】:deffib(n):a,b=1,1foriinrange(n-1):a,b=b,a+breturna4.本题有一个字符串date_time。请实现一下逻辑:从标准输入流(控制台)获取输入的字符串date_time,从字符串中提取出日期的月份,并将其加一来替换原来字符串的月份,然后将新的字符串打印。data_time为YYYYMMDD格式的日期字符串,例如20181113【正确答案】:#readdatafromconsoledate_time=str(input())#Pleasewriteyourcodeheremonth=date_time[4:6]month=int(month)+1print(date_time[:4]+str(month)+date_time[6:])5.本题中我们会提供两个列表list_1和list_2,我们已经在list.py中帮你声明好了sorting_connection函数,该函数的list_1和list_2代表初始列表,你需要将list_2和list_1合并,将其进行排序并返回。list_1=[5,6,9,8]list_2=[1,0,7,6]defsorting_connection(list_1,list_2):#--writeyourcodehere--【正确答案】:list_1=[5,6,9,8]list_2=[1,0,7,6]defsorting_connection(list_1,list_2):foriinlist_2:list_1.append(i)a=sorted(list_1)returnasorting_connection(list_1,list_2)6.给定一个列表list_1,和另外一个列表list_2,list_1嵌套在list_2中,我们将分别使用浅拷贝,深拷贝list_2列表,生成浅拷贝列表list_3和深拷贝列表list_4,请你依次打印出五个布尔值:1.列表list_1和列表list_2中嵌套的列表是否是同一个对象。2.列表list_1和列表list_3中嵌套的列表是否是同一个对象。3.列表list_1和列表list_4中嵌套的列表是否是同一个对象。4.列表list_2中嵌套的列表和列表list_3中嵌套的列表是否是同一个对象。5.列表list_2中嵌套的列表和列表list_4中嵌套的列表是否是同一个对象。importcopylist_1=[1,2,3]list_2=[list_1]#writeyourcodehere【正确答案】:importcopylist_1=[1,2,3]list_2=[list_1]list_3=copy.copy(list_2)list_4=copy.deepcopy(list_2)print(list_1islist_2[0])print(list_1islist_3[0])print(list_1islist_4[0])print(list_2[0]islist_3[0])print(list_2[0]islist_4[0])7.给定一个包含红色、白色和蓝色、共n个元素的数组nums,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数0、1和2分别表示红色、白色和蓝色。必须在不使用库的sort函数的情况下解决这个问题。【正确答案】:defsortColors(self,nums:List[int])->None:n=len(nums)ptr=0foriinrange(n):ifnums[i]==0:nums[i],nums[ptr]=nums[ptr],nums[i]ptr+=1foriinrange(ptr,n):ifnums[i]==1:nums[i],nums[ptr]=nums[ptr],nums[i]ptr+=18.店铺周年庆,给定一个所有商品列表,商品名以j、z、d、f和h开头的将会打折扣,请你统计一下打折扣的商品,并以列表的方式打印到控制台。list_1为商品列表list_1=['jiu','zhangyu','luosifen']#writeyourcodehere【正确答案】:list_1=['jiu','zhangyu','luosifen']discount=[]foriinlist_1:ifi[0]in('j','z','d','f','h'):discount.append(i)print(discount)9.请实现get_sum函数功能。get_sum函数接收一个数组参数nums。请用lambda函数为get_sum函数传入两个未知数x和y,并将这个lambda函数作为get_sum函数的返回值,对于get_sum接收的参数nums,如果数组nums的长度为偶数,则返回x倍的nums元素总和,如果数组nums的长度为奇数,则返回-y倍的nums元素总和。nums=[1,2,3,4]x=2y=3defget_sum(nums):#writeyourcodehere.【正确答案】:nums=[1,2,3,4]x=2y=3defget_sum(nums):#Writeyourcodehere.n=sum(nums)returnlambdax,y:n*xiflen(nums)%2==0else-y*nget_sum(nums)(x,y)10.请完善代码,实现change_str函数功能,change_str函数有三个参数分别为字符串txt、整数k和字符串s,将字符串txt的第k个字符修改成字符串s并返回修改后的字符串。txt='Mr.Green'k=2s='ab'defchange_str(txt,k,s):#writeyourcodehere【正确答案】:txt='Mr.Green'k=2s='ab'defchange_str(txt,k,s):returntxt[:k]+s+txt[k+1:]change_str(txt,k,s)11.商店里新推出了一种商品,普通顾客需要按照原价购买,而会员可以享受七折优惠。如果是在黑名单上的顾客,那么商店将不会出售商品给他。现有一个会员列表,和一个黑名单。此时来了一名顾客,请你打印出这名顾客最终需要付款的价格。如果是在黑名单上的顾客,你需要打印-1。price=100customer='Jack'vip=['coco','wowo','mick','Jack']blacklist=['Telang','pupu']【正确答案】:#GetVariablesprice=100customer='Jack'vip=['coco','wowo','mick','Jack']blacklist=['Telang','pupu']#pleasewriteyourcodehereifcustomerinvip:print(f'{price*0.7:.2f}')elifcustomerinblacklist:print(-1)else:print(price)12.输入两棵二叉树A和B,判断B是不是A的子结构(约定空树不是任意一个树的子结构)【正确答案】:defisSubStructure(A,B):ifnotBornotA:returnFalsedefdfs(a,b):ifnotb:returnTrueifnota:returnFalseifa.val==b.val:returndfs(a.left,b.left)anddfs(a.right,b.right)else:returnFalsereturnisSubStructure(A.left,B)orisSubStructure(A.right,B)ordfs(A,B)13.给定一个包含电话号码列表(一行一个电话号码)的文本文件file.txt,写一个单行bash脚本输出所有有效的电话号码。【正确答案】:grep-P'^((\(\d{3}\))|(\d{3}-))\d{3}-\d{4}$'file.txt14.一个n*m的二维数组,每一行从左到右递增,每一列从上到下递增。输入一个整数,判断该数组中是否含有该整数。【正确答案】:deffindNumberIn2DArray(matrix,target):iflen(matrix)<1:returnFalsen,m=len(matrix),len(matrix[0])i,j=n-1,0whilei>=0andj<=m-1:ifmatrix[i][j]==target:returnTrueelifmatrix[i][j]>target:i-=1else:#matrix[i][j]<target:j+=1returnFalse15.给你一个整数集合my_set={2,100,-20,-9,-10},输出集合中绝对值小于10的元素之和。【正确答案】:my_set={2,100,-20,-9,-10}sum=0foriinmy_set:ifabs(i)<10:sum+=iprint(sum)16.给定一个直角三角形的斜边c和它其中的一条直角边a,请你打印出它的另外一条直角边(结果只保留整数位)。【正确答案】:importmath#Geta,ca=3c=5#Pleasewriteyourcodehereprint(int(math.sqrt(c**2-a**2)))17.给定列表arr=[6,7,8,9],返回元素值是元素下标的倍数的元素个数。列表的下标从0开始。例输入[4,5,6,7]输出2,解释:5是1的倍数,6是2的倍数。【正确答案】:arr=[6,7,8,9]count=0ifarr[0]==0:count+=1foriinrange(1,len(arr)):ifarr[i]==0:count+=1elifarr[i]%i==0:count+=1print(count)18.最长回文子串给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串。样例1:输入:"abcdzdcab"输出:"cdzdc"样例2:输入:"aba"输出:"aba"【正确答案】:deflongestPalindrome(s):ifnots:return""answer=(0,0)formidinrange(len(s)):answer=max(answer,get_palindrom_from(s,mid,mid))answer=max(answer,get_palindrom_from(s,mid,mid+1))returns[answer[1]:answer[0]+answer[1]]defget_palindrom_from(s,left,right):whileleft>=0andright<len(s)ands[left]==s[right]:left-=1right+=1return(right-left-1,left+1)19.现在我们有一张表teachers,要求基于te
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论