Python學習中使用循環(for, while)

在Python編程語言中,循環是一個非常重要的概念,可以幫助我們在代碼中重復執行某些操作。Python支持兩種主要的循環結構:for 循環和 while 循環。

1. for 循環

for 循環用于遍歷一個序列(如列表、元組、字符串)或其他可迭代對象(如字典、集合)。它的基本語法如下:

for variable in iterable:# 執行代碼塊

其中,variable 是一個變量,它將在每次迭代中被賦予 iterable 中的下一個值,iterable 是一個可迭代對象。以下是一些示例:

示例 1:遍歷列表

fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:print(fruit)

輸出:

apple
banana
cherry

示例 2:遍歷字符串

for char in 'hello':print(char)

輸出:

h
e
l
l
o

示例 3:使用 range() 函數

range() 函數用于生成一個數值序列。它通常與 for 循環一起使用。基本語法如下:

for i in range(start, stop, step):# 執行代碼塊
  • start:序列的起始值,默認為0。
  • stop:序列的結束值(不包含在序列中)。
  • step:步長,默認為1。

示例:

for i in range(5):print(i)

輸出:

0
1
2
3
4

示例 4:遍歷字典

student = {'name': 'John', 'age': 25, 'courses': ['Math', 'CompSci']}
for key, value in student.items():print(f'{key}: {value}')

輸出:

name: John
age: 25
courses: ['Math', 'CompSci']

示例 5:嵌套 for 循環

matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
]for row in matrix:for item in row:print(item, end=' ')print()

輸出:

1 2 3 
4 5 6 
7 8 9 

2. while 循環

while 循環在給定的條件為真時,重復執行目標語句。它的基本語法如下:

while condition:# 執行代碼塊

其中,condition 是一個表達式,當其為真時,執行代碼塊。下面是一些示例:

示例 1:簡單 while 循環

i = 0
while i < 5:print(i)i += 1

輸出:

0
1
2
3
4

示例 2:用戶輸入

user_input = ''
while user_input.lower() != 'exit':user_input = input('Enter something (type "exit" to quit): ')print(f'You entered: {user_input}')

示例 3:無限循環和 break

while True:user_input = input('Enter something (type "exit" to quit): ')if user_input.lower() == 'exit':breakprint(f'You entered: {user_input}')

示例 4:continue 語句

i = 0
while i < 10:i += 1if i % 2 == 0:continueprint(i)

輸出:

1
3
5
7
9

3. for 循環和 while 循環的區別

  • 使用場景for 循環通常用于遍歷固定長度的序列,而 while 循環適用于未知長度的循環或需要在滿足特定條件時終止的循環。
  • 可讀性for 循環通常更簡潔,更易讀,尤其是在處理序列時。while 循環在處理復雜條件時更靈活。
  • 性能:在許多情況下,for 循環的性能可能稍好,因為它們在許多情況下可以更有效地進行優化。

4. 循環中的常見問題

無限循環

無限循環是指循環條件永遠為真的循環。通常是由于條件未正確更新導致的。示例:

i = 0
while i < 5:print(i)# 缺少 i += 1,導致 i 永遠為 0

breakcontinue

  • break:立即終止循環。
  • continue:跳過當前迭代,繼續下一次迭代。

示例:

for i in range(10):if i == 5:breakprint(i)for i in range(10):if i % 2 == 0:continueprint(i)

嵌套循環中的 break

在嵌套循環中使用 break 只會終止內層循環。示例:

for i in range(3):for j in range(3):if j == 1:breakprint(f'i={i}, j={j}')

輸出:

i=0, j=0
i=1, j=0
i=2, j=0

循環與條件語句結合

for i in range(1, 11):if i % 2 == 0:print(f'{i} 是偶數')else:print(f'{i} 是奇數')

輸出:

1 是奇數
2 是偶數
3 是奇數
4 是偶數
5 是奇數
6 是偶數
7 是奇數
8 是偶數
9 是奇數
10 是偶數

