Python學習路線 - Python語言基礎入門 - 循環語句

Python學習路線 - Python語言基礎入門 - 循環語句

    • 前言
      • 為什么學習循環語句
    • while循環的基礎語法
      • while循環語句
      • while循環注意點
    • while循環的基礎案例
    • while循環的嵌套應用
      • while循環的嵌套
    • while循環的嵌套案例
      • 補充知識 - print輸出不換行
      • 補充知識 - 制表符\t
      • 練習案例 - 打印九九乘法表
    • for循環的基礎語法
      • 基礎語法
      • range語句
      • 變量作用域
      • for循環臨時變量作用域
    • for循環的嵌套應用
    • 循環中斷:break和continue
      • continue
      • continue在嵌套循環中的應用
      • break
      • break在嵌套循環中的應用
    • 綜合案例

前言

循環普遍存在于日常生活中,同樣,在程序中,循環功能也是至關重要的基礎功能。

在這里插入圖片描述

為什么學習循環語句

循環在程序中同判斷一樣,也是廣泛存在的,是非常多功能實現的基礎:

在這里插入圖片描述

在這里插入圖片描述

while循環的基礎語法

while循環語句

在這里插入圖片描述

代碼示例:

"""
演示while循環的基礎應用
"""
i = 0
while i < 100:print("好好學習,天天向上")i += 1

while循環注意點

1.while的條件需得到布爾類型,True表示繼續循環,False表示結束循環
2.需要設置循環終止的條件,如i += 1配合 i < 100,就能確保100次后停止,否則將無限循環
3.空格縮進和if判斷一樣,都需要設置

while循環的基礎案例

練習案例:求1-100的和

需求:通過while循環,計算從1累加到100的和

提示:
1.終止條件不要忘記,設置為確保while循環100次
2.確保累加的數字,從1開始,到100結束

"""
演示while循環基礎練習題:求1-100的和
"""sum = 0
i = 1
while i <= 100:# sum += isum = sum + ii += 1print(f"1-100累加的和是:{sum}")

在這里插入圖片描述

猜數字案例
設置一個范圍1-100的隨機整數變量,通過while循環,配合input語句,判斷輸入的數字是否等于隨機數

  • 無限次機會,直到猜中為止

  • 每一次猜不中,會提示大了或小了

  • 猜完數字后,提示猜了幾次

  • 提示:

  • 無限次機會,終止條件不適合用數字累加來判斷

    • 可以考慮布爾類型本身(True or False)
  • 需要提示幾次猜中,就需要提供數字累加功能

  • 隨機數可以使用:
    import random
    num = random.randint(1,100)

在這里插入圖片描述

代碼示例:

"""
演示while循環的基礎案例 -  猜數字
"""
# 獲取范圍在1-100的隨機數字
import random
num = random.randint(1,100)# 通過一個布爾類型的變量,做循環是否繼續的標記
flag = True# 定義一個變量,記錄總共猜測了多少次
count = 0while flag:guess_num = int(input("請輸入你猜測的數字:"))if num == guess_num:print("猜中了")flag = Falseelse:if num > guess_num:print("你猜的數小了")else:print("你猜的數大了")count += 1
print(f"你總共猜測了{count}次")

在這里插入圖片描述

while循環的嵌套應用

while循環的嵌套

在這里插入圖片描述

代碼示例:

"""
演示while循環的嵌套使用
"""# 外層:表白100天得到控制
# 內層:每天的表白都送10只玫瑰花的控制i = 1
while i <= 100:print(f"今天是第{i}天,準備表白......")# 內層循環的控制變量j = 1while j <= 10:print(f"送給小美第{j}只玫瑰花")j += 1print("小美,我喜歡你")i += 1print(f"堅持到第{i-1}天,表白成功。")

注意點

  • 同判斷語句的嵌套一樣,循環語句的嵌套,要注意空格縮進。
    • 基于空格縮進來決定層次關系
  • 注意條件的設置,避免出現無限循環(除非真的需要無限循環)

while循環的嵌套案例

補充知識 - print輸出不換行

