# 3. 计算 20 个百斐波那契数( fabonacci 数)
# 存于列表中,最后打印这20个数
# 1, 1, 2, 3, 5, 8, 13, ...
# (从第三个数起,后一个数是前两个数之和)
# 方法1
L = []
a = 1
b = 1
L.append(a)
L.append(b)
# c 变量 代表下一个值 c = a + b
while len(L) < 20:
c = a + b # 计算下一个值
L.append(c)
a = b # 让a绑定的对象向后移动一个
b = c # 让b绑定的对象向后移动一个
print(L)
# 方法2
L = []
a = 1
b = 1
L.append(a)
L.append(b)
# c 变量 代表下一个值 c = a + b
while len(L) < 20:
L.append(a + b)
a, b = b, a + b
print(L)
# 方法3
L = [1, 1]
while len(L) < 20:
L.append(L[-1] + L[-2])
print(L)
# 练习:
# 任意输入一个字符串,将此字符串中的空格全部去掉,生成返转后的字符串:
# 如:
# 输入: abc def g<回车>
# 打印输出: gfedcba
# (提示:可以用反向切片或reversed进行反转)
s = input("请输入: ")
# 方法1 替换
# s2 = s.replace(' ', '')
# s2 = s2[::-1]
# print(s2)
# 方法2
# L = []
# for x in reversed(s): # 反向迭代
# if x != ' ': # 把不是空格的加入到列表中
# L.append(x)
# s2 = ''.join(L)
# print(s2)
# 以下方法是错的
# L = list(s)
# for index in range(len(L)): # 'abc def g'
# if L[index] == ' ':
# del L[index] # 此种方法索引越界
# 方法3:
# L = s.split() # ['abc', 'def', 'g']
# s2 = ''.join(L) # 'abcdefg'
# s2 = s2[::-1] # 'gfedcba'
# print(s2)
# 方法4
s2 = ''.join([x for x in reversed(s) if x != ' '])
print(s2)