31天Python入門——第5天:循環那些事兒

在這里插入圖片描述

你好,我是安然無虞。

文章目錄

    • 1. while循環
      • 1.1 while循環的嵌套
      • 1.2 補充學習:print函數
    • 2. for循環
      • 2.1 range函數
      • 2.2 for循環
      • 2.3 continue和break以及return
      • 2.4 for循環的嵌套
    • 3. 補充學習
      • 3.1 enumerate函數
      • 3.2 zip函數
      • 3.3 不要在遍歷列表的過程中刪除元素

在這里插入圖片描述

循環 是編程語言常見的一種流程控制

所謂循環 就是反復的執行一段代碼

我們人類語言要讓別人反復的做一些事,可以這樣說: 請你一直怎樣怎樣,或者請你反復怎樣怎樣

Python語言要讓計算機反復的做一些事 就要使用循環語句

Python中有兩種類型的循環: while 循環 和 for 循環

1. while循環

while循環 是: 檢查一個條件表達式,只要條件表達式計算結果為True 時, 就執行下面縮進的代碼

如此反復,直到條件表達式計算結果為False時,結束 循環

while循環的基本語法:

while 條件:條件滿足時,做的事情1條件滿足時,做的事情2passi = 0# 冒號和縮進不要忘了.# 當條件的運算結果為True的時候, 會運行while代碼塊下的代碼.# 若while后的條件一直為True, 則會一直循環運行while代碼塊下的代碼.# 若為False, 則表示結束循環.# 所以需要設置循環終止的條件,否則將進入無限循環.

案例:

 *******************************************************# 打印這樣的一個高為10的直角三角形.i = 1while i <= 10:print('*' * i)i += 1

對于while循環的使用需要當心死循環, 所以需要注意循環條件.

1.1 while循環的嵌套

當我們需要在while循環內執行另一個循環時,我們可以使用while循環嵌套的形式

while循環嵌套的基本語法

 while 條件1:條件1滿足時,做的事情1條件1滿足時,做的事情2passwhile 條件2:條件2滿足時,做的事情1條件2滿足時,做的事情2pass# 第一個while循環將重復執行內部代碼塊,直到條件1不再滿足為止。在內部代碼塊中,我們有另一個while循環,它將重復執行內部代碼塊,直到條件2不再滿足為止。這種嵌套的循環結構可以用于處理許多問題.# 需要注意的是,在使用嵌套循環時,我們需要仔細考慮內部和外部循環之間的交互,以確保程序能夠正確地執行。另外,需要注意的是,循環嵌套可能會導致程序的執行速度變慢,因此我們應該盡可能地避免不必要的循環嵌套.

案例1: 打印99乘法表

 1x1=1	1x2=2	2x2=4	1x3=3	2x3=6	3x3=9	1x4=4	2x4=8	3x4=12	4x4=16	1x5=5	2x5=10	3x5=15	4x5=20	5x5=25	1x6=6	2x6=12	3x6=18	4x6=24	5x6=30	6x6=36	1x7=7	2x7=14	3x7=21	4x7=28	5x7=35	6x7=42	7x7=49	1x8=8	2x8=16	3x8=24	4x8=32	5x8=40	6x8=48	7x8=56	8x8=64	1x9=9	2x9=18	3x9=27	4x9=36	5x9=45	6x9=54	7x9=63	8x9=72	9x9=81
 """1x1=11x2=2	2x2=41x3=3	2x3=6	3x3=91x4=4	2x4=8	3x4=12	4x4=161x5=5	2x5=10	3x5=15	4x5=20	5x5=251x6=6	2x6=12	3x6=18	4x6=24	5x6=30	6x6=361x7=7	2x7=14	3x7=21	4x7=28	5x7=35	6x7=42	7x7=491x8=8	2x8=16	3x8=24	4x8=32	5x8=40	6x8=48	7x8=56	8x8=641x9=9	2x9=18	3x9=27	4x9=36	5x9=45	6x9=54	7x9=63	8x9=72	9x9=81
"""# 1. 外部循環 ?右邊是外部循環# 2. 內部循環 ?左邊是內部循環i = 1while i <= 9:j = 1while j <= i:print(f'{j}x{i}={j*i}', end='\t')j += 1print('')i += 1

