🍀第一题
题目:打印出如下图案(菱形):
我们首先分析一下,本题实现的步骤主要有两个,分别是前四行和后三行
- 前四行:第一行三空格+一*,第二行两空格+三*,第三行一空格+五*,第四行五空格+七*
- 后三行:第一行一空格五*,第二行两空格+三*,第三行三空格+一*
这里我们就可以找到规律了,如果以行为函数的参数,我们不妨将其设定为外循环的参数
代码如下
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的所有数字,直接从阶乘值列表中取出对应的阶乘值,并将它们相加以得到总和。
挑战与创造都是很痛苦的,但是很充实。