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的所有数字,直接从阶乘值列表中取出对应的阶乘值,并将它们相加以得到总和。

请添加图片描述

挑战与创造都是很痛苦的,但是很充实。文章来源地址https://www.uudwc.com/A/gVRe1/

原文地址:https://blog.csdn.net/null18/article/details/133361672

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

上一篇 2023年10月01日 08:37
Pandas行列转换
下一篇 2023年10月01日 09:37