python20-while和for in的美

課程:B站大學
記錄python學習,直到學會基本的爬蟲,使用python搭建接口自動化測試就算學會了,在進階webui自動化,app自動化

分支語句那些事兒

    • 循環的類型
    • 循環的作用
    • 循環的構成要素
    • while 循環
    • while 循環實戰
    • 循環語句 for-in
  • 實踐是檢驗真理的唯一標準


循環的類型

  • 重復一定次數的循環,稱為計次循環。 比如跑步五公里,每公里就是一個計次單位。
  • 直到條件不滿足時才停止重復執行的循環,稱為條件循環。 比如直到跑不動為止,這沒有具體的跑量,結束跑步的條件是跑不動了。
    Python 提供了兩種類型的循環可以應對不同的使用場景。

for-in 循環: 計次循環
while 循環: 條件循環

循環的作用

  • 提高代碼復用性,減少代碼冗余
  • 遍歷序列(字符串,元組,列表,字典等)

循環的構成要素

  • 初始化語句: 一條或多條語句,用于完成一些初始化工作。初始在循環開始之前執行。
  • 循環條件: 一般是一個布爾表達式,這個表達式能決定是否執行循環體
  • 循環體: 這個部分是循環的主體,如果循環條件允許,這個代碼塊將被重復執行。
  • 迭代語句: 這個部分在每次執行循環體結束后,對循環條件求值之前執行,通常用于控制循環條件中的變量向趨近于結束條件改變。

while 循環

在日常的生活中有時候循環的次數通常不會在剛開始就知道,而是滿足條件之后就停止循環。
如有一路公交車不是固定時間間隔發車,而是在人數滿足多少個之后就發車,一直到晚上的11點準時收工,那么沒有到11點的話就會一直重復,直到條件不滿足時才結束的循環,稱為條件循環。
只要條件為真,這種循環會一直持續下去,通常指的是 while 循環。
while 循環的語法

while 條件表達式: 循環體

當條件表達式的返回值為真時,則執行循環體中的語句,執行完畢后,重新判斷條件表達 式的返回值,直到表達式返回的結果為假時,退出循環。

while 循環實戰

實戰1: 求 1~10 之間所有整數的乘積。

# 保存結果的變量
result = 1
# 循環控制變量
n = 2
# 開始循環
while n <= 10:# 計算乘積result *= n# 改變循環變量向結束條件趨近n += 1# 輸出結果
print("1~10的乘積為:", result)

實戰2: 輸入密碼,直到密碼輸入正確,輸出 登錄成功。

password = "password" # 設置正確的密碼
input_password = ""while input_password != password:input_password = input("請輸入密碼: ")print("密碼正確,登錄成功!")

實戰3:在行酒令中,有一個數 7 小游戲,游戲參與者依次報數,但需要跳過所有包含 7 或 7 的整數倍的數字,編寫程序找出 1~100 范圍內所有符合該條件的數字,方便在游戲中跳過。

# 循環變量實始化
n = 1
# 循環條件
while n<=100:# 數字對7求模為0,則表示該數字是7的倍數# 將數字轉換為字符串類型,使用成員運算符判斷字符7是否在字符串中,檢查包含關系if n % 7 == 0 or "7" in str(n):# 輸出滿足條件的數字print(n)# 改變循環變量趨近于結束條件n += 1

小tips:表中保存若干個數字,計算數字的和,最小值,最大值,平均數

def func1():n_sum = 0n_max = Nonen_min = Nonedata = [23456, 234, 23, 423, 423, 423, 423, 412, 3235, 346, 47, 5687, 678, 7, 453623, 4523, 565, 786, 9789, 567,34634, 234]# for n in data:i = 0l = len(data)#打斷點查看執行邏輯while i < l:n = data[i]n_sum += nif n_max == None or n_max < n:n_max = nif n_min == None or n_min > n:n_min = ni += 1avg = n_sum / lprint(n_sum)print(n_max)print(n_min)print(avg)

思路:
首先,代碼定義了一個名為func1()的函數,用于計算數字的和、最小值、最大值和平均數。

在函數內部,定義了變量n_sum,初始值為0,用于保存數字的和;定義了變量n_max和n_min,初始值均為None,分別用于保存最大值和最小值。

創建了一個列表data,其中保存了待處理的數字數據。