默認print語句輸出內容會自動換行,如下圖:
在這里插入圖片描述

在即將完成的案例中,我們需要使用print語句,輸出不換行的功能,非常簡單,實現方式如下:
在這里插入圖片描述

如上圖,在print語句中,加上end=''即可輸出不換行了

補充知識 - 制表符\t

在字符串中,有一個特殊符號:\t,效果等同于在鍵盤上按下:tab鍵。
它可以讓我們的多行字符串進行對齊。

比如:

print("Hello World")
print("Mry best")print("Hello\tWorld")
print("Mry123\tbest")

在這里插入圖片描述

練習案例 - 打印九九乘法表

通過while循環,輸出如下九九乘法表內容
在這里插入圖片描述

"""
演示使用while的嵌套循環
打印輸出九九乘法表
"""# 定義外層循環的控制變量
i = 1
while i <= 9:# 定義內層循環的控制變量j = 1while j <= i:print(f"{j} * {i} = {i*j}\t",end='')j += 1print("")i += 1

for循環的基礎語法

基礎語法

for循環
除了while循環語句外,Python同樣提供了for循環語句。
兩者能完成的功能基本差不多,但仍有一些區別:

  • while循環的循環條件是自定義的,自行控制循環條件
  • for循環是一種"輪詢"機制,是對一批內容進行"逐個處理"

在這里插入圖片描述

for循環語句
在這里插入圖片描述
代碼示例:

"""
演示for循環的基礎語法
"""name = "haohaoxuexi"for x in name:# 將name的內容,挨個取出賦予x零時變量# 就可在循環體內對x進行處理print(x)

可以看出,for循環是將字符串的內容:依次取出
所以,for循環也被稱之為:遍歷循環

注意點
同while循環不同,for循環是無法定義循環條件的。
只能從被處理的數據集中,依次取出內容進行處理。

所以,理論上講,Python的for循環無法構建無限循環(被處理的數據集不可能無限大)

練習案例:數一數有幾個a

定義字符串變量name,內容為:“mry is a brand of China”
通過for循環,遍歷此字符串,統計有多少個英文字母:“a”
在這里插入圖片描述
提示:
1.計數可以在循環外定義一個整數類型變量用來做累加計數
2.判斷是否為字母"a",可以通過if語句結合比較運算符來完成

"""
演示for循環的練習題:數一數有幾個a
"""# 統計如下字符串中,有多少個字母a
name = "mry is a brand of China"# 定義一個變量,用來統計有多少個a
count = 0# for 循環統計
# for 臨時變量 in 被統計的數據:
for x in name:if x == "a":count += 1print(f"被統計的字符串中有{count}個a")

range語句

在這里插入圖片描述
語法中的:待處理數據集,嚴格來說,稱之為:序列類型
序列類型指,其中內容可以一個個依次取出的一種類型,包括:

  • 字符串
  • 列表
  • 元組

  • 目前我們只學了字符串類型,其余類型在后續章節會詳細學習它們

for循環語句,本質上是遍歷:序列類型
盡管除字符串外,其它的序列類型目前沒學習到,但是不妨礙我們通過學習range語句,獲得一個簡單的數字序列

語法1
range(num)
獲取一個從0開始,到num結束的數字序列(不含num本身)
如range(5)取得的數據是:[0,1,2,3,4]

語法2
range(num1,num2)
獲得一個從num1開始,到num2結束的數字序列(不含num2本身)
如,range(5,10)取得的數據是:[5,6,7,8,9]

語法3
range(num1,num2,step)
獲得一個從num1開始,到num2結束的數字序列(不含num2本身)
數字之間的步長,以step為準(step默認為1)
如,range(5,10,2)取得的數據是:[5,7,9]

"""
演示Python中的range()語句的基本使用
"""# range語法1 range(num)
for x in range(10):print(x)# range 語法2 range(num1,num2)
for x in range(5,10):# 從5開始,到10結束(不包含10本身)的一個數字序列print(x)# range 語法3 range(num1,num2,step)
for x in range(5,10,2):# 從5開始,到10結束(不包含10本身)的一個數字序列,數字之間的間隔是2print(x)