1.2 補充學習:print函數

系統方法print的定義:

def print(self, *args, sep=' ', end='\n', file=None):pass

默認情況下調用print()方法會自動換行,因為參數end的缺省值是'\n'
比如:

print('hello world')

`如果想要指定結尾的表現,可以修改參數end的取值``,比如設置為空就和C語言中的printf函數一樣了,不會默認換行

print('hello world', end='')

2. for循環

2.1 range函數

在學習for循環之前, 先來學習range語句. 這是一個最常與for循環一起用的語句.

語法:

 range(start, stop[, step])

參數說明:

  • start: 計數從 start 開始。默認是從 0 開始。例如range(5)等價于range(0, 5);
  • stop: 計數到 stop 結束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]沒有5
  • step:步長,默認為1。例如:range(0, 5) 等價于 range(0, 5, 1)

2.2 for循環

在python中, 除了while循環語句, 還提供了另外一種循環: for循環語句. 也叫做遍歷.

語法:

 for 臨時變量 in 序列(可迭代對象):# for循環體的代碼塊# for循環中定義了一個臨時變量,那么在整個循環體中都可以使用這個變量,包括循環體內部的if語句或者嵌套的循環, 但是在for循環的循環體外就不要使用此臨時變量了.

for循環是一種常見的迭代結構, 用于遍歷序列中的元素, 在python中, for循環可以用于遍歷列表, 元組, 字符串, 字典, 集合等容器類型中的元素, 并將這些元素逐一賦值給循環中的臨時變量. 然后執行特定的操作, 循環會一直重復執行, 直到序列中的所有元素都被遍歷完成. 對于序列中的每個元素, 都會執行一次循環體中的代碼塊.

for循環通常有一個循環變量, 一個序列,和一個代碼塊組成, 循環變量用于存儲當前迭代的元素, 序列是要遍歷的容器類型, 代碼塊則是在每個迭代步驟中要執行的操作, 在每個迭代步驟中, 循環變量都會被賦值為序列中的下一個元素, 然后執行代碼塊. 當序列中的所有元素都被遍歷完成后, 循環結束.

for循環簡單易懂, 代碼結構清晰, 可讀性強, 是一種高效的可靠的循環結構.

for循環和while循環兩者能完成的功能差不多.

但是也是有區別的:

  1. for循環用于遍歷序列(例如列表、元組、字符串等)或其他可迭代對象,并且在每次迭代中,都會將序列中的一個元素賦值給循環變量,直到序列中的所有元素都被遍歷完畢,循環結束. while循環則用于在條件為真時執行一段代碼塊,直到條件為假為止.
  2. for循環不需要顯式地計數器變量,也不需要顯式地定義循環條件,因為循環變量會自動遍歷整個序列.而while循環則需要顯式地定義循環條件,并在代碼塊內控制循環計數器的更新.

總之,for循環適用于已知數量的序列或可迭代對象的遍歷,而while循環適用于未知數量的循環執行,需要手動控制循環計數器和條件.

2.3 continue和break以及return

continue 語句用來告訴Python跳過當前循環的剩余語句,然后繼續進行下一輪循環.

break用來跳出整個循環

很多初學者,經常會搞不清 break 和 return的區別
首先, return 只能用在函數里面, 表示 從函數中返回
代碼主體部分是不能用return的

比如,下面的代碼執行起來就會報錯

while True:command = input("請輸入命令:")if command == 'exit':returnprint(f'輸入的命令是{command}')print('程序結束')

提示:

SyntaxError: 'return' outside function

因為 return 是表示從函數中返回,它 是不能用在 函數外面的

函數中的循環體內的代碼, 使用 return 和 break 都可以從循環中跳出
但是,break 只是 跳出循環, 如果循環后面還有代碼, 會進行執行,如下

def inputCommand():while True:command = input("請輸入命令:")if command == 'exit':breakprint(f'輸入的命令是{command}')print('末尾語句')inputCommand()

執行該函數,輸入 exit 發現,還會打印出 末尾語句 這句話

return 則會從函數里面立即返回, 函數體內的后續任何代碼都不執行了,我們把上面的代碼中的break 換成return, 如下

def inputCommand():while True:command = input("請輸入命令:")if command == 'exit':returnprint(f'輸入的命令是{command}')print('末尾語句')inputCommand()

執行該函數,輸入 exit 發現,就不會打印出 末尾語句 這句話.

2.4 for循環的嵌套

語法:

 for 臨時變量1 in 序列1(可迭代對象):# for循環體的代碼塊# for循環體的代碼塊# for循環體的代碼塊for 臨時變量2 in 序列2(可迭代對象):# for循環體的代碼塊# for循環體的代碼塊# for循環體的代碼塊for i in range(10):print(f"外層循環i:{i}")for j in range(10):print(f"內層循環j:{j}")

注意點:

continue和break在嵌套循環中, 只對當前循環起作用.

 for i in range(10):print(f"外層循環i:{i}")for j in range(10):print(f"內層循環j:{j}")breakprint(f'哈哈哈哈{i}')

3. 補充學習

3.1 enumerate函數

有的時候, 在使用for循環從列表或者元組中遍歷元素的時候, 除了要獲取每個元素, 還需要得到每個元素在列表元組里面的索引.

enumerate() 執行之后每次迭代都會返回一個元組, 元組里面有兩個元素, 依次是元素的索引和元素本身

比如, 找出下面列表中年齡大于17歲的學員, 打印出他們在列表中的索引:

studentAges = ['小王:17', '小趙:16', '小李:18', '小孫:16', '小徐:18']

這時候可以使用 enumerate 函數, 像下面這樣:

studentAges = ['小王:17', '小趙:16', '小李:18', '小孫:16', '小徐:18']# enumerate(studentAges) 執行之后每次迭代返回一個元組
# 元組里面有兩個元素, 依次是元素的索引和元素本身
for idx, student in enumerate(studentAges):if int(student.split(':')[-1]) > 17:print(idx)

3.2 zip函數

Python中有個內置函數zip, 常用來依次組合多個列表或者元組, 將里面相同索引的數據放入一組, 方便循環使用

比如:

names    = ['張三', '李四', '王五']  # 姓名
salaries = [18000, 11000, 15000]   # 對應薪資name_salary = zip(names, salaries)for name, salary in name_salary:print(name, salary)

運行結果是:

張三 18000
李四 11000
王五 15000

如果,兩個列表里面元素個數不相等, zip以少的那個為準,比如:

names    = ['張三', '李四', '王五']  # 姓名
salaries = [18000, 11000]   # 對應薪資,少一個name_salary = zip(names, salaries)for name, salary in name_salary:print(name, salary)

運行結果是:

張三 18000
李四 11000

3.3 不要在遍歷列表的過程中刪除元素

看下面這段代碼,把列表中值為 4 的元素刪除

list1 = [ 4, 4, 1, 2]for idx, num in enumerate(list1):if num == 4:list1.pop(idx)print(list1)

運行結果是:

[4, 1, 2]

因為遍歷過程中刪除一個元素,使得列表的長度發生了變化,后面的元素索引被提前了,就會跳過一個元素

所以遍歷 列表(包括后面要學習的字典)時, 不要在過程中刪除元素
可以新建一個列表,這樣:

list1 = [ 4, 4, 1, 2]list2 = []for idx, num in enumerate(list1):if num != 4:list2.append(num)print(list2)
遇見安然遇見你,不負代碼不負卿。
謝謝老鐵的時間,咱們下篇再見~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/74093.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/74093.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/74093.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

T3 出行:網約車全棧分布式數據庫升級實踐

現今&#xff0c;網約車已成為民眾日常出行不可或缺的選擇。伴隨“互聯網出行”模式的快速推進&#xff0c;龐大的出行數據應運而生&#xff0c;如同構建了城市交通系統的數字神經脈絡。與此同時&#xff0c;對高效數據存儲與深入數據分析的需求也在持續攀升。 T3 出行于2019年…

區塊鏈技術在供應鏈管理中的應用與創新

在當今全球化的商業環境中&#xff0c;供應鏈管理的復雜性與日俱增。從原材料采購到最終產品交付&#xff0c;涉及眾多環節和參與者&#xff0c;信息的透明度、準確性和安全性至關重要。區塊鏈技術的出現&#xff0c;為供應鏈管理帶來了全新的解決方案&#xff0c;正在逐步改變…

藍橋每日打卡--打家劫舍4

#藍橋#JAVA#打家劫舍4 題目描述 沿街有一排連續的房屋。每間房屋內都藏有一定的現金。現在有一位小偷計劃從這些房屋中竊取現金。 由于相鄰的房屋裝有相互連通的防盜系統&#xff0c;所以小偷 不會竊取相鄰的房屋 。 小偷的 竊取能力 定義為他在竊取過程中能從單間房屋中竊…

c#難點整理

1.何為托管代碼&#xff0c;何為非托管代碼 托管代碼就是.net框架下的代碼 非托管代碼&#xff0c;就是非.net框架下的代碼 2.委托的關鍵知識點 將方法作為參數進行傳遞 3.多維數組 4.鋸齒數組 5.多播委托的使用 6.is運算符 相當于邏輯運算符是 7.as 起到轉換的作用 8.可…

Nginx代理本機的443到本機的8080端口

1. 準備工作 確認已生成 IP 的 HTTPS 證書 假設你已通過 mkcert 生成證書&#xff08;如 192.168.199.191.pem 和 192.168.199.191-key.pem&#xff09;&#xff0c;并已安裝 CA 證書&#xff08;運行過 mkcert -install&#xff09;。 Nginx 安裝 ? 若未安裝 Nginx&#…

善用批處理的for命令倍增效率(附彩蛋:windows官方bug)

前言 在我們工作中,如果使用Windows系統,善用批處理命令,特別是在批量的文件處理,文本處理時能幫助我們極大地提升工作效率,起到事半功倍的效果! 但很多同學,對批處理的使用更多還停留在可以將多個command命令組合到一起執行,省去重復敲命令和等待的時間。這個其實只…

數據結構之棧的2種實現方式(順序棧+鏈棧,附帶C語言完整實現源碼)

對于邏輯關系為“一對一”的數據&#xff0c;除了用順序表和鏈表存儲外&#xff0c;還可以用棧結構存儲。 棧是一種“特殊”的線性存儲結構&#xff0c;它的特殊之處體現在以下兩個地方&#xff1a; 1、元素進棧和出棧的操作只能從一端完成&#xff0c;另一端是封閉的&#xf…

Camera2 API拍照失敗問題實錄:從錯誤碼到格式轉換的排坑之旅

一、問題背景 在開發基于Camera2 API的相機應用時&#xff0c;我們遇到了一個棘手的問題&#xff1a;預覽功能在所有設備上工作正常&#xff0c;但在某特定安卓設備上點擊拍照按鈕后無任何響應。值得注意的是&#xff0c;使用舊版Camera API時該設備可以正常拍照。本文記錄了完…

Jmeter舊版本如何下載

1.Jmeter最新版本下載位置 https://jmeter.apache.org/download_jmeter.cgi2.Jmeter舊版本下載位置 https://archive.apache.org/dist/jmeter/binaries穩定版本&#xff1a;5.4.1

css-grid布局

文章目錄 1、布局2、網格軌道3、間距Gap4、網格線5、網格別名 當一個 HTML 元素將 display 屬性設置為 grid 或 inline-grid 后&#xff0c;它就變成了一個網格容器&#xff0c;這個元素的所有直系子元素將成為網格元素。 1、布局 啟用grid布局類似與flex布局&#xff0c;不過g…

SolidWorks使用顯卡教程

操作步驟&#xff1a; 打開注冊表編輯器 按下鍵盤上的 Win R 組合鍵&#xff0c;輸入 regedit 并按回車鍵&#xff0c;打開注冊表編輯器。 導航到顯卡信息路徑 在注冊表中依次展開以下路徑&#xff1a; plaintext HKEY_CURRENT_USER\Software\SolidWorks\SOLIDWORKS 2021\Per…

【C++11】左值引用、右值引用、移動語義和完美轉發

&#x1f984;個人主頁:修修修也 &#x1f38f;所屬專欄:C ??操作環境:Visual Studio 2022 目錄 &#x1f4cc;左值引用和右值引用 &#x1f38f;左值和左值引用 &#x1f38f;右值和右值引用 &#x1f4cc;左值引用和右值引用比較 &#x1f38f;左值引用 &#x1f38f;右值…

麒麟系列Linux發行版探秘

以下內容摘自《銀河麒麟操作系統進階應用》一書。 銀河麒麟操作系統&#xff08;Kylin&#xff09; 銀河麒麟&#xff08;Kylin&#xff09;操作系統是中國自主研發的一款基于Linux內核的操作系統。它的發展歷程可以追溯到2002年&#xff0c;最初由國防科技大學主導研發&…

【機密計算頂會解讀】11:ACAI——使用 Arm 機密計算架構保護加速器執行

導讀&#xff1a;本文介紹ACAI&#xff0c;其構建一個基于CCA的解決方案&#xff0c;使得機密虛擬機能夠安全地使用加速器&#xff0c;同時保持與現有應用程序的兼容性和安全性&#xff0c;能夠實現對加速器的安全訪問。 原文鏈接&#xff1a;ACAI: Protecting Accelerator Ex…

第一天 UnityShader的結構

Shader初學者的學習筆記 第一天 Unity Shader的結構 文章目錄 Shader初學者的學習筆記前言一、Unity Shader結構二、Unity Shader結構解析① Properties② Tags③ RenderSetup(可選狀態)④ Name⑤ [Tags]⑥ [RenderSetup]⑦ 頂點著色器和片元著色器的代碼 (Unity最聰明的孩子)…

VL開源模型實現文本生成圖片

一、 基礎知識 根據描述生成圖片的視覺-語言模型&#xff08;Vision-Language Models, VL 模型&#xff09;是近年來多模態生成領域的熱點研究方向。這些模型能夠根據自然語言描述生成高質量的圖像&#xff0c;廣泛應用于藝術創作、設計輔助、虛擬場景構建等領域。 1 根據描述…

【Java SE】抽象類/方法、模板設計模式

目錄 1.抽象類/方法 1.1 基本介紹 1.2 語法格式 1.3 使用細節 2. 模板設計模式&#xff08;抽象類使用場景&#xff09; 2.1 基本介紹 2.2 具體例子 1.抽象類/方法 1.1 基本介紹 ① 當父類的某些方法&#xff0c;需要聲明&#xff0c;但是又不確定如何實現時&#xff…

【人工智能】LM Studio 的 GPU 加速:釋放大模型推理潛能的極致優化

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門! 解鎖Python編程的無限可能:《奇妙的Python》帶你漫游代碼世界 隨著大語言模型(LLM)的廣泛應用,其推理效率成為限制性能的關鍵瓶頸。LM Studio 作為一個輕量級機器學習框架,通過 GPU 加速顯著提升了大…

深度學習:從零開始的DeepSeek-R1-Distill有監督微調訓練實戰(SFT)

原文鏈接&#xff1a;從零開始的DeepSeek微調訓練實戰&#xff08;SFT&#xff09; 微調參考示例&#xff1a;由unsloth官方提供https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen2.5_(7B)-Alpaca.ipynbhttps://colab.research.google.com/git…

流暢如絲:利用requestAnimationFrame優化你的Web動畫體驗

requestAnimationFrame 是前端開發中用于優化動畫性能的 API。它允許瀏覽器在下一次重繪之前執行指定的回調函數&#xff0c;通常用于實現平滑的動畫效果。 1.作用 優化性能&#xff1a;requestAnimationFrame 會根據瀏覽器的刷新率&#xff08;通常是 60Hz&#xff0c;即每秒…