使用while循環遍歷列表data中的每個元素。循環使用了索引i來訪問列表中的每個數字。

在循環內部,首先獲取當前數字n,然后執行以下操作: 將當前數字n累加到變量n_sum中,即n_sum += n。 判斷當前數字n是否為最大值: 如果n_max為None,表示當前數字是第一個數字,將n_max更新為當前數字n。 否則,判斷當前數字n是否大于n_max,如果是,則將n_max更新為當前數字n。 判斷當前數字n是否為最小值: 如果n_min為None,表示當前數字是第一個數字,將n_min更新為當前數字n。 否則,判斷當前數字n是否小于n_min,如果是,則將n_min更新為當前數字n。 更新索引i,即i += 1。

循環結束后,得到了數字的和、最大值和最小值。

接下來,計算平均數avg,即將數字的和n_sum除以列表data的長度。

通過print()函數分別打印輸出數字的和、最大值、最小值和平均數。

小tips:編寫一個 Python 程序,輸入一個整數,計算該整數的二進制表示形式

def func5():result = ""data = int(input("Num:"))# 除二取余法while data != 0:tmp = data % 2data = data // 2result = str(tmp) + resultprint(result)

代碼思路:
首先,我們初始化一個空字符串 result,用于存儲最終的二進制表示形式。

然后,使用 input 函數獲取用戶輸入的整數,并通過 int 函數將其轉換為整數類型,賦值給變量 data。

接下來,使用 while 循環進行二進制轉換。在每次循環中,我們通過 data % 2 取余操作得到當前位置的二進制值,并將其存儲在臨時變量 tmp 中。然后,使用 data // 2 進行整除操作得到下一個位置的二進制值。最后,通過 result = str(tmp) + result 將當前位置的二進制值轉換為字符串,并添加到結果字符串 result 的前面。

當整數 data 為 0 時,循環終止,表示二進制轉換完成。最后,我們使用 print(result) 將最終的二進制表示形式打印輸出到控制臺。

循環語句 for-in

一種專門處理字符串,元組,列表,字典等可迭代的序列類型數據的增強型 for 循環 for-in。
for-in 循環語法

for 迭代變量 in 對象:循環體

for-in 循環會將可迭代對象中的元素依次取出,保存到迭代變量中。

每取出一個變量,便執行一次循環體,在循環體中可以通過引用迭代變量,使用取出的數據。

遍歷可迭代對象
使用for-in循環處理可迭代對象,可以使操作過程變的極其簡單。

遍歷字符串
for-in 循環會將字符串中的每個字符依次取出,放入迭代變量中。

格式:

for 變量 in 字符串:pass

示例: 輸出前面示例中每個字符對應的ASCII碼值。

s = "Hello Hogworts!"
for c in s:print(f"字符【 {c} 】的ASCII碼為:【 {ord(c)} 】")

遍歷元組
for-in 循環會將元組中的每個元素依次取出,放入迭代變量中。

格式:

for 變量 in 元組:pass

示例: 輸出元組中每個數字的立方值

t = (1,2,3,4,5)
for n in t:print(f"數字【 {n} 】的立方值為:【 {n**3} 】")

遍歷列表
for-in 循環會將列表中的每個元素依次取出,放入迭代變量中。

格式:

for 變量 in 列表:pass

示例: 將列表中所有的請求方式轉換為大寫輸出

requestMethods = ["get", "post", "put", "delete", "patch", "header", "options", 'trace']
for method in requestMethods:print(f"請求方式【 {method} 】轉換為大寫后:【 {method.upper()} 】")

遍歷字典
字典是一個比較特殊的數據類型,由 key-value 組成,在使用 for-in 遍歷字典時,默認遍歷的是字典的所有 key 。

如果需要遍歷字典中的 value 或以 key-value 形式遍歷,需要配合使用字典中對應的方法實現。

字典的默認遍歷
for-in 循環在字典中依次取出每個元素的 key,放入迭代變量中。

格式:

for 變量 in 字典:pass

示例:

requestMethods = {"get": "用于獲取服務器上的資源,通過在URL中傳遞參數來發送請求。","post": "用于向服務器提交數據,一般用于創建新的資源或進行修改操作。","put": "用于更新服務器上的資源,一般用于修改已存在的資源的全部內容。","delete": "用于刪除服務器上的資源。"}
for method in requestMethods:print(method)