練習案例:有幾個偶數
定義一個數字變量num,內容隨意
并使用range()語句,獲取從1到num的序列,使用for循環遍歷它。
在遍歷的過程中,統計有多少偶數出現

提示:
1.序列可以使用:range(1, num)得到
2.偶數通過if來判斷,判斷數字余2是否為0即可

"""
演示1到100(不含100本身)范圍內的偶數個數
"""count = 0
num = range(1,100)
for x in num:if x % 2 == 0:count += 1print(f"1到100(不含100本身)范圍內,有{count}個偶數")

在這里插入圖片描述

變量作用域

在這里插入圖片描述

如圖代碼,思考一下:
紅框中的print語句,能否訪問到變量 i ?
在這里插入圖片描述

for循環臨時變量作用域

for 臨時變量 in 待處理數據集:
循環滿足條件時執行的代碼

回看for循環的語法,我們會發現,將從數據集(序列)中取出的數據賦值給:臨時變量
為什么是臨時的呢?

臨時變量,在編程規范上,作用范圍(作用域),只限定在for循環內部

如果在for循環外部訪問臨時變量:

  • 實際上是可以訪問到的
  • 在編程規范上,是不允許、不建議這么做的

代碼示例:

"""
演示Python for循環臨時變量的作用域
"""for i in range(5):print(i)print(i)

在這里插入圖片描述

如果實在需要在循環外訪問循環內的臨時變量,可以在循環外預先定義:
在這里插入圖片描述
如圖,每一次循環的時候,都會將取出的值賦予i變量。

  • 由于i變量是在循環之前(外)定義
  • 在循環外訪問i變量是合理的、允許的

注意點:
1.for循環中的臨時變量,其作用域限定為:
循環內
2.這種限定:

  • 是編程規范的限定,而非強制限定
  • 不遵守也能正常運行,但是不建議這樣做
  • 如需訪問臨時變量,可以預先在循環外定義它

for循環的嵌套應用

在這里插入圖片描述

代碼示例:

"""
演示嵌套應用for循環
"""# 堅持表白100天,每天都送10朵花
# range
i = 0
for i in range(1,101):print(f"今天是向小美表白的第{i}天,加油堅持。")# 寫內層的循環了for j in range(1, 11):print(f"給小美送的第{j}朵玫瑰花")print("小美我喜歡你")print(f"第{i}天,表白成功")

注意點:
如圖,和while循環一樣,需要注意縮進
因為通過縮進,確定層次關系

總結:
1.for循環的嵌套語法:
見下圖:
在這里插入圖片描述

2.注意事項:

  • 需要注意縮進,嵌套for循環同樣通過縮進確定層次關系
  • for循環和while循環可以相互嵌套使用

練習案例-for循環打印九九乘法表

通過for循環,輸出如下九九乘法表內容
在這里插入圖片描述

代碼示例:

"""
演示for循環打印九九乘法表
"""# 通過外層循環控制行數
for i in range(1,10):# 通過內層循環控制每一行的數據for j in range(1,i+1):# 在內層循環中輸出每一行的內容print(f"{j} * {i} = {j * i}\t", end='')# 外層循環可以通過print輸出一個回車符print()

循環中斷:break和continue

continue

continue關鍵字用于:中斷本次循環,直接進入下一次循環
continue可以用于:for循環和while循環效果一致
在這里插入圖片描述

代碼演示:

# 演示循環中斷語句 continue
for i in range(1,6):print("語句1")continueprint("語句2")

在這里插入圖片描述

continue在嵌套循環中的應用

continue關鍵字只可以控制:它所在的循環臨時中斷
代碼演示:

# 演示continue的嵌套應用
for i in range(1,6):print("語句1")for j in range(1,6):print("語句2")continueprint("語句3")print("語句4")

輸出結果:

D:\work\pythonProject\venv\Scripts\python.exe D:\work\pythonProject\03_循環中斷.py 
語句1
語句2
語句2
語句2
語句2
語句2
語句4
語句1
語句2
語句2
語句2
語句2
語句2
語句4
語句1
語句2
語句2
語句2
語句2
語句2
語句4
語句1
語句2
語句2
語句2
語句2
語句2
語句4
語句1
語句2
語句2
語句2
語句2
語句2
語句4Process finished with exit code 0

break

break關鍵字用于:直接結束循環
break可以用于:for循環和while循環,效果一致
在這里插入圖片描述

代碼演示:

# 演示循環中斷語句 break
for i in range(1, 101):print("語句1")breakprint("語句2")print("語句3")

在這里插入圖片描述

break在嵌套循環中的應用

break關鍵字同樣只可以控制:它所在的循環結束

代碼演示:

# 演示break的嵌套應用
for i in range(1,6):print("語句1")for j in range(1,6):print("語句2")breakprint("語句3")print("語句4")

結果輸出:

D:\work\pythonProject\venv\Scripts\python.exe D:\work\pythonProject\03_循環中斷.py 
語句1
語句2
語句4
語句1
語句2
語句4
語句1
語句2
語句4
語句1
語句2
語句4
語句1
語句2
語句4Process finished with exit code 0

總結
1.continue的作用是:
中斷所在循環的當次執行,直接進入下一次
2.break的作用是:
直接結束所在的循環
3.注意事項:

  • continue和break,在for和while循環中作用一致
  • 在嵌套循環中,只能作用在所在的循環上,無法對上層循環起作用

綜合案例

練習案例:發工資
某公司,賬戶余額有1W元,給20名員工發工資。
-員工編號從1到20,從編號1開始,依次領取工資,每人可領取1000元
-領工資時,財務判斷員工的績效分(1-10)(隨機生成),如果低于5,不發工資,換下一位

  • 如果工資發完了,結束發工資。

提示:

  • continue用于跳過員工,break直接結束發工資
  • if判斷余額,不要忘記發完工資后,余額減少1000哦

代碼演示:

"""
演示循環綜合案例:發工資
"""
import random
# 定義賬戶余額變量
money = 10000
# for循環對員工發放工資
for num in range(1,21):score = random.randint(1,10)# 判斷余額足不足if money >= 1000:if score < 5:print(f"員工{num},績效分{score},低于5,下一位")# continue跳過發放continueelse:money -= 1000print(f"向員工{num}發放工資1000元,賬戶余額還剩余{money}元")else:print("工資發完了,下個月領取吧。")# break結束發放break

結果輸出:

D:\work\pythonProject\venv\Scripts\python.exe D:\work\pythonProject\04.py 
員工1,績效分1,低于5,下一位
向員工2發放工資1000元,賬戶余額還剩余9000元
向員工3發放工資1000元,賬戶余額還剩余8000元
員工4,績效分2,低于5,下一位
向員工5發放工資1000元,賬戶余額還剩余7000元
向員工6發放工資1000元,賬戶余額還剩余6000元
向員工7發放工資1000元,賬戶余額還剩余5000元
向員工8發放工資1000元,賬戶余額還剩余4000元
員工9,績效分1,低于5,下一位
員工10,績效分4,低于5,下一位
員工11,績效分4,低于5,下一位
員工12,績效分4,低于5,下一位
向員工13發放工資1000元,賬戶余額還剩余3000元
向員工14發放工資1000元,賬戶余額還剩余2000元
員工15,績效分4,低于5,下一位
向員工16發放工資1000元,賬戶余額還剩余1000元
向員工17發放工資1000元,賬戶余額還剩余0元
工資發完了,下個月領取吧。Process finished with exit code 0

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

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

相關文章

創建dockerSwarm nfs掛載

創建dockerSwarm nfs掛載 nfs高可用部署(lsyncd兩主機雙向同步) nfs高可用部署(lsyncd三主機三向同步) 1. 通過 Volume 1.1 創建 Docker Volume 每個 swarm 節點均創建相同名稱的 Docker Volume&#xff08;名稱為 nfs120&#xff09; docker volume create --driver local …

算法:進制之前的轉換