5. 實踐案例

案例 1:計算列表中所有元素的和

numbers = [1, 2, 3, 4, 5]
total = 0
for num in numbers:total += num
print(f'列表元素的和為: {total}')

案例 2:找出列表中的最大值

numbers = [3, 41, 12, 9, 74, 15]
max_num = numbers[0]
for num in numbers:if num > max_num:max_num = num
print(f'列表中的最大值是: {max_num}')

案例 3:使用 while 循環實現猜數字游戲

import randomsecret_number = random.randint(1, 100)
guess = None
attempts = 0while guess != secret_number:guess = int(input('猜一個 1 到 100 之間的數字: '))attempts += 1if guess < secret_number:print('猜低了')elif guess > secret_number:print('猜高了')else:print(f'恭喜你,猜對了!你一共猜了 {attempts} 次。')

案例 4:生成乘法表

for i in range(1, 10):for j in range(1, 10):print(f'{i} x {j} = {i * j}', end='\t')print()

輸出:

1 x 1 = 1	1 x 2 = 2	1 x 3 = 3	1 x 4 = 4	1 x 5 = 5	1 x 6 = 6	1 x 7 = 7	1 x 8 = 8	1 x 9 = 9	
2 x 1 = 2	2 x 2 = 4	2 x 3 = 6	2 x 4 = 8	2 x 5 = 10	2 x 6 = 12	2 x 7 = 14	2 x 8 = 16	2 x 9 = 18	
3 x 1 = 3	3 x 2 = 6	3 x 3 = 9	3 x 4 = 12	3 x 5 = 15	3 x 6 = 18	3 x 7 = 21	3 x 8 = 24	3 x 9 = 27	
4 x 1 = 4	4 x 2 = 8	4 x 3 = 12	4 x 4 = 16	4 x 5 = 20	4 x 6 = 24	4 x 7 = 28	4 x 8 = 32	4 x 9 = 36	
5 x 1 = 5	5 x 2 = 10	5 x 3 = 15	5 x 4 = 20	5 x 5 = 25	5 x 6 = 30	5 x 7 = 35	5 x 8 = 40	5 x 9 = 45	
6 x 1 = 6	6 x 2 = 12	6 x 3 = 18	6 x 4 = 24	6 x 5 = 30	6 x 6 = 36	6 x 7 = 42	6 x 8 = 48	6 x 9 = 54	
7 x 1 = 7	7 x 2 = 14	7 x 3 = 21	7 x 4 = 28	7 x 5 = 35	7 x 6 = 42	7 x 7 = 49	7 x 8 = 56	7 x 9 = 63	
8 x 1 = 8	8 x 2 = 16	8 x 3 = 24	8 x 4 = 32	8 x 5 = 40	8 x 6 = 48	8 x 7 = 56	8 x 8 = 64	8 x 9 = 72	
9 x 1 = 9	9 x 2 = 18	9 x 3 = 27	9 x 4 = 36	9 x 5 = 45	9 x 6 = 54	9 x 7 = 63	9 x 8 = 72	9 x 9 = 81	

案例 5:統計字符串中每個字符的出現頻率

text = 'hello world'
char_count = {}for char in text:if char in char_count:char_count[char] += 1else:char_count[char] = 1for char, count in char_count.items():print(f'{char}: {count}')

輸出:

h: 1
e: 1
l: 3
o: 2: 1
w: 1
r: 1
d: 1

循環結構是Python編程中的基本概念,for 循環和 while 循環各有其適用場景和優勢。for 循環適用于遍歷已知長度的序列,而 while 循環則在處理需要滿足特定條件時特別有用。理解并掌握這兩種循環的用法,可以大大提高代碼的可讀性和效率。

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

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

相關文章

第11章:標準化和軟件知識產權