遍歷字典中的所有 key
使用字典的 keys() 方法配合 for-in 循環可以遍歷字典的所有 key,但一般不會這么操作。

格式:

for 變量 in 字典.keys():pass

示例:

requestMethods = {"get": "用于獲取服務器上的資源,通過在URL中傳遞參數來發送請求。","post": "用于向服務器提交數據,一般用于創建新的資源或進行修改操作。","put": "用于更新服務器上的資源,一般用于修改已存在的資源的全部內容。","delete": "用于刪除服務器上的資源。"}
for method in requestMethods.keys():print(method)

遍歷字典中的所有 value
使用字典的 values() 方法配合 for-in 循環可以遍歷字典的所有 value。需要注意的是,雖然可以取值,但對字典而言,這種操作也很少使用。

格式:

for 變量 in 字典.values():pass

示例:

requestMethods = {"get": "用于獲取服務器上的資源,通過在URL中傳遞參數來發送請求。","post": "用于向服務器提交數據,一般用于創建新的資源或進行修改操作。","put": "用于更新服務器上的資源,一般用于修改已存在的資源的全部內容。","delete": "用于刪除服務器上的資源。"}
for method in requestMethods.values():print(method)

遍歷字典中的所有 key-value
字典中的一個完成的元素是以 key-value 形式體現的,如果要遍歷字典中的所有元素,可以使用字典的 items() 方法配合 for-in 循環可以遍歷字典的所有 key-vakue。

items() 方法取出的字典元素會以元組形式保存到迭代變量中,適當的場景下,可以使用解包操作,直接將元素中的 key-value 保存到對應的變量中。

格式:

for 變量 in 字典.items():pass# 或for 變量1, 變量2 in 字典.items():pass

示例:

r

equestMethods = {"get": "用于獲取服務器上的資源,通過在URL中傳遞參數來發送請求。","post": "用于向服務器提交數據,一般用于創建新的資源或進行修改操作。","put": "用于更新服務器上的資源,一般用于修改已存在的資源的全部內容。","delete": "用于刪除服務器上的資源。"}
for item in requestMethods.items():print(f"請求方式【 {item[0]} 】的作用為:【 {item[1]} 】")

配合解包操作,更簡單的實現

requestMethods = {"get": "用于獲取服務器上的資源,通過在URL中傳遞參數來發送請求。","post": "用于向服務器提交數據,一般用于創建新的資源或進行修改操作。","put": "用于更新服務器上的資源,一般用于修改已存在的資源的全部內容。","delete": "用于刪除服務器上的資源。"}
for key, value in requestMethods.items():print(f"請求方式【 {key} 】的作用為:【 {value} 】")

小tips:編寫一個Python程序,來計算給定文本中每個單詞出現的次數。

text = """
Python is a popular programming language. It is widely used for web development, data science, and more.
Python has a simple and readable syntax, which makes it great for beginners.
"""
words = text.lower().split()  # 將文本轉換為小寫并分割為單詞
word_count = {}  # 用于存儲單詞和出現次數的字典for word in words:word = word.strip(".,!?")  # 去除單詞中的標點符號if word in word_count:word_count[word] += 1else:word_count[word] = 1# 輸出詞頻統計結果
for word, count in word_count.items():print(f"{word}: {count}")

在這里插入圖片描述
小tips:
打印圖案
正方形:

for i in range(5):for j in range(5):print("*", end="  ")print()

代碼思路:
外部循環 for i in range(5): 運行 5 次,總共有5行。

內部循環 for j in range(5): 也運行 5 次,每行輸出5個星號。

