101.for循环语句练习题-求数列前n项的平方和

【目录】

文章目录

  • 101.for循环语句练习题-求数列前n项的平方和
    • 1. 求数列前n项的平方和
    • 2. 幂函数
    • 3. `f` 字符串格式化语法
    • 4. 基础代码
    • 5. 自定义函数代码
    • 6. 递归函数代码
    • 7. 代码总结

【正文】

101.for循环语句练习题-求数列前n项的平方和

1. 求数列前n项的平方和

【目标任务】

已知一个数列1,2,3,4,……,n,计算并输出其前n项的平方和。

【输入输出】

输入:1
输出:1
输入:2
输出:5
输入:3
输出:14

【平方和】

数列前n项的平方和是指将数列中每一项的平方相加得到的结果。

【题目解析】

n=1,前1项的平方和为1×1=1
n=2,前2项的平方和为1×1+2×2=5
n=3,前3项的平方和为1×1+2×2+3×3=14
n=4,前4项的平方和为1×1+2×2+3×3+4×4=30
n=n,前n项的平方和为1×1+2×2+3×3+……+n×n

2. 幂函数

【使用 ** 符号来表示幂函数】

print(2 ** 2)  # 2的2次方
print(2 ** 3)  # 2的3次方
print(2 ** 4)  # 2的4次方

【终端输出】

4
8
16

【使用 pow()函数来计算幂函数】

print(pow(2, 2)) # 2的2次方
print(pow(2, 3)) # 2的3次方
print(pow(2, 4)) # 2的4次方

【终端输出】

4
8
16

第一个参数2是底数。

第二个参数2,3,4是指数。

3. f 字符串格式化语法

当我们需要将变量的值插入到字符串中时,可以使用 f 字符串格式化来实现。

f 字符串是一种特殊的字符串,可以通过在花括号 {} 插入变量,并在字符串前加上字母f 来标识。

例如,假设我们有一个变量 name,存储了一个人的姓名,我将其插入到字符串中:

name = "安迪"
print(f"大家好,我是{name}!")

【终端输出】

大家好,我是安迪!

【课堂练习】

用f字符串格式化方法输出:n=2时,平方和为 5。

i = 2 
square_sum = 5
print(f"n={i}时,平方和为 {square_sum}。")

【终端输出】

n=2时,平方和为 5。

f 字符串格式化语法相关知识可参考下面的链接:

53.Python的f格式化字符串

4. 基础代码

求一个数列前n项的平方和与求一个数列的前n项在逻辑上是一样的。

【求和代码回顾】

n = int(input("请输入一个正整数n:"))
add = 0
# 题目要求包括n,因此range函数需要以n+1结尾
for i in range(1,n+1):  
    add += i
print(add)

不管解什么题,在你无从下手时,记得从最简单的代码开始编写起。

先从n = 1开始编写:

【n = 1】

n = 1 
square_sum = n**2  #  n**2表示n的2次方
print(square_sum ) # square_sum是变量名,表示平方和

【终端输出】

1

【n = 2】

n=2,前2项的平方和为1×1+2×2=5 。

n=2,要取出1和2两个值来进行计算,我们第一时间就应该想到for循环语句。

因为从1到n是一个范围,在某个范围内我们肯定要用到for循环语句。

n=2,加上for循环语句,我们应该第一时间想到用for i in range(1,3)

求和的思路如下:

使用一个变量add来保存和的结果,并给这个变量赋一个初始值0
通过循环将每次取到的值添加到这个变量中。

求平方和的思路同样如下:

先定义一个存储平方和的变量square_sum
给它赋一个初始值0
将每次取到的值进行平方计算后和square_sum进行累加。

为了检测输出结果是否正确,这里我会输出每次循环后得到的值,因此这里我将print放在for循环的代码中

n = 2
square_sum =0
for i in range(1, n+1):    
    square_sum = square_sum + i**2 
    print(square_sum)

【终端输出】

1
5

为了让输出结果更直观,我用f字符串格式化语法对输出语句进行优化:

n = 2
square_sum =0
for i in range(1, n+1):    
    square_sum = square_sum + i**2
    print(f"n={i}时,平方和为 {square_sum}。")

【终端输出】

n=1时,平方和为 1。
n=2时,平方和为 5。

观察输出语句,程序计算正确,最后我给代码加上输入语句:

n = int(input("请输入一个正整数:"))
square_sum =0
for i in range(1, n+1):    
    square_sum = square_sum + i*i 
    print(f"n={i}时,平方和为 {square_sum}。")

【终端输出】

n=1时,平方和为 1。
n=2时,平方和为 5。
n=3时,平方和为 14。
n=4时,平方和为 30。
n=5时,平方和为 55。

