python例题21--30
例二十一,猴子吃桃的问题:猴子第一天摘下若干个桃子,当即吃了一半,还没过瘾,
又多吃了一个第二天早上有将剩下的桃子吃了一半,又多吃一个,以后每天早上都吃前一天的一半零一个。
到十天早上再想吃时就剩下一个。求第一天共摘了多少个?
x2=1
for day in range (9,0,-1):
x1=(x2+1)*2
x2=x1
print(x1)
例二十二,打印菱形,
from sys import stdout
for i in range (4):
for j in range (2-i+1):
stdout.write(' ')
for k in range (2*i+1):
stdout.write("*")
print()
for i in range (3):
for j in range (i+1):
stdout.write(' ')
for k in range (4-2*i+1):
stdout.write("*")
print()
例二十三,两个乒乓球队进行比赛,各出三人,甲队为abc三人,已队为xyz三人,
决定抽签决定比赛数据,a说他不和 x 比赛,c说他不和 x z 比,请编程序写出赛手名单。
for i in range(ord("x"),ord("z")+1):
for j in range (ord("x"),ord("z")+1):
# print(i)
if i !=j:
for k in range (ord("x"),ord("z")+1):
if (i!=k)and(j!=k):
if (i!=ord("x"))and(k!=ord("x"))and(k!=ord("z")):
print("order is a--%s\t b--%s\t c--%s"%(chr(i),chr(j),chr(k)))
例二十四,有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13。。。求出这个数列前20项之和
# 方法一
a=2.0
b=1.0
s=0
for n in range(1,21):
s+=a/b
t=a
a=a+b
b=t
print(s)
方法二
b=2.0
a=1.0
s=0
for n in range (1,21):
s+=a/b
b,a=a,a+b
print(s)
# 方法三
a=2
b=1
l=[]
for n in range (1,21):
b,a=a,a+b
l.append(a/b)
print(sum(l))
例二十五,求1+2!+3!+4!+...+20!的求和
while True:
x=int(input("输入x:\n"))
n=0
s=0
t=1
for n in range (1,x):
t*=n
s+=t
print(s)
方法二
s=0
l=range(1,21)
def op(x):
r=1
for i in range (1,x+1):
r*=i
return r
s=sum(map(op,l))
print(s)
例二十六。利用递归求阶乘!递归公式fn=fn—1*4!
b=int(input("请输入b的值:\n"))
def fact(j):
sum=0
if j==0:
sum=1
else:
sum=j*fact(j-1)
return sum
for i in range(b):
print("%d!=%d"%(i,fact(i)))
例二十七。利用递归函数调用的方式,将其输入5个字符,以相反的顺序打印出来
def output(s,l):
if l==0:
return
print(s[l-1])
output(s,l-1)
s=input("输入相关信息、\n")
l=len(s)
output(s,l)
例二十八,五个人坐在一起,问第五个人多少岁?他说比第四个人大2岁,问第四个人时,
他说比第三个人大2岁,问第二个人说比第一个人大两岁,而第一个人说自己是10岁
问第五个人多大?
n=int(input("输入的人数\n"))
c=10
count=1
while count<n:
c=2+c
count+=1
print("最后的人的年龄为",c)
def age(n):#这是用递归法
if n==1 : c=10
else:
c=age(n-1)+2
return c
print(age(5))
例二十九,给一个不多于五位数的正数,要求:一,求出它是几位数,二,逆序打印出来】
x=int(input("请输入一个数:\n"))
a=x//10000
b=x%10000//1000#x%10000降位次,
c=x%1000//100
d=x%100//10
e=x%10
# print(a,b,c,d,e)
if a!=0:
print("五位数",e,d,c,b,a)
elif b!=0:
print("四位数",e,d,c,b)
elif c!=0:
print("三位数",e,d,c)
elif d!=0:
print("两位数",e,d)
else:
print("一位数",e)
例三十, 一个五位数判断它是否是回文数,即12321是回文数
a=int(input("请输入一个数字:\n"))
x=str(a)
# print(x)
flag=True
for i in range (len(x)):
if x[i]!=x[-i-1]:
flag=False
break
if flag:
print("%d是一个回文数"%a)
else:
print("%d 不是回文数"%a)