print(“*”, end=" “) - 在內層循環中,使用 print() 函數輸出一個星號,同時指定 end=” " 參數,將每個星號之間的分隔符設置為兩個空格,以保持圖案的對齊。

print() 換行。
等腰三角形:

for i in range(5, 0, -1):for j in range(5 - i):print(" ", end=" ")for j in range(2 * i - 1):print("*", end=" ")print()

實踐是檢驗真理的唯一標準

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

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

相關文章

私人筆記:動手學大模型應用開發llm-universe項目環境創建

項目代碼&#xff1a;datawhalechina/llm-universe: 本項目是一個面向小白開發者的大模型應用開發教程&#xff0c;在線閱讀地址&#xff1a;https://datawhalechina.github.io/llm-universe/ 項目書&#xff1a;動手學大模型應用開發 一、初始化項目 uv init llm-universe-te…

剖析 Rust 與 C++:性能、安全及實踐對比

1 性能對比&#xff1a;底層控制與運行時開銷 1.1 C 的性能優勢 C 給予開發者極高的底層控制能力&#xff0c;允許直接操作內存、使用指針進行精細的資源管理。這使得 C 在對性能要求極高的場景下&#xff0c;如游戲引擎開發、實時系統等&#xff0c;能夠發揮出極致的性能。以…

詳細講解一下Java中的Enum

Java 中的 枚舉&#xff08;Enum&#xff09; 是一種特殊的類&#xff0c;用于表示一組固定且有限的常量&#xff08;如狀態、類型、選項等&#xff09;。它提供類型安全的常量定義&#xff0c;比傳統的常量&#xff08;如 public static final&#xff09;更強大和靈活。以下是…

首席人工智能官(Chief Artificial Intelligence Officer,CAIO)的詳細解析

以下是**首席人工智能官&#xff08;Chief Artificial Intelligence Officer&#xff0c;CAIO&#xff09;**的詳細解析&#xff1a; 1. 職責與核心職能 制定AI戰略 制定公司AI技術的長期戰略&#xff0c;明確AI在業務中的應用場景和優先級&#xff0c;推動AI與核心業務的深度…

LeetCode【劍指offer】系列(位運算篇)

劍指offer15.二進制中1的個數 題目鏈接 題目&#xff1a;編寫一個函數&#xff0c;輸入是一個無符號整數&#xff08;以二進制串的形式&#xff09;&#xff0c;返回其二進制表達式中數字位數為 ‘1’ 的個數&#xff08;也被稱為 漢明重量).&#xff09;。 思路一&#xff…

前端路由緩存實現

場景&#xff1a;以一體化為例&#xff1a;目前頁面涉及頁簽和大量菜單路由&#xff0c;用戶想要實現頁面緩存&#xff0c;即列表頁、詳情頁甚至是編輯彈框頁都要實現數據緩存。 方案&#xff1a;使用router-view的keep-alive實現 。 一、實現思路 1.需求梳理 需要緩存模塊&…

Buildroot編譯過程中下載源碼失敗

RK3588編譯編譯一下recovery&#xff0c;需要把buildroot源碼編譯一遍。遇到好幾個文件都下載失敗&#xff0c;如下所示 pm-utils 1.4.1這個包下載失敗&#xff0c;下載地址http://pm-utils.freedesktop.org/releases 解決辦法&#xff0c;換個網絡用windows瀏覽器下載后&…

Operator 開發入門系列(一):Hello World

背景 我們公司最近計劃將產品遷移到 Kubernetes 環境。 為了更好地管理和自動化我們的應用程序&#xff0c;我們決定使用 Kubernetes Operator。 本系列博客將記錄我們學習和開發 Operator 的過程&#xff0c;希望能幫助更多的人入門 Operator 開發。 目標讀者 對 Kubernete…

Java基礎知識面試題(已整理Java面試寶典pdf版)

什么是Java Java是一門面向對象編程語言&#xff0c;不僅吸收了C語言的各種優點&#xff0c;還摒棄了C里難以理解的多繼承、指針等概念&#xff0c;因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態面向對象編程語言的代表&#xff0c;極好地實現了面向對象理論…

科學視角下的打坐:身心獲益的實證探究

在快節奏的現代生活中&#xff0c;人們在追求物質豐富的同時&#xff0c;也愈發關注身心的健康與平衡。古老的打坐修行方式&#xff0c;正逐漸走進科學研究的視野&#xff0c;并以大量實證數據展現出對人體多方面的積極影響。? 什么是打坐&#xff1a; 打坐是一種養生健身法…

javaSE————網絡編程套接字

網絡編程套接字~~~~~ 好久沒更新啦&#xff0c;藍橋杯爆掉了&#xff0c;從今天開始爆更嗷&#xff1b; 1&#xff0c;網絡編程基礎 為啥要有網絡編程呢&#xff0c;我們進行網絡通信就是為了獲取豐富的網絡資源&#xff0c;說實話真的很神奇&#xff0c;想想我們躺在床上&a…

MySQL性能調優(三):MySQL中的系統庫(mysql系統庫)

文章目錄 MySQL性能調優數據庫設計優化查詢優化配置參數調整硬件優化 MySQL中的系統庫1.5.Mysql中mysql系統庫1.5.1.權限系統表1.5.2.統計信息表1.5.2.1.innodb_table_stats1.5.2.2.innodb_index_stats 1.5.3.日志記錄表1.5.3.1. general_log1.5.3.2. slow_log 1.5.4.InnoDB中的…

多個路由器互通(靜態路由)無單臂路由(簡單版)

多個路由器互通&#xff08;靜態路由&#xff09;無單臂路由&#xff08;簡單版&#xff09; 開啟端口并配ip地址 維護1 Router>en Router#conf t Router(config)#int g0/0 Router(config-if)#no shutdown Router(config-if)#ip address 192.168.10.254 255.255.255.0 Ro…

關于 AI驅動的智慧家居、智慧城市、智慧交通、智慧醫療和智慧生活 的詳細解析,涵蓋其定義、核心技術、應用場景、典型案例及未來趨勢

以下是關于 AI驅動的智慧家居、智慧城市、智慧交通、智慧醫療和智慧生活 的詳細解析&#xff0c;涵蓋其定義、核心技術、應用場景、典型案例及未來趨勢&#xff1a; 一、AI智慧家居 1. 定義與核心功能 定義&#xff1a;通過AI與物聯網&#xff08;IoT&#xff09;技術&#…

【ESP32|音頻】一文讀懂WAV音頻文件格式【詳解】

簡介 最近在學習I2S音頻相關內容&#xff0c;無可避免會涉及到關于音頻格式的內容&#xff0c;所以剛開始接觸的時候有點一頭霧水&#xff0c;后面了解了下WAV相關內容&#xff0c;大致能夠看懂wav音頻格式是怎么樣的了。本文主要為后面ESP32 I2S音頻系列文章做鋪墊&#xff0…

端側大模型綜述On-Device Language Models: A Comprehensive Review

此為機器翻譯&#xff0c;僅做個人學習使用 設備端語言模型&#xff1a;全面回顧 DOI&#xff1a;10.48550/arXiv.2409.00088 1 摘要 大型語言模型 &#xff08;LLM&#xff09; 的出現徹底改變了自然語言處理應用程序&#xff0c;由于減少延遲、數據本地化和個性化用戶體驗…

推流265視頻,網頁如何支持顯示265的webrtc

科技發展真快&#xff0c;以前在網頁上&#xff08;一般指谷歌瀏覽器&#xff09;&#xff0c;要顯示265的視頻流&#xff0c;都是很雞肋的辦法&#xff0c;要么轉碼&#xff0c;要么用很慢的hls&#xff0c;體驗非常不好&#xff0c;而今谷歌官方最新的瀏覽器已經支持265的web…

redis的sorted set的應用場景

Redis 的 Sorted Set&#xff08;有序集合&#xff0c;簡稱 ZSet&#xff09; 結合了 Set 的去重特性 和 按分數&#xff08;score&#xff09;排序 的特性&#xff0c;非常適合需要 高效排序 或 范圍查詢 的場景。以下是它的典型應用場景及示例&#xff1a; 實時排行榜 場景&…

18-21源碼剖析——Mybatis整體架構設計、核心組件調用關系、源碼環境搭建

學習視頻資料來源&#xff1a;https://www.bilibili.com/video/BV1R14y1W7yS 文章目錄 1. 架構設計2. 核心組件及調用關系3. 源碼環境搭建3.1 測試類3.2 實體類3.3 核心配置文件3.4 映射配置文件3.5 遇到的問題 1. 架構設計 Mybatis整體架構分為4層&#xff1a; 接口層&#…

未啟用CUDA支持的PyTorch環境** 中使用GPU加速解決方案

1. 錯誤原因分析 根本問題&#xff1a;當前安裝的PyTorch是CPU版本&#xff0c;無法調用GPU硬件加速。當運行以下代碼時會報錯&#xff1a;model YOLO("yolov8n.pt").to("cuda") # 或 .cuda()2. 解決方案步驟 步驟1&#xff1a;驗證CUDA可用性 在Pyth…