第11章&#xff1a;標準化和軟件知識產權 標準化 國際標準(International Standard)是指國際標準化組織(ISO)、國際電工 委員會(IEC)所制定的標準。 標準 是對重復性事物和概念所做的統一規定。 標準化的特征包括橫向綜合性、政策性和統一性 。 標準化是指在經濟、技術、科學…

JAVA學習-練習試用Java實現“分發糖果”

問題&#xff1a; 老師想給孩子們分發糖果&#xff0c;有 N 個孩子站成了一條直線&#xff0c;老師會根據每個孩子的表現&#xff0c;預先給他們評分。 需要按照以下要求&#xff0c;幫助老師給這些孩子分發糖果&#xff1a; 每個孩子至少分配到 1 個糖果。 評分更高的孩子…

FastAPI:高性能異步API框架

文章目錄 引言官網鏈接FastAPI 原理1. 基于 Starlette 和 Pydantic2. 路由與依賴注入3. 自動文檔 使用方法安裝 FastAPI創建一個簡單的API運行服務器 優缺點優點缺點 結論 引言 在快速發展的Web和移動應用時代&#xff0c;構建高效、可擴展的API成為了現代軟件開發的關鍵需求之…

Thingsboard 系列之通過 ESP8266+MQTT 模擬設備上報數據到平臺

前置工作 Thingsboard平臺ESP 8266 NodeMCU 開發板IDE&#xff1a; Arduino 或 VScode 均可 服務端具體對接流程 系統管理員賬號通過 Thingsboard 控制面板創建租戶等信息并以租戶賬號登錄 實體 —> 設備維護具體設備信息 創建完成后通過管理憑據修改或直接復制訪問令牌…

python 冷知識 66 個 0708

66個有趣的Python冷知識 內聯注釋 可以在代碼行尾使用 # 進行內聯注釋&#xff0c;例如 x 10 # 這是一個內聯注釋。 多行注釋 多行注釋可以用三個引號 或 """ 包裹。 分數 fractions 模塊提供了分數類型&#xff0c;可以精確表示分數值。 小數 decimal 模塊…

致遠OA同步組織架構到企業微信

致遠OA同步組織架構到企業微信 可適配任何系統 背景 原有的微協同無法滿足人員同步&#xff0c;因為在啟用微協同的時候&#xff0c;企業微信已經存在人員&#xff0c;所以配置微協同之后&#xff0c;人員會出現新增而不會同步修改 方案 重寫同步&#xff0c;針對已經存在…

Visual Studio下安裝引入Boost庫

背景&#xff1a; 在 Win 上通過 Visual Studio 運行 c 代碼&#xff0c;引入頭文件 #include <boost/...>&#xff0c;顯式無法打開&#xff0c;需要手動下載boost并進行配置。 1、下載boost&#xff1a; Boost官網&#xff1a;Boost Downloads 下載boost&#xff0c…

網安加·百家講壇 | 關昕健:新時代企業數據安全運營思路

作者簡介&#xff1a;關昕健&#xff0c;某運營商安全專家&#xff0c;2015年獲CISSP認證&#xff0c;長期負責企業安全運營工作&#xff0c;關注國內外數據安全動態與解決方案&#xff0c;持續開展數據安全運營實踐。 近年來&#xff0c;隨著《數據安全法》的出臺和國家數據局…

Pytorch中的DataLoader類

&#x1f4da;博客主頁&#xff1a;knighthood2001 ?公眾號&#xff1a;認知up吧 &#xff08;目前正在帶領大家一起提升認知&#xff0c;感興趣可以來圍觀一下&#xff09; &#x1f383;知識星球&#xff1a;【認知up吧|成長|副業】介紹 ??如遇文章付費&#xff0c;可先看…

js逆向案例 | 加速樂反爬逆向

前言 加速樂作為一種常見的反爬蟲技術&#xff0c;在網絡上已有大量詳盡深入的教程可供參考。然而&#xff0c;對于那些初次接觸的人來說&#xff0c;直接面對它可能仍會感到困惑。 聲明 本文僅用于學習交流&#xff0c;學習探討逆向知識&#xff0c;歡迎私信共享學習心得。如…

