python100例详解Python经典算法100及解析小结

上传人:仙*** 文档编号:112371865 上传时间:2022-06-22 格式:DOC 页数:47 大小:334KB
返回 下载 相关 举报
python100例详解Python经典算法100及解析小结_第1页
第1页 / 共47页
python100例详解Python经典算法100及解析小结_第2页
第2页 / 共47页
python100例详解Python经典算法100及解析小结_第3页
第3页 / 共47页
点击查看更多>>
资源描述
pythonlOO例详解-Python经典算法100及解析(小结)1找出字符串s=aaabbbccceeefffim44444中,字符出现次数最多的字符(1)考虑去重,首先将字符串进行过滤去重,这样在根据这些字符进行循环查询时,将会减少循环次数,提升效率。但是本人写的代码较为臃肿,有更好的希望留言评论str=a1fsfs111bbbcccccvvvvvnnnnboooooosssnbclassCountvalue():defcountvalue(self,str1):Iff利用set自身的去重功能:paramstr1:对传进来的字符串过滤:return:返回一个不含重复字符的listIfflist1=result=forxinstr1:list1.append(x)result=set(list1)returnresultdefcount(self,str1):Iff对已经去重的list进行遍历,因已去重从而减少循环次数,提高检索效率:paramstr1:return:list=Countvalue().countvalue(str1)a=0tump=forxinlist:test=str1.count(x)iftesta:tump.clear()a=testtumpx=aeliftest=a:a=testtumpx=areturntumpif_name_=_main_:print(Countvalue().count(str)(2)不考虑去重s=xssdddeeeeeeeffffmax_times=0result=foriins:ifs.count(i)max_times:result.clear()resulti=s.count(i)max_times=s.count(i)elifs.count(i)=max_times:resulti=s.count(i)printresult#!/usr/bin/envpython3#-*-coding:utf-8-*-2018.1.30Python练习100题题目001:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?Iffdeftm001():Iff【个人备注】:按题意直接写出来Iffarr=foriinrange(1,5):forjinrange(1,5):forkinrange(1,5):num=100*i+10*j+kifi!=jandj!=kandi!=kandnumnotinarr:#互不相同且无重复数字的三位数arr.append(num)print(len(arr),arr)deftm001_1():Iff【个人备注】:其实python自带排列组合模块,可以直接调用。也知道这个写法,只是函数记不住,还是百度一下才能写出来。如果这是面试题,能写出后一种当然好,不能的话还是老老实实的按照上面的思路来吧。Iffimportitertoolstemp_arr=list(itertools.permutations(1,2,3,4,3)#排列#A_4人3=(4)!/(4-3)!=(4*3*2*1)/1=24arr=100*t0+10*t1+t2fortintemp_arrprint(len(arr),arr)Iff题目002:企业发放的奖金根据利润(I)的多少来提成:低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%;高于100万元时,超过100万元的部分按1%提成。从键盘输入当月利润I,求应发放奖金总数?Iffdeftm002():Iff程序分析:请利用数轴来分界,定位。【个人备注】:这种处理数轴问题的写法,值得参考。比elif的写法,简洁方便的多。Iffmoney=int(input(净利润:)arr=1000000,600000,400000,200000,100000,0rat=0.01,0.015,0.03,0.05,0.075,0.1bonus=0foriinrange(len(arr):ifmoneyarri:#对于处于区间的部分bonus+=(money-arri)*rati#计算并累加奖励money=arri#剩余部分print(bonus)Iff题目003:个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?Iffdeftm003():Iff【个人备注】:网站上是求了一下方程,没细看。python又不是没有开方函数,直接按字面意思解了。Iffimportmathforiinrange(1000):x=math.sqrt(i+100)y=math.sqrt(i+100+168)ifx%1=0andy%1=0:print(i)Iff题目004:输入某年某月某日,判断这一天是这一年的第几天?Iffdeftm004():Iff【个人备注】:知道python有时间元组这一概念,这道题完全不需要计算。时间元组包含九个属性tm_year年tm_mon月(112)tm_mday日(131)tm_hour时(023)tm_min分(059)tm_sec秒(061,60或61是闰秒)tm_wday星期(06,0是周一)tm_yday第几天(1366,366是儒略历)tm_isdst夏令时(平时用不到)importtimedate=input(输入时间(例如2018-01-23):)st=time.strptime(date,%Y-%m-%d)#时间文本转化成时间元祖num=st.tm_ydayprint(num)Iff题目005:输入三个整数x,y,z,请把这三个数由小到大输出。Iffdeftm005():print(输入三个数字)x=input(输入第1个数字:)y=input(输入第2个数字:)z=input(输入第3个数字:)l=x,y,zarr=sorted(l)#你也可以使用list.sort()方法来排序,此时list本身将被修改print(arr)Iff题目006:斐波那契数列。Iffdeftm006():Iff程序分析:斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、【个人备注】:很多种解法,我是按照分割的方式,每次取列表后两项,然后相加。Iffl=0,1foriinrange(10):arr=l-2:l.append(arr0+arr1)print(l)Iff题目007:将一个列表的数据复制到另一个列表中。Iffdeftm007():【个人备注】:如果系统的看过python教程之类的应该都知道。Python里面一切都是对象,list的复制需要用:的方式。至于b=a只是相当于给a取了个别名而已,指向的是同一个列表,并没有实现复制。Iffa=1,2,3b=a:题外话a0=0print(id(a),id(b)#可以看到a,b的内存不一致,是复制print(a,b)#修改a,b不变a=1,2,3b=aa0=0print(id(a),id(b)#如果去掉:,可以看到a,b的内存一致,并没有复制,指向的是同一个列表print(a,b)#修改a,b也变Iff题目008:题目:输出9*9乘法口诀表。Iffdeftm008():Iff【个人备注】:已经忘了,百度了才想起来口诀表具体长什么样。注意%-7s和end=的用法,其他没什么。Iffforiinrange(1,10):forjinrange(1,10):ifj100:l=arri:print(len(l),l)breakIff题目013:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。deftm013():Iff【个人备注】:/取整,求余,*3三次方。知道取整求余写法的就没问题。Iffforiinrange(100,1000):b=i/100#百位s=i%100/10#十位g=i%10#个位ifb*3+s*3+g*3=i:print(i)Iff题目014:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。Iffdeftm014():Iff【个人备注】:拆到拆不动为止,类似012题。Iffimportmatharr=num=int(input(输入一个整数:)whilenum1:foriinrange(2,int(math.sqrt(num)+1):#因为题目是一个没写范围正整数,开方可以有效减少该值过大时候的计算量ifnum%i=0:arr.append(i)num=num/ibreakelse:arr.append(num)breakprint(arr)Iff题目015:利用条件运算符的嵌套来完成此题:学习成绩=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。Iffdeftm015():Iff【个人备注】:if-else基本用法,没啥说的。Iffscore=float(input(输入一个成绩:)ifscore=90:print(A)elifscore=60:print(B)else:print(C)Iff题目016:输出指定格式的日期。Iffdeftm016():Iff【个人备注】:用的不多经常忘,整理了一下参考答案和一些转换2019-5-29以下日期时间代码仅供参考。我将常用的日期时间方法,整理到了我的另一篇博客中Python3日期文本互转,时间戳,时间差以及时区变换importtimeprint(time.time()#时间戳1498539133.655print(time.localtime()#时间元祖tm_year=2017,tm_mon=6,tm_mday=27,tm_hour=12,tm_min=53,tm_sec=16,tm_wday=1,tm_yday=178,tm_isdst=0print(time.asctime()#时间的一种可读文本形式TueJun2712:53:502017print(time.strftime(%Y-%m-%d%H:%M:%S,time.localtime()#按指定文本格式输出时间2017-06-2713:00:57st=time.localtime(time.time()#时间戳转化成时间元祖st=time.strptime(2018/1/23,%Y/%m/%d)#时间文本转化成时间元祖date=time.strftime(%Y-%m-%d,st)#时间元祖转化成时间文本%Y-%m-%d%H:%M:%Sprint(date)#前面两条函数配合着用,相当于将时间文本重新格式化。#另外我们可以通过datetime模块来计算时间差,例如:importdatetimedt1=datetime.datetime.fromtimestamp(1517302458)print(dt1,type(dt1)dt2=datetime.datetime.now()print(dt2)print(相差d天零%.1f个小时%(dt2-dt1).days,(dt2-dt1).seconds/60/60)Iff2018-01-3016:54:182018-02-0116:27:47.524774相差1天零23.6个小时Iff#注意上面的日期虽然看起来是文本,但实际上是datetime类型的。#可以通过时间戳/时间文本转换得到,然后才能进行日期时间计算。d1=datetime.datetime.strptime(2017-10-1619:21:22,%Y-%m-%d%H:%M:%S)Iff题目017:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。Iffdeftm017():Iff【个人备注】:本来想写成这种格式来着importstringifcinstring.ascii_letters:#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZifc=:#空格ifcinstring.digits:#0123456789看了参考答案才知道有现成的函数可以用。其实随便哪种都行,甚至直接把一串字母粘上去看起来更直接。Iffs=input(inputastring:)letters,space,digit,others=0,0,0,0forcins:ifc.isalpha():letters+=1elifc.isspace():space+=1elifc.isdigit():digit+=1else:others+=1print(char=%d,space=%d,digit=%d,others=%d%(letters,space,digit,others)Iff题目018:求s=a+aa+aaa+aaaa+aa.a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。deftm018():Iff【个人备注】:答案给的解法很多种,但是我还是认为我写的方法最简单。2+22+222+2222+22222可以理解为:20000+2*2000+3*200+4*20+5*2也就是:1*2*10人4+2*2*10人3+3*2*10人2+4*2*10T+5*2*10人0所以简单迭代就可以出结果a=2t=5num=0foriinrange(1,t+1):num+=i*a*(10*(t-i)print(num)Iff题目019:个数如果恰好等于它的因子之和,这个数就称为完数。例如6=1+2+3.编程找出1000以内的所有完数。Iffdeftm019():Iff【个人备注】:题意看的不是太懂,于是百度了一下:完数就是除了自身之外的所有约数之和等于他本身。第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。终于看懂了题意。先求出所有约数,然后求和比一下是否相等就行了,没有难度Ifffornuminrange(1,1000):arr=foriinrange(1,num):ifnum%i=0:arr.append(i)ifsum(arr)=num:print(num,arr)Iff题目020:球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?Iffdeftm020():Iff【个人备注】:很简单,没啥说的total=0m=100#第一次落地,经过了一百米total+=mforiinrange(10-1):#之后9次弹起到落地total+=2*m#弹起然后重新落地,一共经过的距离m=m/2#弹起的高度print(total)print(m/2)Iff题目021:猴子吃桃问题猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。Iffdeftm021():Iff【个人备注】:第十天num=1个,第九天必然是4个:4/2-1=1,也就是(num+1)*2=4。做这种题,先用算数式列出来,然后用代码描述就行了。Iffnum=1foriinrange(10-1):num=(num+1)*2print(num)Iff题目022:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。Iffdeftm022():Iff【个人备注】:关键是将抽象化,将问题抽象成代码方式。我的解题思路,是用排列组合函数,列出方案,然后排除。而官方解答里面有一个纯粹的for循环加if的求解方式,更抽象一些,用了一个很常用固定范式,直接拿来解题了。稍微对其抽象的方法注释了一下。importitertoolsjia=a,b,cyi=x,y,zarr=list(itertools.permutations(yi,3)#面对甲队a,b,c时,乙队所有排列(x:y:z),(x:z:y),(y:x:z),(y:z:x),(z:x:y),(z,y,x)arr=jiai+aiforiinrange(3)forainarr#将a,b,c写上,得到所有对阵组合ax,by,cz,ax,bz,ey,ay,bx,cz,ay,bz,cx,az,bx,cy,az,by,cxforiinarr:ifaxini:passelifcxiniorczini:passelse:print(i)#得到az,bx,cydeftm022_1():forainx,y,z:#a在x,y,z中挑一个打forbinx,y,z:#b在x,y,z中挑一个打forcinx,y,z:#c在x,y,z中挑一个打三层总计27种打法ifa!=bandb!=candc!=a:#a,b,c不能挑同一个人缩减到6种打法ifa!=xandc!=xandc!=z:#依据题意不能ax,cx,cz缩减到1种打法print(a+a,b+b,c+c)Iff题目023:打印出如下图案(菱形):*deftm023():Iff【个人备注】:想到了绝对值,然后将0,1,2,3,4,5,6变成了3,2,1,0,1,23,也就是每行左边空格数。Iffnum=7foriinrange(num):blank=abs(num/2-i)print(*blank+*(num-2*blank)+*blank)Iff题目024:有一分数序列:2/l,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和。Iffdeftm024():Iff没啥好说的Iffa,b,num=2,1,0foriinrange(20):num+=a/ba=a+bb=a-bprint(num)Iff题目025:求1+2!+3!+.+20!的和。Iffdeftm025():Iff【个人备注】:实现起来很简单。下面官方的代码,比我写的更简洁。Iffs,t=0,1forninrange(1,21):t*=ns+=tprint(s)Iff题目026:利用递归方法求5!。deffac(x):ifx1:returnx*fac(x-1)else:returnxdeftm026():Iff【个人备注】:按题目要求,公式f(n)=n*f(n-1),递归调用求解。Iffprint(fac(5)Iff题目027:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。Iffdefoutput(s,l):ifl=0:returnprint(sl-1)output(s,l-1)deftm027():Iff【个人备注】:直接从官网复制,不喜欢递归。Iffs=input(Inputastring:)l=len(s)output(s,l)Iff题目028:有5个人坐在一起,问第五个人多少岁?他说比第4个人大两岁。问第4个人,他说比第3个人大两岁。问第3个人,又说比第2个人大两岁。问第2个人,说比第1个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?Iffdefage(x):ifx1:return2+age(x-1)else:return10deftm028():Iff【个人备注】:官网给的还是递归方法,因为不用递归的话就是个口算题。Iffprint(age(5)Iff题目029:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。Iffdeftm029():Iff【个人备注】:用Python,SoEasylist倒序可以用Iist.reverse();字符串就只能用步长=-1的方式来倒序了。Iffnum=12345s=str(num)print(len(s)print(s:-1)Iff题目030:个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。Iffdeftm030():Iff【个人备注】:没啥可说的。Iffnum=12321s=str(num)foriinrange(len(s)/2):ifsi!=s-i-1:print(False)breakelse:print(True)Iff题目031:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。Iffdeftm031():Iff【个人备注】:按照题意要求实现了就行Iffweek=monday,tuesday,wednesday,thursday,friday,saturday,sundayinp=while1:arr=inp=inp+input(请输入一个字母:)fordayinweek:#挑出满足输入的星期ifinp=day:len(inp):arr.append(day)iflen(arr)=1:#只剩一个,说明唯一,可以输出结果print(以$开头的单词是:s%(inp,arr0)inp=eliflen(arr)=0:#一个都没有说明输错了,需要重新输入print(没有%s头的单词%inp)inp=题目032:按相反的顺序输出列表的值。Iffdeftm032():Iff【个人备注】:之前已经做过了Iff#方法一a=1,2,3,4,5print(a:-1)#方法二a=1,2,3,4,5a.reverse()print(a)#方法三a=1,2,3,4,5a.sort(reverse=True)print(a)Iff题目033:按逗号分隔列表。Iffdeftm033():Iff【个人备注】:一开始没看懂题目页干啥,直接print(list)不就是逗号分隔么实际上题目的意思是,合并列表项,以逗号为间隔Iffa=1,2,3,4,5print(,.join(a)Iff题目034:练习函数调用。Iffdeftm034():Iff【个人备注】:没头没尾的一个题,之前的递归实际上就是函数的调用了。不写了。IffpassIff题目035:文本颜色设置。Iffdeftm035():Iff【个人备注】:感觉不像是不是python的题。Iffpass题目036:求100之内的素数。titdeftm036():tit【个人备注】:素数就是质数Iffarr=2foriinrange(3,100):forjinarr:ifi%j=0:breakelse:arr.append(i)print(arr)Iff题目037:对10个数进行排序。Iffdeftm037():Iff【个人备注】:实际上考察的是排序。揣测了一下题意,写了两种解法Iff#方法1,python解法a=1,5,7,3,2,4,9,10,6,8a.sort()print(a)#方法2,常规解法a=1,5,7,3,2,4,9,10,6,8b=a0fornumina1:foriinrange(len(b):ifnumb.insert(i,num)breakelse:b.append(num)print(b)Iff题目038:求一个3*3矩阵主对角线元素之和。Iffdeftm038():Iff【个人备注】:思路比较简单,n*n的矩阵都可以用这个求解。Iffa=1,2,3,4,5,6,7,8,9s=0n=len(a)foriinrange(n):#左上到右下一条线s+=aiiforiinrange(n):#右上到左下一条线s+=ain-i-1ifn%2=1:#如果是奇数,删掉重复计算的中间点s-=an/2n/2print(s)Iff题目039:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。Iffdeftm039():Iff【个人备注】:037题中刚写过。Iffaaa=1,5,8,14,28,39,60,89,134,324,612,900b=555forainaaa:ifbaaa.insert(aaa.index(a),b)breakelse:aaa.append(b)print(aaa)Iff题目040:将一个数组逆序输出。Iffdeftm040():Iff【个人备注】:就是032题,重复了。IffpassIff题目041:模仿静态变量的用法。Iffdeftm041():Iff【个人备注】:不是很清楚什么意思,直接看了官网的解答。如果是函数中的局部变量,每次调用函数都会初始化。而类中的变量,创建类的时候初始化,每次执行类中的函数的时候,不会初始化类变量。看起来是想说这么个意思。Iffdefvarfunc():var=0print(var=%d%var)var+=1if_name_=_main_:foriinrange(3):varfunc()#StaticVar作为类的一个属性,相当于静态变量classStatic:StaticVar=5defvarfunc(self):self.StaticVar+=1print(self.StaticVar)print(Static.StaticVar)a=Static()foriinrange(3):a.varfunc()Iff题目042:学习使用auto定义变量的用法。Iffdeftm042():Iff【个人备注】:同样没看懂题意,看了下官网答案发现实际是想说变量作用域,python是有分局部变量、全局变量的等区分的。Iffnum=2defautofunc():num=1print(internalblocknum=%d%num)num+=1foriinrange(3):print(Thenum=%d%num)num+=1autofunc()以上实例输出结果为:Thenum=2internalblocknum=1Thenum=3internalblocknum=1Thenum=4internalblocknum=1题目043:模仿静态变量(static)另一案例。deftm43():Iff【个人备注】:官网的答案和041没啥区别,又来一遍题目044:两个3*3的矩阵,实现其对应位置的数据相加,并返回一个新矩阵:X=12,7,3,4,5,6,7,8,9Y=5,8,1,6,7,3,4,5,9Iffdeftm044():Iff【个人备注】:自己写了一个,但是印象里python是有矩阵计算工具的。官网就有人用该工具numpy写了一下,很简洁。Iffx=12,7,3,4,5,6,7,8,9y=5,8,1,6,7,3,4,5,9z=x:foriinrange(3):forjinrange(3):zij=xij+yijprint(z)deftm044_1():importnumpy#pipinstallnumpy需要安装模块x=numpy.array(12,7,3,4,5,6,7,8,9)y=numpy.array(5,8,1,6,7,3,4,5,9)z=x+yprint(z)Iff题目045:统计1到100之和。deftm45():Iff【个人备注】:简单,但官网有人写的更简单s=0foriinrange(1,101):s+=iprint(s)#更简洁的方法print(sum(range(1,101)Iff题目046:求输入数字的平方,如果平方运算后小于50则退出。Iffdeftm046():Iff【个人备注】:简单Iffwhile1:x=input(输入数字得到平方值:)print(x*x)ifx*xj:print(%d大于%d%(ij)elifi=j:print(%d等于%d%(i,j)elifimapobject#filter(functionorNone,iterable)-filterobject#reduce(function,sequence,initial)-valuefoo=2,18,9,22,17,24,8,12,27print(list(map(lambdax:x*2+10,foo)#映射14,46,28,54,44,58,26,34,64print(list(filter(lambdax:x%3=0,foo)#过滤18,9,24,12,27fromfunctoolsimportreduce#在Python3里,reduce()函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里print(reduce(lambdax,y:x+y,foo)#累积139Iff题目050:输出一个随机数。Iffdeftm050():Iff【个人备注】:之前学习随机的时候整理的东西,用到时候来找就行了Iffimportrandom# 随机数操作random.random()#0.85415370477785668#随机一个0,1)之间的浮点数random.uniform(0,100)#18.7356606526#随机一个0,100之间的浮点数random.randrange(0,100,2)#44#随机一个0,100)之间的偶数random.randint(0,100)#22#随机一个0,100之间的整数# 随机字符操作seed=1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ!#$%&*()_+=-#任意字符串(作为随机字符种子库)random.choice(seed)#d#随机一个字符random.sample(seed,3)#a,d,b#随机多个字符(字符可重复).join(random.sample(seed,3)#AfA#随机指定长度字符串(字符可重复)# 随机列表操作random.shuffle(list)#列表中的元素打乱Iff题目051053、055:学习使用按位与&学习使用按位或|学习使用按位异或A学习使用按位取反deftm051():#tm052#tm053#tm055【个人备注】:大概看了一下资料,按位操作可以通过bin()函数转换为二进制从而实现。感觉二进制的计算如果不是学加密之类的基本用不上。所以这一题,大概写了集合的用法,&、|在python中是集合set()才用的符号两个列表求交集并集,通常也都是转换为集合,然后进行计算的。# 可迭代变量转换为集合形式x=set(runoob)y=set(google)print(x,y)#重复的被删除n,o,b,u,ro,g,e,l# 集合的交集、并集、差集print(x&y)#交集oprint(x|y)#并集e,o,g,l,u,n,b,rprint(x-y)#差集n,b,u,r#当然也可以写成函数形式,不过确实没有上面符号好记。print(x.intersection(y)print(x.union(y)print(x.difference(y)题目054:取一个整数a从右端开始的4-7位。deftm054():【个人备注】:官网答案不对a=123456789b=str(a)print(b-7:-3)#写的时候注意一下python切片是-7:-4)左闭右开的,不包含-4的,所以要写成-3才能取到题目056:画图,学用circle画圆形。题目057:画图,学用line画直线。题目058:画图,学用rectangle画方形。题目059:画图,综合例子。题目063:画椭圆。题目064:利用ellipse和rectangle画图。题目065:个最优美的图案。所有画图题pass有爱的自己参照下面,将官网答案改成python3运行即可。Iffdeftm056():#tm057、tm058、tm059、tm063、tm064、tm065、Iff【个人备注】:这个技能感觉用不上啊。复制了官网Python2答案,调整一下放到python3上成功运行了。Iffimporttkintercanvas=tkinter.Canvas(width=600,height=500,bg=yellow)canvas.pack(expand=yes,fill=both)k=1j=1foriinrange(0,26):canvas.create_oval(300-k,250-k,300+k,250+k,width=1)k+=jj+=0.6canvas.mainloop()Iff题目060:计算字符串长度。Iffdeftm060():Iff【个人备注】:无Iffa=aegwegprint(len(a)Iff题目061:打印出杨辉三角形(要求打印出10行如下图)。1111211464115101051161520156117213535217118285670562881193684126126843691Iffdeftm061():Iff【个人备注】:感觉自己写的比官网简单好懂Iffarr=1print(1)whilelen(arr)1:#循环直到只剩1人num,count=a.pop(0),count+1#排队进门,每进一人【a.pop】,按一下计数器ifcount%3!=0:b.append(num)#进门后依旧按序站好【b.append】,计数器逢3淘汰。ifa=:a,b=b,#如果门外没人了【a=】,所有人重新到门外站好【a=b】print(a0)Iff题目070:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。Iffdeftm070():Iff【个人备注】:简单Iffdefgetlength(string):returnlen(string)if_name_=_main_:x=abcdeprint(getlength(x)Iff题目071:编写input()和output。函数输入,输出5个学生的数据记录。Iffdeftm071():Iff【个人备注】:用字典类型随便写写Iffdefinp(data):name=input(输入学生姓名:)score=input(输入学生成绩:)dataname=scoreprint(成功录入)returndatadefoutp(data):name=input(输入学生姓名:)print(该学生的成绩是:data.get(name)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!