1. X進制轉換成十進制-V1&#xff1a; /*** 笨辦法&#xff0c;從左往右開始* Tips&#xff1a;只支持正數** param num* param radix* return*/private static Integer xToTenV1(String num, Integer radix) {if (num.length() 0 || num.charAt(0) -) {throw new IllegalArg…

外貿找客戶軟件工具:BotMaster 18.5 Crack

BotMaster 拓展您的業務大師增加銷量Whatsapp營銷&#xff0c;使用 BotMaster 將您的業務提升到新的水平 - 最強大的 WhatsApp 營銷軟件&#xff0c;可促進銷售和發展您的業務。 BotMaster 是一款革命性的 WhatsApp 營銷工具&#xff0c;于 2022 年 1 月推出。這款功能強大的工…

10 大 Mac 數據恢復軟件深度評測

對于任何依賴計算機獲取重要文件&#xff08;無論是個人照片還是重要商業文檔&#xff09;的人來說&#xff0c;數據丟失可能是一場噩夢。值得慶幸的是&#xff0c;有多種專門為 Mac 用戶提供的數據恢復工具&#xff0c;可以幫助檢索丟失或意外刪除的文件。在本文中&#xff0c…

HNU計算機體系結構-實驗3:多cache一致性算法

文章目錄 實驗3 多cache一致性算法一、實驗目的二、實驗說明三 實驗內容1、cache一致性算法-監聽法模擬2、cache一致性算法-目錄法模擬 四、思考題五、實驗總結 實驗3 多cache一致性算法 一、實驗目的 熟悉cache一致性模擬器&#xff08;監聽法和目錄法&#xff09;的使用&am…

從零構建屬于自己的GPT系列4:模型訓練3(訓練過程解讀、序列填充函數、損失計算函數、評價函數、代碼逐行解讀)

&#x1f6a9;&#x1f6a9;&#x1f6a9;Hugging Face 實戰系列 總目錄 有任何問題歡迎在下面留言 本篇文章的代碼運行界面均在PyCharm中進行 本篇文章配套的代碼資源已經上傳 從零構建屬于自己的GPT系列1&#xff1a;數據預處理 從零構建屬于自己的GPT系列2&#xff1a;模型訓…

[力扣100] 10.滑動窗口的最大值

添加鏈接描述 class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:# 思路是使用單調隊列&#xff0c;把滑動窗口中最大的元素放在最頭quecollections.deque()nlen(nums)res[]# 初始化隊列,隊頭保存最大的數的下標&#xff0c;因為需要下標來…

Spring Security 6.x 系列(10)—— SecurityConfigurer 配置器及其分支實現源碼分析(二)

一、前言 在本系列文章&#xff1a; Spring Security 6.x 系列&#xff08;4&#xff09;—— 基于過濾器鏈的源碼分析&#xff08;一&#xff09; 中著重分析了Spring Security在Spring Boot自動配置、 DefaultSecurityFilterChain和FilterChainProxy 的構造過程。 Spring …

Oauth2.0 認證

目錄 前言 1.介紹 2.Oauth2.0過程詳解 3.Oauth 整合到 Spring Boot 實踐 4.方法及配置詳解&#xff1a; 總結 前言 Oauth2.0 是非常流行的網絡授權表準&#xff0c;已經廣泛應用在全球范圍內&#xff0c;比較大的公司&#xff0c;如騰訊等都有大量的應用場景。 1.介紹 …

ARP欺騙攻擊

一.大概原理 ARP&#xff1a;address solution protocol 地址解析協議 ARP是一種基于局域網的TCP/IP協議&#xff0c;arp欺騙就是基于此協議的漏洞來達成我們的目的的&#xff0c;局域網中的數據傳輸并不是用ip地址傳輸的&#xff0c;而是靠mac地址。 我們如果出于某種目的想…

vue打包完成后出現空白頁原因及解決

vue打包完成后出現空白頁原因及解決 原因 資源路徑不對 路由模式&#xff1a;使用history&#xff0c; 此模式上線后易出現404 解決 1、vue.config.js中配置: publicPath: ./2、在后端要求做重定向 如在nginx中使用rewrite做重定向

