练习14:
#题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
1 from functools import reduce 2 a=int(input("几次重复加:")) 3 b=int(input("想要重复的数字是:")) 4 s=[] 5 tn=0 6 #sum=b*a*10+b*(a-1)*10+…………+b*1*10 7 for count in range(0,a): 8 tn=tn+b 9 b=10*b 10 s.append(tn) 11 print(tn) 12 s = reduce(lambda x,y : x + y,s) 13 print ("计算和为:",s)
练习15
#题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
from functools import reduce def num(): for s in range(2,1000): l = [] for i in range(1,s): if s%i==0: l.append(i) i+=1 def f(x, y): return x + y sum=reduce(f,l) if sum == s: print(s,list(l)) s+=1 num()
练习16
#题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
from functools import reduce l = [] def sum(a): for i in range(1,10): k=a/2 l.append(k*2) i+=1 a=k sum(100) def f(x,y): return x+y print("在第10次落地时,共经过多少米{0}".format(float(reduce(f,l))+100)) print(l[8]) print("第10次反弹多高{0[8]}".format(l))
练习17
#题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
x2 = 1 for day in range(9, 0, -1): x1 = (x2 + 1) * 2 x2 = x1 print (x1) #程序分析:采取逆向思维的方法,从后往前推断。 ''' 第10天=1 第9天=(第10天+1)*2 第8天=(第9天+1)*2 ……………… 第1天=(第2天+1)*2=总共有多少个桃子 '''
练习18
#两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。
# 已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
teamA=["a","b","c"] teamB=["x","y","z"] s=((a,b) for a in teamA for b in teamB ) l=[("a","x"),("c","x"),("c","z")] print(list(set(s)^set(l))) #打散再组合
练习19
#打印出菱形
for n in range(1,8,2): 空格数 = int((7 - n) / 2) 星星数 = n print(空格数 * " ", 星星数 * "*", 空格数 * " ") for m in range(5,0,-2): 空格数 = int((7 - m) / 2) 星星数 = m print(空格数 * " ", 星星数 * "*", 空格数 * " ")
练习20
#题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
from functools import reduce l=[1,1] 除数序列=[] for i in range(0,20): a=l[i+1]+l[i] l.append(a) b=l[i+1] 除数序列.append(a/b) i+=1 print(除数序列) 求和 = reduce(lambda x,y : x + y,除数序列) print ("计算和为:",求和) ''' a = 2.0 b = 1.0 l = [] l.append(a / b) for n in range(1,20): b,a = a,a + b l.append(a / b) print reduce(lambda x,y: x + y,l) '''