sum=months[month-1]
else:
print
'dataerror'
sum+=day
leap=0
if(year%400==0)or((year%4==0)and(year%100!
=0)):
leap=1
if(leap==1)and(month>2):
sum+=1
print('itisthe%dthday.'%sum)
五、Python练习实例5题目:
输入三个整数x,y,z,请把这三个数由小到大输出。
程序分析:
我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
程序源代码:
#!
/usr/bin/python
#-*-coding:
UTF-8-*-l=[]foriinrange(3):
x=int(input('integer:
\n'))l.append(x)
l.sort()
print(l)
六、Python练习实例6题目:
斐波那契数列。
程序分析:
斐波那契数列(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)程序源代码:
#!
/usr/bin/python
#-*-coding:
UTF-8-*-deffib(n):
a,b=1,1
foriinrange(n-1):
a,b=b,a+breturna
#输出了第10个斐波那契数列print(fib(10))
#使用递归
deffib(n):
ifn==1orn==2:
return1
returnfib(n-1)+fib(n-2)
#输出了第10个斐波那契数列print(fib(10))deffib(n):
ifn==1:
return[1]
ifn==2:
return[1,1]
fibs=[1,1]
foriinrange(2,n):
fibs.append(fibs[-1]+fibs[-2])
returnfibs
#输出前10个斐波那契数列print(fib(10))
七、Python练习实例7题目:
将一个列表的数据复制到另一个列表中。
程序分析:
使用列表[:
]。
程序源代码:
#!
/usr/bin/python
#-*-coding:
UTF-8-*-a=[1,2,3]b=a[:
]print(b)
八、Python练习实例8题目:
输出9*9乘法口诀表。
程序分析:
分行与列考虑,共9行9列,i控制行,j控制列程序源代码:
foriinrange(1,10):
forjinrange(1,i+1):
print("""%d*%d=%d"""%(i,j,i*j),end="")print()
九、Python练习实例9题目:
暂停一秒输出。
程序分析:
使用time模块的sleep()函数#!
/usr/bin/python
#-*-coding:
UTF-8-*-importtimemyD={1:
'a',2:
'b'}forkey,valueindict.items(myD):
print(key,value)time.sleep
(1)#暂停1秒
十、Python练习实例10题目:
暂停一秒输出,并格式化当前时间。
程序分析:
无。
程序源代码:
#!
/usr/bin/python
#
%H:
%M:
%S',time.localtime(time.time())))
%H:
%M:
%S',time.localtime(time.time())))
-*-coding:
UTF-8-*-importtimeprint(time.strftime('%Y-%m-%d
#暂停一秒
time.sleep
(1)print(time.strftime('%Y-%m-%d十一、Python练习实例11Python100例Python100例题目:
古典问题:
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
程序分析:
兔子的规律为数列1,1,2,3,5,8,13,21
程序源代码:
#!
/usr/bin/python
#-*-coding:
UTF-8-*-
f1=1
f2=1
foriinrange(1,22):
print('%12ld%12ld'%(f1,f2),),
if(i%3)==0:
print('')
f1=f1+f2
f2=f1+f2
十二、Python练习实例12题目:
判断101-200之间有多少个素数,并输出所有素数。
程序分析:
判断素数的方法:
用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
程序源代码:
#!
/usr/bin/python
#-*-coding:
UTF-8-*-
h=0
leap=1
frommathimportsqrt
fromsysimportstdout
forminrange(101,201):
k=int(sqrt(m+1))
foriinrange(2,k+1):
ifm%i==0:
leap=0
break
ifleap==1:
print('%-4d'%m)
h+=1
ifh%10==0:
print('')
leap=1
print('Thetotalis%d'%h)十三、Python练习实例13题目:
打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
例如:
153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
程序分析:
利用for循环控制100-999个数,每个数分解出个位,十位,百位。
程序源代码:
print("100-999之间的水仙花数有:
")
foriinrange(100,999):
j=int(i/1%10)#个位使用int的原因是强转故意让其损失精度,Python中使用此方法获取时必须强转因为Python中默认保留小数
k=int(i/10%10)#十位
m=int(i/100%10)#百位
ifi==(j**3+k**3+m**3):
print(i)
十四、Python练习实例14题目:
将一个正整数分解质因数。
例如:
输入90,打印出90=2*3*3*5。
程序分析:
对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤
完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
⑵如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
⑶如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
程序源代码:
while1:
n=int(input('请输入一个整数:
'))
print('%d='%n,end='')
whilen>1:
foriinrange(2,n+1):
ifn%i==0:
n=int(n/i)
ifn==1:
print('%d'%i,end='')else:
print('%d*'%i,end='')
break
print()
十五、Python练习实例15题目:
利用条件运算符的嵌套来完成此题:
学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
程序分析:
程序分析:
(a>b)?
a:
b这是条件运算符的基本例子。
程序源代码:
#!
/usr/bin/python
#-*-coding:
UTF-8-*-
score=int(input('输入分数:
\n'))
ifscore>=90:
grade='A'
elifscore>=60:
grade='B'else:
grade='C'print('%d属于%s'%(score,grade))十六、Python练习实例16题目:
输出指定格式的日期。
程序分析:
使用datetime模块。
#!
/usr/bin/python
#-*-coding:
UTF-8-*-importdatetimeif__name__=='__main__':
#输出今日日期,格式为dd/mm/yyyy。
更多选项可以查看strftime()法
print(datetime.date.today().strftime('%d/%m/%Y'))
#创建日期对象miyazakiBirthDate=datetime.date(1941,1,5)print(miyazakiBirthDate.strftime('%d/%m/%Y'))
#日期算术运算
miyazakiBirthNextDay=miyazakiBirthDatedatetime.timedelta(days=1)
print(miyazakiBirthNextDay.strftime('%d/%m/%Y'))
#日期替换miyazakiFirstBirthdaymiyazakiBirthDate.replace(year=miyazakiBirthDate.year+1)print(miyazakiFirstBirthday.strftime('%d/%m/%Y'))十七、Python练习实例17题目:
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
程序分析:
利用while或for语句,条件为输入的字符不为'\n'。
#!
/usr/bin/python
#-*-coding:
UTF-8-*-importstrings=input('请输入一个字符串:
\n')letters=0space=0digit=0others=0
i=0whileic=s[i]
i+=1
ifc.isalpha():
letters+=1elifc.isspace():
space+=1
elifc.isdigit():
digit+=1
else:
others+=1
print('char=%d,space=%d,digit=%d,others=%d'%(letters,space,digit,others))十八、Python练习实例18
题目:
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
程序分析:
关键是计算出每一项的值。
程序源代码:
#!
/usr/bin/python
#-*-coding:
UTF-8-*-
Tn=0
Sn=[]n=int(input('n='))a=int(input('a='))forcountinrange(n):
Tn=Tn+aa=a*10Sn.append(Tn)print(Tn)
Sn=reduce(lambdax,y:
x+y,Sn)print("计算和为:
",Sn)十九、Python练习实例19题目:
一个数如果恰好等于它的因子之和,这个数就称为"完数"。
例如6=1+2+3.编程找出1000以内的所有完数。
程序分析:
请参照程序Python练习实例14。
程序源代码:
#!
/usr/bin/python
#-*-coding:
UTF-8-*-fromsysimportstdoutforjinrange(2,1001):
k=[]n=-1s=jforiinrange(1,j):
ifj%i==0:
n+=1
s-=i
k.append(i)
ifs==0:
print(j)
foriinrange(n):
stdout.write(str(k[i]))stdout.write('')
print(k[n])
二十、Python练习实例20
题目:
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?
第10次反弹多高?
程序分析:
无程序源代码:
#!
/usr/bin/python
#-*-coding:
UTF-8-*-
tour=[]height=[]hei=100.0#起始高度tim=10#次数foriinrange(1,tim+1):
#从第二次开始,落地时的距离应该是反弹高度乘以2(弹到最高点再落下)ifi==1:
tour.append(hei)
else:
tour.append(2*hei)
hei/=2
height.append(hei)
print('总高度:
tour={0}'.format(sum(tour)))
print('第10次反弹高度:
height={0}'.format(height[-1]))二十一、Python练习实例21题目:
猴子吃桃问题:
猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
程序分析:
采取逆向思维的方法,从后往前推断。
程序源代码:
#!
/usr/bin/python
#-*-coding:
UTF-8-*-
x2=1
fordayinrange(9,0,-1):
x1=(x2+1)*2
x2=x1
print(x1)
x,y,z
比,c
二十二、Python练习实例22题目:
两个乒乓球队进行比赛,各出三人。
甲队为a,b,c三人,乙队为三人。
已抽签决定比赛名单。
有人向队员打听比赛的名单。
a说他不和x说他不和x,z比,请编程序找出三队赛手的名单。
程序源代码:
#!
/usr/bin/python
#-*-coding:
UTF-8-*-
foriinrange(ord('x'),ord('z')+1):
forjinrange(ord('x'),ord('z')+1):
ifi!
=j:
forkinrange(ord('x'),ord('z')+1):
if(i!
=k)and(j!
=k):
if(i!
=ord('x'))and(k!
=ord('x'))and(k!
=
ord('z')):
print('orderisa--%s\tb--%s\tc--%s'%
(chr(i),chr(j),chr(k)))
二十三、Python练习实例23
题目:
打印出如下图案(菱形):
*****
*******
*****
程序分析:
先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。
程序源代码:
#!
/usr/bin/python
#-*-coding:
UTF-8-*-fromsysimportstdoutforiinrange(4):
forjinrange(2-i+1):
stdout.write('')
forkinrange(2*i+1):
stdout.write('*')
print('\n')foriinrange(3):
forjinrange(i+1):
stdout.write('')
forkinrange(4-2*i+1):
stdout.write('*')
求出这个数列的
print('\n')二十四、Python练习实例24题目:
有一分数序列:
2/1,3/2,5/3,8/5,13/8,21/13...前20项之和。
程序分析:
请抓住分子与分母的变化规律。
程序源代码:
方法一:
#!
/usr/bin/python
#-*-coding:
UTF-8-*-a=2.0b=1.0s=0forninrange(1,21):
s+=a/b
t=a
a=a+b
b=tprint(s)二十五、Python练习实例25题目:
求1+2!
+3!
+...+20!
的和。
程序分析:
此程序只是把累加变成了累乘。
#!
/usr/bin/python
#-*-coding:
UTF-8-*-n=0s=0t=1forninrange(1,21):
t*=n
s+=tprint('1!
+2!
+3!
+...+20!
=%d'%s)二十六、Python练习实例26题目:
利用递归方法求5!
。
程序分析:
递归公式:
fn=fn_1*4!
程序源代码:
#!
/usr/bin/python#-*-coding:
UTF-8-*-deffact(j):
sum=0
ifj==0:
sum=1
else:
sum=j