Python经典练习题(四)

简介: Python经典练习题(四)

🍀第一题

题目:打印出如下图案(菱形):

我们首先分析一下,本题实现的步骤主要有两个,分别是前四行和后三行

  • 前四行:第一行三空格+一*,第二行两空格+三*,第三行一空格+五*,第四行五空格+七*
  • 后三行:第一行一空格五*,第二行两空格+三*,第三行三空格+一*

这里我们就可以找到规律了,如果以行为函数的参数,我们不妨将其设定为外循环的参数

代码如下

def f1(rowup): # 前四行
    for i in range(rowup):
        for j in range(rowup - i):
            print(' ',end='')
        for k in range(2 * i +1):
            print("*",end='')
        print()
def f2(rowdown): # 后三行
    for i in range(rowdown):
        for j in range(i + 2):
            print(" ",end='')
        for k in range(5- 2 * i):
            print("*",end='')
        print()

运行结果


🍀第二题

有一分数序列:2/1,3/2,5/3,8/5, 13/8,21/13…求出这个数列的前20项之和。

def generate_fibonacci(n):
    fib = [0, 1]  # 初始化斐波那契数列的前两项
    while len(fib) < n:
        next_fib = fib[-1] + fib[-2]  # 计算下一项
        fib.append(next_fib)  # 将下一项添加到列表中
    return fib
# 生成斐波那契数列的前n项
n = 23  # 你可以替换成任何你想要的项数
fibonacci_sequence = generate_fibonacci(n)
sum_numbers= []
for i in range(20):
    result = float(fibonacci_sequence[3:][i] / fibonacci_sequence[2:][i])
    sum_numbers.append(result)
print(sum(sum_numbers))

本题我的思路采用列表切片,看起来有点傻,但是能做出来就是好滴

运行结果如下


🍀第三题

题目:求1+2!+3!+…+20!的和。

本题采用三种方法进行求解

方法一:使用循环计算阶乘和求和

def factorial(n):
    result = 1
    for i in range(1, n + 1):
        result *= i
    return result
n = 20
total = sum(factorial(i) for i in range(1, n + 1))
print("方法一的结果:", total)

方法一:使用循环计算阶乘和求和

这个方法使用了一个for循环来计算每个数字的阶乘,然后将它们相加以得到最终的和。具体思路如下:

  • 创建一个函数factorial(n),它接受一个整数n作为输入,并返回n的阶乘。
  • 在主程序中,通过一个for循环遍历从1到20的所有数字,分别调用factorial()函数来计算它们的阶乘。
  • 将每个阶乘值加到一个累加器变量中,最终得到总和。

方法二:使用递归计算阶乘和求和

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)
n = 20
total = sum(factorial(i) for i in range(1, n + 1))
print("方法二的结果:", total)

方法二:使用递归计算阶乘和求和

这个方法使用了递归来计算每个数字的阶乘,然后将它们相加以得到最终的和。具体思路如下:

  • 创建一个函数factorial(n),它接受一个整数n作为输入,并返回n的阶乘。
  • 在factorial()函数内部,使用递归来计算阶乘。基本情况是当n为0时,阶乘为1;否则,递归调用factorial(n-1)并将结果与n相乘。
  • 在主程序中,通过一个for循环遍历从1到20的所有数字,分别调用factorial()函数来计算它们的阶乘。
  • 将每个阶乘值加到一个累加器变量中,最终得到总和。

方法三:使用预先计算好的阶乘值求和

def precompute_factorials(n):
    factorials = [1]
    for i in range(1, n + 1):
        factorials.append(factorials[-1] * i)
    return factorials
n = 20
factorials = precompute_factorials(n)
total = sum(factorials[i] for i in range(1, n + 1))
print("方法三的结果:", total)

方法三:使用预先计算好的阶乘值求和

这个方法首先预先计算了1到20的所有数字的阶乘值,然后直接使用这些值来求和。具体思路如下:

  • 创建一个函数precompute_factorials(n),它接受一个整数n作为输入,并返回一个包含1到n的所有数字的阶乘值的列表。
  • 在precompute_factorials()函数内部,使用一个for循环来计算1到n的所有数字的阶乘,并将它们存储在列表中。
  • 在主程序中,调用precompute_factorials(20)来获取1到20的所有数字的阶乘值列表。
  • 使用一个for循环遍历从1到20的所有数字,直接从阶乘值列表中取出对应的阶乘值,并将它们相加以得到总和。

挑战与创造都是很痛苦的,但是很充实。

相关文章
|
8月前
|
存储 Python
Python经典练习题(三)
Python经典练习题(三)
|
3天前
|
算法 小程序 搜索推荐
python一百道经典基础练习题目
python一百道经典基础练习题目
66 1
|
8月前
|
Python
Python经典练习题(一)
Python经典练习题(一)
|
8月前
|
Python
Python经典练习题(二)
Python经典练习题(二)
|
11月前
|
测试技术 Python
【Python经典题目】闵可夫斯基距问题
Python经典习题,闵可夫斯基距问题
161 0
|
Python
Python 基础练习题(二)
Python 基础练习题
164 0
|
Python
Python 基础练习题(一)
Python 基础练习题
155 0
|
Python
Python 基础练习题(三)
Python 基础练习题
101 0
|
SQL 算法 Python
python经典习题(三)
python经典习题(三)
101 0
python经典习题(三)
|
SQL 存储 算法
python经典习题(一)
python经典习题(一)
76 0
python经典习题(一)