资源描述
Python实例25例详解Python 练习 1题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足 条件的排列。程序源代码:#!/usr/bin/python#coding:UTF-8for i in range(1,5):for j in range(1,5):for k in range(1,5):if(i!=k)and(i!=j)and(j!=k):print i,j,k以上实例输出结果为:12 312 413 213 414 214 32 132 142 3 12 3 42 4 12 4 33 123 143 2 13 2 43 4 13 4 24 124 134 2 14 2 34 3 14 3 2python求质数#!/usr/bin/python#coding:UT F-8for num in range(10,20):#迭代 10 至!J 20 之间的数字for i in range(2 znum):#根据因子迭代if num%i=0:#确定第一个因子j=num/i#计算第二个因子print%d 等于%d*%d%(num,i,j)break#跳出当前循环else:#循环的else部分print num,是一,个质数,以上实例输出结果:10等于2*511是一个质数12等于2*613是个质数14等于2*715等于3*516等于2*817是一个质数18等于2*919是一个质数题目:企业发放的奖金根据利润提成。利润低于或等于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,求应发放奖金总数?程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。程序源代码:#!/usr/bin/python#一*一 coding:UT F-8 一*一 i=int(raw_input(净利润:)arr=:1000000,600000,400000,200000,100000,0rat=0.01,0.015,0.03,0.05,0.075,0.1r=0for idx in range(0,6):if iarridx:r+=(i-arridx)*ratidxprint(i-arridx)*ratidxi=arridxprint r以上实例输出结果为:净利润:1200001500.010000.011500.0Python 实例 3题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平 方数,请问该数是多少?程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268 后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:程序源代码:#!/usr/bin/python#-*-coding:UT F-8-*一import mathfor i in range(10000):#转化为整型值x=int(math,sqrt(i+100)y=int(math,sqrt(i+268)if(x*x=i+100)and(y*y=i+268):print i以上实例输出结果为:212611581Python 实例 4题目:输入某年某月某日,判断这一天是这一年的第儿天?程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第儿天,特殊 情况,闰年且输入月份大于3时需考虑多加一天:程序源代码:#!/usr/bin/python#-*-coding:UT F-8-*一year=int(raw_input(year:n)month=int(raw_input month:Xn5)day=int(raw_input(5 day:n5)months=(0,31,59,90,120,151,181,212,243,273,304,334)if 0=month 2):sum+=1print it is the%dth day.%sum以上实例输出结果为:year:2015month:6day:7it is the 158th day.Python 实例 5题目:斐波那契数列。程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是 这样一个数列:0、1、1、2、3、5、8、13、21、34、。在数学上,费波那契数列是以递归的方法来定义:F0=0(n=0)Fl=1(n=l)Fn=Fn-1+Fn-2(n=2)程序源代码:方法一tt!/usr/bin/python#-*-coding:UT F-8-*一def fib(n):a,b 1,1for i in range(n-l):a,b=b,a+b return a#输出了第1。个斐波那契数列print fib(10)方法二#!/usr/bin/python#-*-coding:UT F-8-*一#使用递归def fib(n):if n-l or n=2:return 1return fib(n-l)+fib(n-2)#输出了第10个斐波那契数列print fib(10)以上实例输出了第10个斐波那契数列,结果为:55方法三如果你需要输出指定个数的斐波那契数列,可以使用以下代码:#!/usr/bin/python#-*-coding:UT F-8-*一def fib(n):if n=1:return 1if n=2:return 1,1 fibs=1,1for i in range(2,n):fibs,append(fibs-1+fibs-21)return fibs#输出前10个斐波那契数列print fib(10)以上程序运行输出结果为:1,1,2,3,5,8,13,21,34,55Python 实例 6题目:输入三个整数x,y,z,请把这三个数由小到大输出。程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果xy 则将x与y的值进行交换,然后再用x与z进行比较,如果xz则将x与z的值 进行交换,这样能使x最小。程序源代码:#!/usr/bin/python#coding:UT F-8-*一1 二for i in range(3):x=int(raw_input(,integer:n)1.append(x)1.sort()print 1以上实例输出结果为:integer:8integer:5integer:65,6,8Python 实例 7题目:将一个列表的数据复制到另一个列表中。程序分析:使用列表口。程序源代码:#!/usr/bin/python#coding:UTF-8a=1,2,3b=a:print b以上实例输出结果为:1,2,3Python 实例 8题目:输出9*9乘法口诀表。程序分析:分行与列考虑,共9行9歹U,i控制行,j控制列。程序源代码:#!/usr/bin/python#coding:UTF-8-*-for i in rang(1,10):for j in range(1,10):result=i*jprint!%d*%d=%-3d1%(iz j,result)print-以上实例输出结果为:1*1=11*2=21*3=31*4=41*5=51*6=61*7=71*8=81*9=92*1=22*2=42*3=62*4=82*5=102*6=122*7=142*8=162*9=183*1=33*2=63*3=93*4=123*53*63*73*83*94*14*24*34*44*54*64*74*84*95*15*25*35*45*55*65*71518212427=4=8=12=16=20=24=28=32=3 6=5=10=15=20=25=30355*85*96*16*26*36*46*56*66*76*86*97*17*27*37*47*57*67*77*87*94045=6=12=18=24=30=36=42=48=54=7=14=21=28=35=42=49=5 6638*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=648*9=729*1=99*2=189*3=279*4=3 69*5=459*6=549*7=639*8=729*9=81Python 实例 9题目:暂停一秒输出。程序源代码:#!/usr/bin/python#coding:UT F-8import timemyD=1:f a1,2:,枚for key,value in diet,items(myD):print key,valuetime.sleep(1)#暂停 1 秒以上实例输出结果为(会有停顿效果):1 a2 bPython 实例 10题目:暂停一秒输出。程序源代码:#!/usr/bin/python#coding:UT F-8-*-import timeprint time.strftime(1%Y-%m-%d%H:%M:%S1,time.localtime(time.time()#暂停一秒time.sleep(1)print time,st rf time(1%Y-%m-%d%H:%M:%S,time,local time(time,time()以上实例输出结果为:2015-10-21 17:48:402015-10-21 17:48:41Python 实例 11题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.程序源代码:#!/usr/bin/python#coding:UT F-8fl=1f2=1for i in range(1,21):print 1%12d%12df%(flzf2)if(i%2)=0:print-fl=fl+f2f2=fl+f2以上实例输出结果为:1 12 35133489233610159741811094628 65775025196418514229134626935245789227465241578178215514437 7987258467 65177114 63 6812139331781183204021783095702887149303523908816963245986 102334155Python 实例 12题目:判断101-200之间有多少个素数,并输出所有素数。程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。程序源代码:#!/usr/bin/py thon#coding:UT F-8h=0leap=1from math import sqrtfrom sys import stdout for m in range(101,201):k=int(sqrt(m+1)for i in range(2,k+1):if m%i=0:leap=0 breakif leap=1:print 1%-4d 1%m h+=1if h%10=0:print-leap=1 print*T he total is%d%h以上实例输出结果为:101103107109113127131137139149151157163167173179181191193197199T hetotal is 21Python 实例 13题目:打印出所有的水仙花数,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。程序分析:利用for循环控制10)999个数,每个数分解出个位,十位,百位。程序源代码:#!/usr/bin/python#coding:UT F-8for n in range(100z1000):i=n/10 0j=n/10%10k=n%10if n=i*3+j*3+k*3:print n以上实例输出结果为:153370371407Python 实例 14题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果nk,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。程序源代码:#!/usr/bin/python#coding:UT F-8-*-from sys import stdoutn=int(raw_input(input number:nn)print nn=%d”%nfor i in range(2,n+1):while n!=i:if n%i=0:stdout.write(str(i)stdout.write(”*)n=n/ielse:breakprint n%dn%n以上实例输出结果为:input number:100n=1002*2*5*5Python 实例 15题目:利用条件运算符的嵌套来完成此题:学习成绩=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。程序分析:程序分析:(ab)?a:b这是条件运算符的基本例子。程序源代码:#!/usr/bin/python#coding:UT F-8-*一score=int(raw_input(4input score:n,)if score=90:grade=A elif score=60:grade=B else:grade=Cprint%d belongs to%s%(score,grade)以上实例输出结果为:input score:100100 belongs to APython 实例 16题目:输出指定格式的日期。程序分析:使用datetime模块。程序源代码:#!/usr/bin/python#coding:UT F-8 import datetime if _name_=1_main_#输出今日日期,格式为dd/mm/yyyy。更多选项可以查看strftime()方法print(datetime,date,today().strf time(*%d/%m/%Yf)#创建日期对象mi ya z ak iBi rt hDa te=datetime.date(1941,5)print(miyazakiBirthDate.strftime(*%d/%m/%Y1)#日期算术运算mi yaz ak iBi rthNe xt Day=miyazakiBirthDate+datetime.timedelta(days=l)print(miyazakiBirthNextDay.strftime(1%d/%m/%Y*)#日期替换miyazakiFirstBirthday=miyazakiBirthDate.replace(year=miyazakiBirthDate.year+1)print(miyazakiFirstBirthday.strftime(1%d/%m/%Y,)以上实例输出结果为:21/10/201505/01/194106/01/194105/01/1942Python 实例 17题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。程序分析:利用while语句,条件为输入的字符不为n。程序源代码:#!/usr/bin/python#coding:UT F-8import strings=raw_input(1 input a string:Xn1)letters=0space=0digit=0others=0 for c in s:if c.is alpha():letters+=1elif c.isspace():space+=1elif c.isdigit():digit+=1else:others+=1print!char=茗d,space=%dz digit=%d,others=%d%(letters,space,digit,others)以上实例输出结果为:input a string:runoobchar=6Z space=0,digit=0 fothers=0Python 实例 18题目:求s=a+aa+aaa+aaaa+aaa的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相力口),几个数相加有键盘控制。程序分析:关键是计算出每一项的值。程序源代码:#!/usr/bin/python#coding:UT F-8T n=0S n=n=int(raw_input(:n*)a=int(raw_input(*a=:Xn1)for count in range(n):T n=T n+a a=a*10 S n.append(T n)print T nS n=reduce(lambda xz y:x+yz S n)print S n以上实例输出结果为:n=:2a=:444448Python 实例 19题目:一个数如果恰好等于它的因子之和,这个数就称为“完数例如6=1+2+3.编程找出1000以内的所有完数。程序源代码:#!/usr/bin/python#coding:UT F-8from sys import stdoutfor j in range(2 r1001):k=n=-1S=jfor i in range(1,j):i f j%i=0:n+=1 s-=ik.append(i)if s=0:print jfor i in range(n):stdout.write(str(ki)stdout.write(1 1)print kn以上实例输出结果为:612 3281 2 4 7 144 961 2 4 8 16 31 62 124 248Python 实例 20题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?程序源代码:#!/usr/bin/python#coding:UT F-8S n=100.0H n=S n/2for n in range(2,11):S n+=2*H nH n/=2print!T otal of road is%f1%S n print 1 T he tenth is%f me ter1%H n以上实例输出结果为:T otal of road is 299.609375T he tenth is 0.0 97 656 meterPython 实例 21题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子 吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃 子了。求第一天共摘了多少。程序分析:采取逆向思维的方法,从后往前推断。程序源代码:#!/usr/bin/python#coding:UT F-8x2=1for day in range(9,0,-1):xl=(x2+1)*2x2=xlprint xl以上实例输出结果为:1534Python 实例 22题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,yz三人。已抽签决定比赛名单。有人向队员打 听比赛的名单。a说他不和x比,c说他不和xz比,请编程序找出1队赛手的名单。程序分析:判断素数的方法:用一个数分别去除2到sqr这个数),如果能被整除,则表明此数不是素数,反之是素数。程序源代码:#!/usr/bin/py thon#coding:UT F-8for i in range(ord(*x 1),ord(*z*)+1):for j in range(ord(1x*)zord(rz1)+1):if i!=j:for k in range(ord(1x1)z ord(1z1)+1):if(i!=k)and(j!=k):if(i!=ord(*x*)and(k!=ord(1 x*)and(k!=ord(1 z1)print forder is a 一一%st b 一一%stc一一%s*%(chr(i)zchi以上实例输出结果为:order is a z b x c yPython 实例 23题目:打印出如下图案(菱形):*(j),chr(k)程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二 层控制列。程序源代码:#!/usr/bin/python#coding:UT F-8-*-from sys import stdoutfor i in range(4):for j in range(2-i+1):stdout.write(*)for k in range(2*i+1):stdout.write(f*1)printfor i in range(3):for j in range(i+1):stdout.write(1 1)for k in range(4-2*i+1):stdout.write(f f)print以上实例输出结果为:*Python 实例 24题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13求出这个数列的前 20项之和.方法一:#!/usr/bin/python#coding:UT F-8-*一a=2.0b=1.0s=0for n in range(1,21):s+=a/bt 二 aa=a+bb=t print s方法二:#!/usr/bin/python#coding:UT F-8-*一a=2.0b=1.0s=0.0for n in range(1,21):s+=a/bb,a=a,a+b print ss=0.0for n in range(1,21):s+=a/bb,a=a,a+bprint s方法三:#!/usr/bin/python#coding:UT F-8-*一a=2.0b=1.01=for n in range(1,21):b,a=a,a+b1.append(a/b)print reduce(lambda x,y:x+y,1)以上实例输出结果为:32.6602607986Python 实例 25题目:求1+2!+3!+20!的和。程序分析:此程序只是把累加变成了累乘。程序源代码:方法一:#!/usr/bin/python#coding:UT F-8-*一n=0s=0t=1for n in range(1,21):t*二 ns+二 tprint T!+2!+3!+20!=%d%s方法二:#!/usr/bin/python#coding:UT F-8-*一s=01=range(1,21)def op(x):r=1for i in range(1,x+1):r*=ireturn rs=sum(map(op,1)print 1!+2!+3!+.+20!=d%s以上实例输出结果为:1!+2!+3!+.+20!=2561327494111820313
展开阅读全文