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**2print(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 = 0for i in range(1, n+1):result += i ** 2return resultn = 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 1else: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 = 0for i in range(1, n+1):result += i ** 2return resultn = int(input("请输入数列的项数:"))
print(f"数列前{n}项的平方和为:{square_sum(n)}。")

【递归函数代码】

def square_sum(n):if n == 1:return 1else:return n**2 + square_sum(n-1)n = int(input("请输入数列的项数:"))
print(f"数列前{n}项的平方和为:{square_sum(n)}")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/39716.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spark的standalone 分布式搭建

一、环境准备 集群环境hadoop11,hadoop12 ,hadoop13 安装 zookeeper 和 HDFS 1、启动zookeeper -- 启动zookeeper(11,12,13都需要启动) xcall.sh zkServer.sh start -- 或者 zk.sh start -- xcall.sh 和zk.sh都是自己写的脚本-- 查看进程 jps -- 有…

C++中配置OpenCV的教程

首先去OpenCV的官网下载OpenCV安装包,选择合适的平台和版本进行下载,我下载的是Windows的OpenCV-4.7.0版本。OpenCV下载地址 下载好后,解压到自己指定的路径。 配置环境变量: WinR键打开运行窗口,输入sysdm.cpl打开系…

星星之火:国产讯飞星火大模型的实际使用体验(与GPT对比)

#AIGC技术内容创作征文|全网寻找AI创作者,快来释放你的创作潜能吧!# 文章目录 1 前言2 测试详情2.1 文案写作2.2 知识写作2.3 阅读理解2.4 语意测试(重点关注)2.5 常识性测试(重点关注)2.6 代码…

常识判断

头像 carrin~👻 产品经理 225/753 75/302.5 30/152 15/101.5 等差数列,所以最后一个是10/101 收起 60 回复 发布于 2020-02-18 16:33

Mysql之explain详解

1. explain作用 使用explain可以展示出sql语句的执行计划,再根据sql的执行计划去判断这条sql有哪些点可以进行优化,从而让sql的效率达到最大化。 2. 执行计划各列含义 (1)id:id列是select的序列号,这个…

React18TS项目:配置react-css-modules,使用styleName

他的好处不说了 网上一堆文章一个能打的都没有, 添加开发依赖 pnpm add -D dr.pogodin/babel-plugin-react-css-modules types/react-css-modules Babel Plugin "React CSS Modules" | Dr. Pogodin Studio 看dr.pogodin/babel-plugin-react-css-mo…

centos7安装erlang及rabbitMQ

下载前注意事项: 第一:自己的系统版本,centos中uname -a指令可以查看,el8,el7,rabbitMQ的包不一样! 第二:根据rabbitMQ中erlang version找到想要下载rabbitMQ对应erlang版本&#x…

封装、继承、多态

封装是什么? 封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 封装,是把客观…

C++储备

一、类的 三大特性 封装,继承,多态 二、虚函数 为啥要用到虚函数 C虚函数详解_Whitesad_的博客-CSDN博客 三、函数重载 四、封装的保护权限 1.public 成员类内,内外都可以访问 2.protected 成员,类内可以访问&#xff0c…

大牛分析相机镜头光学中疑难问题

1、变焦和对焦有什么区别? 变焦就是改变镜头的焦距(准确说是像距),以改变拍摄的视角,也就是通常所说的把被摄体拉近或推远。例如18-55mm和70-200mm镜头就是典型的变焦镜头。焦距越长,视角越窄。 对焦通常指调整镜片组和底片(传感器平面)之间的距离,从而使被摄物在CC…

SElinux 导致 Keepalived 检测脚本无法执行

哈喽大家好,我是咸鱼 今天我们来看一个关于 Keepalived 检测脚本无法执行的问题 一位粉丝后台私信我,说他部署的 keepalived 集群 vrrp_script 模块中的脚本执行失败了,但是手动执行这个脚本却没有任何问题 这个问题也是咸鱼第一次遇到&…

《安富莱嵌入式周报》第320期:键盘敲击声解码, 军工级boot设计,开源CNC运动控制器,C语言设计笔记,开源GPS车辆跟踪器,一键生成RTOS任务链表

周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: https://www.bilibili.com/video/BV1Cr4y1d7Mp/ 《安富莱嵌入式周报》第320期:键盘敲击…

【智慧工地源码】:人工智能、BIM技术、机器学习在智慧工地的应用

智慧工地云平台是专为建筑施工领域所打造的一体化信息管理平台。通过大数据、云计算、人工智能、BIM、物联网和移动互联网等高科技技术手段,将施工区域各系统数据汇总,建立可视化数字工地。同时,围绕人、机、料、法、环等各方面关键因素&…

理解持续测试,才算理解DevOps

软件产品的成功与否,在很大程度上取决于对市场需求的及时把控,采用DevOps可以加快产品交付速度,改善用户体验,从而有助于保持领先于竞争对手的优势。 作为敏捷开发方法论的一种扩展,DevOps强调开发、测试和运维不同团…

centos如何安装libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg

在 CentOS 系统上安装这些包可以按照以下步骤进行: 打开终端,使用 root 或具有管理员权限的用户登录。 使用以下命令安装 libssl-dev 包: yum install openssl-devel使用以下命令安装 libsdl-dev 包: yum install SDL-devel使用以…

Go 安装配置

介绍Ubuntu20.04 安装和配置Go 1.安装Go 去这个地方下载Go https://go.dev/doc/install 如果之前安装过,可以参考这个(没有可以忽略) 下载完成后执行 sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz 然后修改环境变量 sudo ge…

css3-grid:grid 布局 / 基础使用

一、理解 grid 二、理解 css grid 布局 CSS Grid布局是一个二维的布局系统,它允许我们通过定义网格和网格中每个元素的位置和尺寸来进行页面布局。CSS Grid是一个非常强大的布局系统,它不仅可以用于构建网格布局,还可以用于定位元素&#xf…

ahooks.js:一款强大的React Hooks库及其API使用教程(一)

一、ahooks.js简介二、ahooks.js安装三、ahooks.js API介绍与使用教程1. useRequest2. useAntdTable3. useSize4. useBoolean5. useToggle6. useHover7. useDebounce8. useEventListener9. useFusionTable10. useKeyPress11. useLoading12. usePrevious13. useForm14. useUpdat…

代码审计-ASP.NET项目-未授权访问漏洞

代码审计必备知识点: 1、代码审计开始前准备: 环境搭建使用,工具插件安装使用,掌握各种漏洞原理及利用,代码开发类知识点。 2、代码审计前信息收集: 审计目标的程序名,版本,当前环境(系统,中间件…

Flink源码之State创建流程

StreamOperatorStateHandler 在StreamTask启动初始化时通过StreamTaskStateInitializerImpl::streamOperatorStateContext会为每个StreamOperator 创建keyedStatedBackend和operatorStateBackend,在AbstractStreamOperator中有个StreamOperatorStateHandler成员变量…