oracle19 數據庫介紹

1.1Oracle數據庫概念和應用 每個人家里都會有冰箱&#xff0c;冰箱是用來干什么的&#xff1f;冰箱是用來存放食物的地方。同樣的&#xff0c;數據庫是存放數據的地方。正是因為有了數據庫后&#xff0c;可以直接查找數據。例如你每天使用余額寶查看自己的賬戶收益&#xff0c;…

【YOLOv5/v7改進系列】改進池化層為RFB

一、導言 論文 "Receptive Field Block Net for Accurate and Fast Object Detection" 中提出的 RFB (Receptive Field Block) 模塊旨在模仿人類視覺系統中的感受野結構&#xff0c;以增強深度學習模型對不同尺度和位置的目標檢測能力。下面總結了RFB模塊的主要優點…

MySQL數據庫巡檢步驟

MySQL巡檢 系統基本信息 機型號 IP CPU 內存 磁盤 (業務)系統信息 操作系統 主機名 操作系統巡檢 檢查內容 說明 檢查方法 結果&#xff08;異常需詳細說明&#xff09; 正常輸出結果 系統配置檢查 操作系 統版本 #uname –a □正常 □異常 顯示系統版本和核心補丁信…

AIGC時代程序員的躍遷——編程高手的密碼武器

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

一、redis-萬字長文讀懂redis

高性能分布式緩存Redis `第一篇章`1.1緩存發展史&緩存分類1.1.1 大型網站中緩存的使用帶來的問題1.1.2 常見緩存的分類及對比與memcache對比1.2 數據類型選擇&應用場景1.2.1 string1.2.2 hash1.2.3 鏈表1.2.4 set1.2.5 sortedset有序集合類型1.2.6 總結1.3 Redis高級應…

[數倉]三、離線數倉(Hive數倉系統)

第1章 數倉分層 1.1 為什么要分層 DIM&#xff1a;dimensionality 維度 1.2 數據集市與數據倉庫概念 1.3 數倉命名規范 1.3.1 表命名 ODS層命名為ods_表名DIM層命名為dim_表名DWD層命名為dwd_表名DWS層命名為dws_表名 DWT層命名為dwt_表名ADS層命名為ads_表名臨時表命名為…

昇思25天訓練營Day11 - 基于 MindSpore 實現 BERT 對話情緒識別

模型簡介 BERT全稱是來自變換器的雙向編碼器表征量&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;&#xff0c;它是Google于2018年末開發并發布的一種新型語言模型。與BERT模型相似的預訓練語言模型例如問答、命名實體識別、自然語言推理、…

56、最近鄰向量量化(LVQ) 網絡訓練對輸入向量進行分類

1、LVQ 網絡訓練對輸入向量進行分類簡介 1&#xff09;簡介 LVQ&#xff08;最近鄰向量量化&#xff09;是一種簡單而有效的神經網絡模型&#xff0c;用于對輸入向量進行分類。LVQ網絡通過學習一組原型向量&#xff08;也稱為代碼矢量或參考向量&#xff09;&#xff0c;來表…

HTML5 WebSocket技術使用詳解

HTML5 WebSocket API 提供了一種在單個連接上進行全雙工通信的方式。這意味著客戶端和服務器可以同時發送和接收數據&#xff0c;而不需要像傳統的 HTTP 請求那樣進行多次請求和響應的輪詢。WebSocket 允許更實時的交互&#xff0c;非常適合需要快速、連續數據交換的應用場景&a…

SAP Build4-office 操作

1. 郵件操作 1.1 前期準備 商店中找到outlook的sdk&#xff0c;添加到build中 在process中添加outlook的SDK 電腦上裝了outlook的郵箱并且已經登錄 我用個人foxmail郵箱向outlook發了一封帶附件的銷售訂單郵件&#xff0c;就以此作為例子 1.2 搜索郵件 搜索有兩層&…