python基础练习题100道_第1页
python基础练习题100道_第2页
python基础练习题100道_第3页
python基础练习题100道_第4页
python基础练习题100道_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实例001题目有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? foriinforjinforkinif((i!=j)and(j!=k)and(k!=i)):简便方 用itertools中的permutations即可importitertoolsforiinitertools.permutations(a,3):002题目企业发放的奖金根据利润提成。利润 (I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提7.5%;20万到40万之间时,高于20万元的部分,可提 5%;40万到60万之间时高于万元的部分,可提 3%;60万到100万之间时,高于60万元的部分,可提 100万元时,超过 100万元的部分按1%提成,从键盘输入当月利润 profit=int(input('Showmethemoney:'))foriinrange(len(thresholds)):ifprofit<=thresholds[i]:实例003题目一个整数,它加上 100后是一个完全平方数,再加上 168又是一个完全平方数,请问 因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的方法来获取上限:while(n+1)**2-n*n<=168:思路是:最坏的结果是 n的平方与(n+1)的平方刚好差168,由于是平方的关系, 至于判断是否是完全平方数,最简单的方法是:平方根的值小数 0即可while(n+1)**2-n*n<=168:foriinifi**0.5==int(i**0.5)and(i+168)**0.5==int((i+168)**0.5):实例004题目输入某年某月某日,判断这一天是这一年的第几天? defreturn(y%400==0or(y%4==0andy%100!=0))ifforiinrange(month):实例005题目输入三个整数x,y,z程序分 练练手就随便找个排序算法实现一下,偷懒就直接调函数foriinx=int(input('int%d:'%(i)))foriinforjinrange(i,len(raw)):ifraw[i]>raw[j]:foriinx=int(input('int%d:'%(i)))006:斐波那契数列题目斐波那契数列。程序分 sequence#defreturn1ifn<=2elseFib(n-1)+Fib(n-2)#朴素实现foriinrange(target-1):实例007题目程序分 使用列表[:],拿不准可以调 copy模块importa=b=#c=#d=#e=#============RESTART:F:\PyWorkspace\Python100\100examples\007.py============a=[1,2,3,4,['a','b','c'],5]b=[1,2,3,4,['a','b','c'],c=[1,2,3,4,['a','b',d=[1,2,3,4,['a','b',e=[1,2,3,4,['a',实例008题目输出 乘法口诀表程序分 分行与列考虑, 9行9列,i控制行,j控制列foriinforjinprint('%d*%d=%2ld'%(i,j,i*j),end='')009:暂停一秒输出题目暂停一秒输出。程序分 使用 模块的sleep()函数importforiin实例010题目暂停一秒输出,并格式化当前时间。 同009.importforiinprint(time.strftime('%Y-%m-%d%H:%M:%S',time.localtime(time.time())))实例011题目有一对兔子,从出生后第 3个月起每个月都生一对兔子,小兔子长到第三个月后每个程序分 我认为原文的解法有点扯,没有考 3个月成熟的问题,人家还是婴儿怎么生 foriinprint('第%d个月共'%(i+1),month_1+month_2+month_3+month_elder,' 对兔子')print('其中1月兔:',month_1)print('其中2',month_2)print('其中3',month_3)print(其中成年兔:',month_elder)实例012100200题目判断101-200 判断素数的方法:用一个数分别去除 2到sqrt(这个数),如果能被整除,则表明此 用else可以进一步简化代码.importforiinrange(100,200):forjinrange(2,round(math.sqrt(i))+1):ifi%j==0:ifprint('\nSimplifythecodewithforiinforjinrange(2,round(math.sqrt(i))+1):ifi%j==0:实例013题目打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 利用for循环控制100-999个数,每个数分解出个位,十位,百位。foriinrange(100,1000):ten=int(s[-ifi==one**3+ten**3+hun**3:实例014题目将一个整数分解质因数。例如:输 90,打印出90=233*5 2开始向数本身遍历,能整除的肯定是最小的质target=int(input('输入一个整数:'))print(target,'=',end='')ififwhileifforiinrange(2,int(target+1)):iftarget%i==0:iftarget==i:实例015题目利用条件运算符的嵌套来完成此题:学习成绩 >=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 points=int(input('输入分数:'))ifpoints>=90:elifpoints<60:实例016题目 使用datetime importdatetime实例017题目输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 利用while 或for 语句,条件为输入的字符不为 ‘\n。string=input("输入字符串:")foriinifstring[i].isspace():elifstring[i].isdigit():elif

print('space:print('digit:print('alpha:print('other:实例018题目求s=a+aa+aaa+aaaa+a⋯a的值,其中 a是一个数字。例如 时共有5个数相加),几个数相加由键盘控制。程序分 用字符串解决a=input('被加数字:')n=int(input('加几次?:'))foriinprint('',res)实例019题目一个数如果恰好等于它的因子之和,这个数就称 "完数"。例如6=1+2+3.编程找1000程序分析将每一对因子加进集合,在这个过程中已经自动去重。最后的结果要求不计算其defforiinrange(1,num):ifnum%i==0:returnforiinifi==sum(factor(i))-i:实例020题目一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 10次反弹多高? foriinrange(10):print('实例021题目 又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。程序分析按规则反向推断:猴子有一个桃子,他偷来一个桃子,觉得不够又偷来了与手上 9天。foriin实例022题目两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和xc说他不和x,z比,请编程序找程序分析foriinforjinforkiniflen(set((i,j,k)))==3:实例023题目打印出如下图案(菱形 **程序分 递归调用即可defprint(a.center(9,''))ifnum!=1:print(a.center(9,''))实例024:斐波那契数列题目有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13⋯求出这个数列的前 20项之和。 a=b=s=forninrange(1,21):s+=a/ba,b=a+print实例025:阶乘求和题目1+2!+3!+20!程序分 foriinrange(20,1,-1):实例026题目利用递归方法求5!。 deffactorial(n):returnn*factorial(n-1)ifn>1else1实例027题目利用递归函数调用方式,将所输入的 5个字符,以相反顺序打印出来。 defifrec(input('stringhere:'))实例028题目有5个人坐在一起,问第五个人多少岁?他说比 4个人大2岁。问第4个人岁数他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问 2个人,说比第一个人 10岁。请问第五个人多大? defifreturn10return2+age(n-1)实例029题目给一个不多于 5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 学会分解出每一位数,用字符串的方法总是比较省事。n=int(input('输入一个正整数:'))print('%d'%len(n))实例030题目一个5位数,判断它是不是回文数。即 12321是回文数,个位与万位相同,十位与千 用字符串比较方便,就算输入的不是数字都 n=input("随便你输入啥啦: whilea<b:ifprint('')ifprint(')实例031题目请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断程序分 这里用字典的形式直接将对照关系存好a=week[str(input('请输入第一位字母 ifa==weekTora==weekS: 请输入第二位字母实例032:反向输出题目按相反的顺序输出列表的值。 a=['one','two','three']实例033:列表转字符串题目按逗号分隔列表。 L=print(','.join(str(n)forninL))实例034题目练习函数调用。 defprint('HelloWorld!')defhelloAgain():foriinif 实例035:设置输出颜色题目文本颜色设置。 classHEADER=OKBLUE='\033[94m'OKGREEN='\033[92m'WARNING='\033[93m'FAIL='\033[91m'ENDC='\033[0m'BOLD='\033[1m'UNDERLINE='\033[4m'print(bcolors.WARNING警告的颜色字体bcolors.ENDC)实例036题目100 用else执行for循环的奖励代码(如果 for是正常完结,非break。lo=int(input('下限:'))hi=int(input('foriinrange(lo,hi+1):ifi>1:forjinrange(2,i):if(i%j)==

实例037题目对10个数进行排序。 同实例005。foriinrange(10):x=int(input('int%d:'%(i)))foriinforjinrange(i,len(raw)):ifraw[i]>raw[j]:实例038题目求一个3*3矩阵主对角线元素之和。 ]foriinrange(len(mat)):实例039题目程序分析首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此n=int(input('insertanumber:'))foriinrange(len(lis)-1):iflis[i]>=n:forjinrange(i,len(lis)):实例040题目程序分 依次交换位置,或者直接调 reverse方法foriinprint('第一种实现:')print('第二种实现:')实例041:类的方法与变量题目程序分 构造类,了解类的方法与变量defdummy():classdefforiinrange(50):实例042题目学习使用auto定义变量的用法。 python中的变量作用域。defdummy():defglobalnprint('函数内部的同名变量')forjinrange(20):print('global声明同名变量forkinrange(20):实例043:作用域、类的方法与变量题目模仿静态变量(static)另一案例。 综合实例041和实例042。classdefprint('classdummynum:',self.num)print('globalnum:',num)foriin实例044题目 for迭代并取出X和Y矩阵中对应位置的值,相加后X=[4[7Y=foriinforjinrange(len(res[0])):实例045题目统计1到100之和。 foriinrange(1,101):实例046题目求输入数字的平方,如果平方运算后小于 50则退出。 whilen=float(input('输入一个数字:'))print('')print(其平方为:',dn)ifdn<50:print('平方小于50')实例047题目两个变量值用函数互换。 defreturn实例048题目数字比较。 ifa<b:elifa>b:实例049题目使用lambda来创建匿名函数。 Max=lambdax,y:x*(x>=y)+y*(y>x)Min=lambdax,y:x*(x<=y)+y*(y<x)实例050题目程序分 使用 模块import实例051题目学习使用按位 &程序分 0&0=0;0&1=0;1&0=0;1&1=1实例052题目学习使用按位 程序分 0|0=0;0|1=1;1|0=1;实例053题目学习使用按位异 ^程序分 0^0=0;0^1=1;1^0=1;实例054题目取一个整数a从右端开始的4?7位。 先使a右移4设置一个低4位全为1,其余全为0的数。可用将上面二者进行&运算。a=int(input('输入一个数字:')) # 实例055题目学习使用按位取反 ~0=1;~1=0;实例056题目画图,学用circle画圆形。 fromtkinterimport*foriin实例057题目画图,学用line画直线。 if ==' fromtkinterimport*canvas=Canvas(width=300,height=300,bg='green')canvas.pack(expand=YES,fill=BOTH)x0=y0=y1=x1=foriincanvas.create_line(x0,y0,x0,y1,width=1,fill='red')x0=x0-5y0=y0-x1=x1+5y1=y1+x0=y1=y0=foriinrange(21):canvas.create_line(x0,y0,x0,y1,fill='red')x0+=y0+=y1+=实例058题目画图,学用rectangle画方形。 if ==' fromtkinterimport*root=Tk()canvas=Canvas(root,width=400,height=400,bg='yellow')x0=263y0=y1=x1=foriinrange(19):x0-=5y0-=x1+=y1+=实例059:画图(丑)题目画图,综合例子。 if == fromtkinterimportcanvas=Canvas(width=300,height=300,bg='green')canvas.pack(expand=YES,fill=BOTH)x0=y0=canvas.create_oval(x0-10,y0-10,x0+10,y0+10)canvas.create_oval(x0-20,y0-20,x0+20,y0+20)canvas.create_oval(x0-50,y0-50,x0+50,y0+50)importmathB=foriina=2*math.pi/16*x=math.ceil(x0+48*y=math.ceil(y0+48*math.sin(a)*B)canvas.create_line(x0,y0,x,y,fill=canvas.create_oval(x0-60,y0-60,x0+60,y0+forkinrange(501):foriinrange(17):a=(2*math.pi/16)*i+(2*math.pi/180)*x=math.ceil(x0+48*y=math.ceil(y0+48+math.sin(a)*B)canvas.create_line(x0,y0,x,y,fill='red')forjina=(2*math.pi/16)*i+(2*math.pi/180)*k-1x=math.ceil(x0+48*math.cos(a))y=math.ceil(y0+48*math.sin(a)*B)canvas.create_line(x0,y0,x,y,fill=实例060题目计算字符串长度。 实例061题目打印出杨辉三角形前十行。 defgenerate(numRows):r=[[1]]foriinr.append(list(map(lambdax,y:x+y,[0]+r[-1],r[-1]+[0])))returnr[:numRows]foriin实例062题目查找字符串。 实例063题目程序分 使用tkinterif ==' fromtkinterimport*x=y=top=y-30bottom=y-30canvas=Canvas(width=400,height=600,bg='white')foriinrange(20):canvas.create_oval(250-top,250-bottom,250+top,250+bottom)top-=5bottom+=5实例064题目利用ellipse和rectangle画图。。 if ==' fromtkinterimport*canvas=Canvas(width=400,height=600,bg='white')left=20right=top=num=foriincanvas.create_oval(250-right,250-left,250+right,250+left)canvas.create_oval(250-20,250-top,250+20,250+top)canvas.create_rectangle(20-2*i,20-2*i,10*(i+2),10*(i+2))right+=5left+=top+=实例065:画组合图形题目一个最优美的图案。 importfromtkinterimportclassdef self.x=0self.y=points=defLineToDemo():screenx=screeny=canvas=Canvas(width=screenx,height=screeny,bg=AspectRatio=MAXPTS=h=screenyw=xcenter=w/ycenter=h/radius=(h-30)/(AspectRatio*2)-20step=360/MAXPTSangle=foriinrads=angle*math.pi/180.0p=PTS()p.x=xcenter+int(math.cos(rads)*p.y=ycenter-int(math.sin(rads)*radius*AspectRatio)angle+=stepcanvas.create_oval(xcenter-radius,ycenter-xcenter+radius,ycenter+foriinforjinrange(i,MAXPTS):if == 实例066:三数排序题目输入3实例066:三数排序题目输入3个数a,程序分 同实例foriinx=int(input('int%d:'%(i)))foriinforjinrange(i,len(raw)):ifraw[i]>raw[j]:foriinx=int(input('int%d:'%(i)))实例067题目输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 实例068题目有n个整数,使其前面各数顺序向后移 m个位置,最后 m个数变成最前面的 m个数 fromcollectionsimport*实例069题目有n个人围成一圈,顺序排号。从第一个人开始报数 (从1到3报数),凡报到3的人程序分 无if ==' nmax=50nint(input('请输入总人数num=foriinnum.append(i+i=k=m=whilem<n-ifnum[i]!=0:k+=1ifk==3:num[i]=k=m+=i+=ifi==n:i=i=whilenum[i]==0:i+=1实例070:字符串长度题目写一个函数,求一个字符串的长度,在 main函数中输入字符串,并输出其长度。 defreturn实例071题目编写input()和output()函数输入,输出5个学生的数据记录。 N=#num:string#name:string#score[4]:liststudent=[]foriindefforiinstu[i][0]=input('inputstudentnum:\n')stu[i][1]=input('inputstudentname:\n')forjinrange(3):defoutput_stu(stu):foriinrange(N):print('%-6s%-10s'%(stu[i][0],stu[i][1]))forjinrange(3):print('%-8d'%if ==' print(student)题目程序分 原文不太靠谱classdef (self,data):self.data=dataself.next=Nonedefget_data(self):returnself.dataclassdef (self,head):self.head=headdefreturnself.get_len()==deflength=temp=whiletempisnotNone:length+=1temp=temp.nextreturnlengthdefappend(self,node):temp=self.headwhiletemp.nextisnotNone:temp=temp.nexttemp.next=defdelete(self,ifindex1orindexself.get_len():print("给定位置不合理")ifindex==self.head=self.head.nexttemp=cur_pos=whiletempisnotNone:cur_pos+=1ifcur_pos==index-temp.next=temp.next.nexttemp=temp.nextdefinsert(self,pos,ifpos<1orpos>self.get_len():print("插入结点位置不合理")temp=self.headcur_pos=0whiletempisnotNode:cur_pos+=1ifcur_pos==pos-1:node.next=temp.nexttemp.next=nodetemp=defreverse(self,ifheadisNoneandhead.nextisNone:returnheadpre=cur=whilecurisnotNone:temp=cur.nextcur.next=prepre=curcur=temphead.next=Nonereturnpredefprint_list(self,head):init_data=[]whileheadisnothead=head.nextreturnif foriinrange(10):题目反向输出一个链表。 classdef (self,data):self.data=dataself.next=Nonedefget_data(self):returnself.dataclassdef (self,head):self.head=headdefreturnself.get_len()==deflength=temp=whiletempisnotNone:length+=1temp=temp.nextreturnlengthdefappend(self,node):temp=self.headwhiletemp.nextisnotNone:temp=temp.nexttemp.next=defdelete(self,ifindex1orindexself.get_len():print("给定位置不合理")ifindex==self.head=self.head.nexttemp=cur_pos=whiletempisnotNone:cur_pos+=1ifcur_pos==index-temp.next=temp.next.nexttemp=temp.nextdefinsert(self,pos,ifpos<1orpos>self.get_len():print("插入结点位置不合理")temp=self.headcur_pos=0whiletempisnotcur_pos+=ifcur_pos==pos-1:node.next=temp.nexttemp.next=nodetemp=defreverse(self,ifheadisNoneandhead.nextisNone:returnheadpre=cur=whilecurisnotNone:temp=cur.nextcur.next=prepre=curcur=temphead.next=Nonereturnpredefprint_list(self,head):init_data=[]whileheadisnotNone:head=head.nextreturnif foriinrange(10):074:列表排序、连接题目列表排序及连接。程序分 排序可使 方法,连接可以使 +号或 方法实例075题目放松一下,算一道简单的题目。 if ==' foriinrange(5):n=ifi!=1:n+=1ifi==3:n+=1ifi==4:n+=1ifi!=4:n+=1ifn==3:print(64+实例076题目编写一个函数,输入 n为偶数时,调用函数求 1/2+1/4+⋯+1/n,当输入n为奇数时,调用函数1/1+1/3+⋯+1/n程序分 无defpeven(n):i=0s=foriinrange(2,n+1,2):s+=1.0/ireturndefs=foriinrange(1,n+1,2):s+=1.0/ireturndefs=fp(n)returnsif == n=int(input('inputanumber:'))ifn%2==0:sum=sum=print(sum)实例077题目循环输出列表 foriinrange(len(l)):实例078题目找到年龄最大的人,并输出。请找出程序中有什么问题。 if == person={"li":18,"wang":50,"zhang":20,"sun":22}m='li'forkeyinifperson[m]<person[key]:m=keyprint('%s,%d'%(m,person[m]))实例079题目字符串排序。 实例080题目海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份, 拿走了一份。第二只猴子把剩下的桃子又平均分成五份, 程序分 无if == i=j=x=while(i<5)x=4*foriinrange(0,5):if(x%4!=0):else:i+=x=(x/4)*5j+=forpin实例081题目 其中??代表的两位数,809*??为四位数,8*??的结果为两位数9*??的结果为3位数。求??代表的两位数,及 a=foriinrange(10,100):b=i*aifb>=1000andb<=10000and8*i<100and9*i>=print(b,'=800*',i,'+9*',foriinif8*i>99or9*i<100:if809*i==800*i+9*i:实例082题目八进制转换为十进制 八进制输入:'))))实例083题目求0—7所能组成的奇数个数。组成1位数是41,3,5,7组成2位数是7*4个。第一位不能 组成3位数是7*8*4 组成4位数是7*8*8*4 if ==' sum=4s=forjinrange(2,9):print(sum)ifj<=s*=s*=sum+=sprint('sum=%d'%sum)实例084:连接字符串题目连接字符串。 delimiter=mylist=['Brazil','Russia','India','China']实例085题目输入一个奇数,然后判断最少几个 9除于该数的结果为整数。 999999/13=76923。if == ziint(input('输入一个数字:'))n1=1c9=m9=sum=9whilen1!=0:ifsum%zi==0:n1=0m9*=10sum+=m9c9+=1print('%d 个9可以被%d整除%d(c9,zi,sum))r=sum/ziprint('%d/%d=%d'%(sum,zi,r))实例086:连接字符串题目两个字符串连接程序。 实例087题目回答结果(结构体变量传递)。 if ==' classstudent:x=c=0deff(stu):stu.x=20stu.c='c'a=a.x=a.c='a'实例088题目读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。 foriinprint('*'*int(input('inputanumber:实例089题目 10的余数代替该数字,再将第一位和第四位交程序分 无n=str(n)foriinprint("".join('%s'%sforsin实例090:列表详解题目列表使用实例。 testList=[10086,'中国移动print(len(testList) printtestList.append('i\'mnewhere!')print(len(testList) print(testList[-1] print(testList.pop(1) print(len(testList) print(testList #listmatrix=[[1,2,3],[4,5,[7,8,print(matrix print(matrix[1] col2=[row[1]forrowinmatrix]#get columnfromaprint col2even=[row[1]forrowinmatrixif row[1]%2==0]#filterodditemprint(col2even)实例091time题目时间函数举例 if ==' importtimeprintprint(time.asctime(time.localtime(time.time()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论