【Fastadmin】利用 build_select 做一個樹狀下拉選擇框

1.效果展示 系統crud生成的下拉分類有些不是很好看&#xff0c;并且選擇困難&#xff0c;看不出級差&#xff0c;效果如下&#xff1a; 經過 build_select 加工后的效果,美觀好看&#xff0c;并添加上搜索功能: 2. 首先需要寫一個樹狀圖的數據格式 protected $datalist []; pu…

前沿科技與醫藥領域碰撞,《AI制藥方法與實踐》課程重磅上線

藥物發現是生物學、化學、醫學、藥學等基礎研究與工業轉化的重要窗口。近年來&#xff0c;AI技術的發展&#xff0c;為高投入、高失敗率的制藥行業帶來了全新機遇&#xff0c;或將徹底改變傳統制藥的研究范式。為了幫助更多人了解并掌握這一前沿技術&#xff0c;百度飛槳聯合清…

LeedCode刷題---滑動窗口問題

顧得泉&#xff1a;個人主頁 個人專欄&#xff1a;《Linux操作系統》 《C/C》 《LeedCode刷題》 鍵盤敲爛&#xff0c;年薪百萬&#xff01; 一、長度最小的子數組 題目鏈接&#xff1a;長度最小的子數組 題目描述 給定一個含有 n 個正整數的數組和一個正整數 target 。…

29 水仙花數

題目描述 所謂水仙花數&#xff0c;是指一個n位的正整數&#xff0c;其各位數字的n次方和等于該數本身。 例如153是水仙花數&#xff0c;153是一個3位數&#xff0c;并且1531^35^33^3. 輸入描述 第一行輸入一個整數n&#xff0c;表示一個n位的正整數。n在3到7之間&#xff0c;…

uniapp各種小程序分享 share - 主要流程 - 微信、抖音、快手、qq

參考 小程序環境 分享 | uni-app官網uni-app,uniCloud,serverless,分享,uni.share(OBJECT),分享到微信聊天界面示例代碼,分享到微信朋友圈示例代碼,uni.share 在App端各社交平臺分享配置說明,uni.shareWithSystem(OBJECT),plus.share.sendWithhttps://uniapp.dcloud.net.cn/a…

MCS-51系列與AT89C5x系列單片機的介紹與AT系列的命名規則

MCS-51系列與AT89C5x系列單片機 主要涉及MCS-51系列與AT89C5x系列單片機的介紹與AT系列單片機的命名規則 文章目錄 MCS-51系列與AT89C5x系列單片機一、 MCS-51系列單片機二、AT89C5x系列單片機2.1 AT89C5x/AT89S5x系列單片機的特點2.2 AT89系列單片機的型號說明2.2.1 前綴2.2.2…

數組區段的最大最小值

題干 本題要求實現一個函數&#xff0c;找出數組中一部分數據的最大值和最小值。 題目保證沒有無效數據。 函數接口定義&#xff1a; void sublistMaxMin ( int* from, int* to, int* max, int* min ); 其中 from和to都是用戶傳入的參數&#xff0c;分別存放數組部分數據的起…

深度綁定的二維碼

南京西祠 500 萬股股份被以 1 元價格掛牌轉讓。 唏噓不已&#xff0c;就像現在的孩子們都知道玩抖音&#xff0c;我們那個時代&#xff0c;西祠胡同就是互聯網的代名詞。在一個叫做西祠胡同的地方&#xff0c;住著一群村里的年輕人&#xff0c;他們痛并快樂著&#xff0c;渴望…

節省時間,提高效率:深入解析MyBatis Plus

1. MyBatis Plus 概述 將Mybatis 通用Mapper PageHelper 升級成 MyBatis Plus 1.1 簡介 官網&#xff1a;https://baomidou.com/ 參考教程&#xff1a;https://baomidou.com/pages/24112f/ MyBatis-Plus&#xff08;簡稱 MP&#xff09;是一個 MyBatis 的增強工具&#…