# 练习:
#   1. 求 1 ** 2 + 2 ** 2 + 3 ** 2 + ... + 9**2 的和
#   2. 求 1 ** 3 + 2 ** 3 + 3 ** 3 + ... + 9**3 的和
#   3. 求 1**9 + 2**8 + 3**7 + ... + 9**1的和  # 11377


# 1. 求 1 ** 2 + 2 ** 2 + 3 ** 2 + ... + 9**2 的和
# 不用函数式编程的方法1
s = 0
for x in range(1, 10):
    s += x ** 2
print(s)

# 方法2
def pow2(x):
    return x ** 2
print(sum(map(pow2, range(1, 10))))
# 方法3
print(sum(map(lambda x: x**2, range(1, 10))))

# 2. 求 1 ** 3 + 2 ** 3 + 3 ** 3 + ... + 9**3 的和
print(sum(map(lambda x: x**3, range(1, 10))))

# 3. 求 1**9 + 2**8 + 3**7 + ... + 9**1的和  # 11377
print(sum(map(pow, range(1, 10), range(9, 0, -1))))