终端输入的值为5。

观察输出结果,程序计算正确。

题目只要求输出最终的结果,我们只需要输出最后一次循环的值即可。

print语句的位置调整到和for语句对齐,只输出最终的结果:

n = int(input("请输入一个正整数:"))
square_sum =0
for i in range(1, n+1):    
    square_sum = square_sum + i*i 
print(f"n={i}时,平方和为 {square_sum}。")

【终端输出】

n=3时,平方和为 14。

重点关注print语句的位置哦!!!

5. 自定义函数代码

【代码示例】

def square_sum(n):
    result = 0
    for i in range(1, n+1):
        result += i ** 2
    return result

n = int(input("请输入数列的项数:"))
print(f"数列前{n}项的平方和为:{square_sum(n)}。")

【终端输出】

数列前3项的平方和为:14。

【代码解析】

def square_sum(n):

自定义一个函数,函数名为 square_sum,它接受一个参数 n

result = 0

创建一个变量 result,并将其初始化为0。
这个变量将用来保存平方和的结果。

for i in range(1, n+1):

for循环语句从1循环到 n(包含 n),每次循环将当前的值赋给变量 i。

result += i ** 2

在每次循环中,将 i 的平方加到 result 变量中。即将当前项的平方累加到结果中。

return result

函数执行完毕后,返回最终的结果 result。

n = int(input("请输入数列的项数:"))

获取用户输入的数列项数 n,使用 input 函数获取用户输入的字符串,然后使用 int 函数将其转换为整数型。

print(f"数列前{n}项的平方和为:{square_sum(n)}。")

使用 f 字符串格式化输出结果,将数列项数和平方和的结果插入到字符串中,并通过 print 函数输出。

square_sum(n)调用函数语句,square_sum是函数名,n是参数。

6. 递归函数代码

【代码示例】

def square_sum(n):
    if n == 1:
        return 1
    else:
        return n**2 + square_sum(n-1)

n = int(input("请输入数列的项数:"))
print(f"数列前{n}项的平方和为:{square_sum(n)}。")

【终端输出】

数列前3项的平方和为:14。

【代码解析】

if n == 1:

这是一个条件语句,判断 n 是否等于 1。

return 1

如果 n 等于 1,则直接返回 1,终止递归

else:

如果 n 不等于 1,则执行下面的语句块。

return n**2 + square_sum(n-1)

这是一个递归语句。

该语句计算当前项的平方 n**2,并将其与前 n-1 项的平方和 square_sum(n-1) 相加,作为递归函数的返回值。

【递归过程解析】

假设我们输入的 n 的值为 3,即计算数列前 3 项的平方和,程序执行的过程如下:

  • 第一次调用 square_sum(3)

  • n 不等于 1,执行 else 部分的代码。

  • 返回 3**2 + square_sum(2)

  • 第二次调用 square_sum(2)`:

  • n 不等于 1,执行 else 部分的代码。

  • 返回 2**2 + square_sum(1)

  • 第三次调用 square_sum(1)

  • n 等于 1,执行 if 部分的代码。

  • 返回 1

  • 回到第二次调用的结果,此时返回的值为 2**2 + square_sum(1),即 4 + 1 = 5。

  • 回到第一次调用的结果,此时返回的值为 3**2 + square_sum(2),即 9 + 5 = 14。

【总结】

递归的执行过程是不断调用自身。

每次递归都会将问题规模减小,直到达到递归终止条件,然后逐层返回结果,并通过相加得到最终的结果。

我们可以把递归理解成是一个先调用后返回的过程。

需要注意的是,递归函数需要有递归终止条件,否则会导致无限递归并最终引发栈溢出错误。在这个示例中,当 n 等于1时,递归终止,直接返回结果。

递归函数相关知识可参考下面的链接:

58.Python的递归函数

7. 代码总结

【基础代码】

n = int(input("请输入一个正整数:"))
square_sum =0
for i in range(1, n+1):    
    square_sum = square_sum + i*i 
print(f"n={i}时,平方和为 {square_sum}。")

【自定义函数代码】

def square_sum(n):
    result = 0
    for i in range(1, n+1):
        result += i ** 2
    return result

n = int(input("请输入数列的项数:"))
print(f"数列前{n}项的平方和为:{square_sum(n)}。")

【递归函数代码】

def square_sum(n):
    if n == 1:
        return 1
    else:
        return n**2 + square_sum(n-1)

n = int(input("请输入数列的项数:"))
print(f"数列前{n}项的平方和为:{square_sum(n)}")

你可能感兴趣的:(Python基础知识,python)