23.#打印出如下图案(菱形): ''' * *** ***** ******* ***** *** * '''
s = '*'
for i in range(1, 8, 2): #1-8步长为2:1、3、5、7前四行
print((s*i).center(7))
for i in reversed(range(1, 6, 2)): #reversed()
print((s*i).center(7))
题解思路:首先遍历1、3、5、7行,for循环步长为2;之后遍历2、4、6三行reverse翻转从第六行开始遍历。
24.#题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
lst=[]
x1 = 2.0
x2 = 1.0
lst.append(x1 / x2)
for i in range(1,20):
x2,x1=x1,x1+x2 #先计算右边,x2=2.0 x1=3.0
lst.append(x1/x2)
res=sum(lst)
print(res)
题解思路:注意x2,x1=x1,x1+x2 先计算右边后赋值给左边
25.#题目:求1+2!+3!+...+20!的和。
n=0
s=0
t=1
for n in range(1,21):
t *= n #1*1 1*2 1*2*3
s += t #1! + 2! + 3!
print(s)
题解思路:循环20次,两个变量一个存储每次累加和,另一个计算每个数字的阶乘。
26.#递归方法求5!
def func(n):
if n==0 or n==1:
#print(1)
return 1
else:
sum=n*func(n-1)
return sum
题解思路:阶乘递归n*fun(n-1)
27.#题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
str = input('请输入若干字符:')
def f(x):
if x == -1:
return ''
else:
return str[x] + f(x - 1)
print(f(len(str) - 1))