23.题目:打印菱形
程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。
注:将这个图形看成对称的,前面和后面的编辑方式正好相反
代码:
#23
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('')
输出:
24.题目:
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
程序分析:请抓住分子与分母的变化规律。
注:后面一个数等于前面两个数之和
知识点:
1. reduce() 函数会对参数序列中元素进行累积。
函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
2. lambda x,y: x + y : 定义自变量x,因变量y的函数,x = x+y ; y = x/y
#23
from functools import reducea = 2.0
b = 1.0
l = []
l.append(a / b)
for n in range(1,20):b,a = a,a + bl.append(a / b)
print (reduce(lambda x,y: x + y,l))
输出: