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.pswp.cn/news/39716.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39716.shtml
英文地址,請注明出處:http://en.pswp.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成員變量…