目標(biāo)
程序的三大流程
while 循環(huán)基本使用
break 和 continue
while 循環(huán)嵌套
01. 程序的三大流程
在程序開發(fā)中忿檩,一共有三種流程方式:
順序?——?從上向下,順序執(zhí)行代碼
分支?—— 根據(jù)條件判斷潜腻,決定執(zhí)行代碼的?分支
循環(huán)?—— 讓?特定代碼 重復(fù)?執(zhí)行
02.?while?循環(huán)基本使用
循環(huán)的作用就是讓?指定的代碼?重復(fù)的執(zhí)行
while?循環(huán)最常用的應(yīng)用場景就是?讓執(zhí)行的代碼?按照?指定的次數(shù)?重復(fù)?執(zhí)行
需求 —— 打印 5 遍?Hello Python
思考 —— 如果要求打印 100 遍怎么辦模燥?
2.1?while?語句基本語法
初始條件設(shè)置 —— 通常是重復(fù)執(zhí)行的 計數(shù)器
while 條件(判斷 計數(shù)器 是否達(dá)到 目標(biāo)次數(shù)):
? ? 條件滿足時咖祭,做的事情1
? ? 條件滿足時,做的事情2
? ? 條件滿足時蔫骂,做的事情3
? ? ...(省略)...
? ? 處理條件(計數(shù)器 + 1)
注意:
while?語句以及縮進(jìn)部分是一個?完整的代碼塊
第一個 while 循環(huán)
需求
打印 5 遍 Hello Python
# 1. 定義重復(fù)次數(shù)計數(shù)器
i = 1
# 2. 使用 while 判斷條件
while i <= 5:
? ? # 要重復(fù)執(zhí)行的代碼
? ? print("Hello Python")
? ? # 處理計數(shù)器 i
? ? i = i + 1
print("循環(huán)結(jié)束后的 i = %d" % i)
注意:循環(huán)結(jié)束后么翰,之前定義的計數(shù)器條件的數(shù)值是依舊存在的
死循環(huán)
由于程序員的原因,忘記?在循環(huán)內(nèi)部?修改循環(huán)的判斷條件辽旋,導(dǎo)致循環(huán)持續(xù)執(zhí)行浩嫌,程序無法終止惋增!
2.2 賦值運算符
在 Python 中杉女,使用?=?可以給變量賦值
在算術(shù)運算時,為了簡化代碼的編寫檀夹,Python?還提供了一系列的 與?算術(shù)運算符?對應(yīng)的?賦值運算符
注意:賦值運算符中間不能使用空格
運算符描述實例
=簡單的賦值運算符c = a + b 將 a + b 的運算結(jié)果賦值為 c
+=加法賦值運算符c += a 等效于 c = c + a
-=減法賦值運算符c -= a 等效于 c = c - a
*=乘法賦值運算符c *= a 等效于 c = c * a
/=除法賦值運算符c /= a 等效于 c = c / a
//=取整除賦值運算符c //= a 等效于 c = c // a
%=取?模?(余數(shù))賦值運算符c %= a 等效于 c = c % a
**=冪賦值運算符c **= a 等效于 c = c ** a
2.3 Python 中的計數(shù)方法
常見的計數(shù)方法有兩種溶其,可以分別稱為:
自然計數(shù)法(從?1?開始)—— 更符合人類的習(xí)慣
程序計數(shù)法(從?0?開始)—— 幾乎所有的程序語言都選擇從 0 開始計數(shù)
因此骚腥,大家在編寫程序時,應(yīng)該盡量養(yǎng)成習(xí)慣:除非需求的特殊要求瓶逃,否則 循環(huán) 的計數(shù)都從 0 開始
2.4 循環(huán)計算
在程序開發(fā)中束铭,通常會遇到?利用循環(huán)?重復(fù)計算?的需求
遇到這種需求,可以:
在?while?上方定義一個變量厢绝,用于?存放最終計算結(jié)果
在循環(huán)體內(nèi)部契沫,每次循環(huán)都用?最新的計算結(jié)果,更新?之前定義的變量
需求
計算 0 ~ 100 之間所有數(shù)字的累計求和結(jié)果
# 計算 0 ~ 100 之間所有數(shù)字的累計求和結(jié)果
# 0. 定義最終結(jié)果的變量
result = 0
# 1. 定義一個整數(shù)的變量記錄循環(huán)的次數(shù)
i = 0
# 2. 開始循環(huán)
while i <= 100:
? ? print(i)
? ? # 每一次循環(huán)昔汉,都讓 result 這個變量和 i 這個計數(shù)器相加
? ? result += i
? ? # 處理計數(shù)器
? ? i += 1
print("0~100之間的數(shù)字求和結(jié)果 = %d" % result)
需求進(jìn)階
計算 0 ~ 100 之間 所有?偶數(shù)?的累計求和結(jié)果
開發(fā)步驟
編寫循環(huán)?確認(rèn)?要計算的數(shù)字
添加?結(jié)果?變量懈万,在循環(huán)內(nèi)部?處理計算結(jié)果
# 0. 最終結(jié)果
result = 0
# 1. 計數(shù)器
i = 0
# 2. 開始循環(huán)
while i <= 100:
? ? # 判斷偶數(shù)
? ? if i % 2 == 0:
? ? ? ? print(i)
? ? ? ? result += i
? ? # 處理計數(shù)器
? ? i += 1
print("0~100之間偶數(shù)求和結(jié)果 = %d" % result)
03. break 和 continue
break?和?continue?是專門在循環(huán)中使用的關(guān)鍵字
break?某一條件滿足時,退出循環(huán),不再執(zhí)行后續(xù)重復(fù)的代碼
continue?某一條件滿足時会通,不執(zhí)行后續(xù)重復(fù)的代碼
break?和?continue?只針對?當(dāng)前所在循環(huán)?有效
3.1 break
在循環(huán)過程中口予,如果?某一個條件滿足后,不?再希望?循環(huán)繼續(xù)執(zhí)行涕侈,可以使用?break?退出循環(huán)
i = 0
while i < 10:
? ? # break 某一條件滿足時苹威,退出循環(huán),不再執(zhí)行后續(xù)重復(fù)的代碼
? ? # i == 3
? ? if i == 3:
? ? ? ? break
? ? print(i)
? ? i += 1
print("over")
break?只針對當(dāng)前所在循環(huán)有效
3.2 continue
在循環(huán)過程中驾凶,如果?某一個條件滿足后,不?希望?執(zhí)行循環(huán)代碼掷酗,但是又不希望退出循環(huán)调违,可以使用?continue
也就是:在整個循環(huán)中,只有某些條件泻轰,不需要執(zhí)行循環(huán)代碼技肩,而其他條件都需要執(zhí)行
i = 0
while i < 10:
? ? # 當(dāng) i == 7 時,不希望執(zhí)行需要重復(fù)執(zhí)行的代碼
? ? if i == 7:
? ? ? ? # 在使用 continue 之前浮声,同樣應(yīng)該修改計數(shù)器
? ? ? ? # 否則會出現(xiàn)死循環(huán)
? ? ? ? i += 1
? ? ? ? continue
? ? # 重復(fù)執(zhí)行的代碼
? ? print(i)
? ? i += 1
需要注意:使用?continue?時虚婿,條件處理部分的代碼,需要特別注意泳挥,不小心會出現(xiàn)?死循環(huán)
continue?只針對當(dāng)前所在循環(huán)有效
04.?while?循環(huán)嵌套
4.1 循環(huán)嵌套
while?嵌套就是:while?里面還有?while
while 條件 1:
? ? 條件滿足時然痊,做的事情1
? ? 條件滿足時,做的事情2
? ? 條件滿足時屉符,做的事情3
? ? ...(省略)...
? ? while 條件 2:
? ? ? ? 條件滿足時剧浸,做的事情1
? ? ? ? 條件滿足時,做的事情2
? ? ? ? 條件滿足時矗钟,做的事情3
? ? ? ? ...(省略)...
? ? ? ? 處理條件 2
? ? 處理條件 1
4.2 循環(huán)嵌套演練 —— 九九乘法表
第 1 步:用嵌套打印小星星
需求
在控制臺連續(xù)輸出五行?*唆香,每一行星號的數(shù)量依次遞增
*
**
***
****
*****
使用字符串 * 打印
# 1. 定義一個計數(shù)器變量,從數(shù)字1開始吨艇,循環(huán)會比較方便
row = 1
while row <= 5:
? ? print("*" * row)
? ? row += 1
第 2 步:使用循環(huán)嵌套打印小星星
知識點?對?print?函數(shù)的使用做一個增強
在默認(rèn)情況下躬它,print?函數(shù)輸出內(nèi)容之后,會自動在內(nèi)容末尾增加換行
如果不希望末尾增加換行东涡,可以在?print?函數(shù)輸出內(nèi)容的后面增加?, end=""
其中?""?中間可以指定?print?函數(shù)輸出內(nèi)容之后冯吓,繼續(xù)希望顯示的內(nèi)容
語法格式如下:
# 向控制臺輸出內(nèi)容結(jié)束之后,不會換行
print("*", end="")
# 單純的換行
print("")
end=""?表示向控制臺輸出內(nèi)容結(jié)束之后软啼,不會換行
假設(shè)?Python?沒有提供?字符串的?*?操作?拼接字符串
需求
在控制臺連續(xù)輸出五行?*桑谍,每一行星號的數(shù)量依次遞增
*
**
***
****
*****
開發(fā)步驟
1> 完成 5 行內(nèi)容的簡單輸出
2> 分析每行內(nèi)部的?*?應(yīng)該如何處理?
每行顯示的星星和當(dāng)前所在的行數(shù)是一致的
嵌套一個小的循環(huán)祸挪,專門處理每一行中?列?的星星顯示
row = 1
while row <= 5:
? ? # 假設(shè) python 沒有提供字符串 * 操作
? ? # 在循環(huán)內(nèi)部锣披,再增加一個循環(huán),實現(xiàn)每一行的 星星 打印
? ? col = 1
? ? while col <= row:
? ? ? ? print("*", end="")
? ? ? ? col += 1
? ? # 每一行星號輸出完成后,再增加一個換行
? ? print("")
? ? row += 1
第 3 步: 九九乘法表
需求?輸出 九九乘法表雹仿,格式如下:
1 * 1 = 1?
1 * 2 = 2? 2 * 2 = 4?
1 * 3 = 3? 2 * 3 = 6? 3 * 3 = 9?
1 * 4 = 4? 2 * 4 = 8? 3 * 4 = 12? 4 * 4 = 16?
1 * 5 = 5? 2 * 5 = 10? 3 * 5 = 15? 4 * 5 = 20? 5 * 5 = 25?
1 * 6 = 6? 2 * 6 = 12? 3 * 6 = 18? 4 * 6 = 24? 5 * 6 = 30? 6 * 6 = 36?
1 * 7 = 7? 2 * 7 = 14? 3 * 7 = 21? 4 * 7 = 28? 5 * 7 = 35? 6 * 7 = 42? 7 * 7 = 49?
1 * 8 = 8? 2 * 8 = 16? 3 * 8 = 24? 4 * 8 = 32? 5 * 8 = 40? 6 * 8 = 48? 7 * 8 = 56? 8 * 8 = 64?
1 * 9 = 9? 2 * 9 = 18? 3 * 9 = 27? 4 * 9 = 36? 5 * 9 = 45? 6 * 9 = 54? 7 * 9 = 63? 8 * 9 = 72? 9 * 9 = 81
開發(fā)步驟
1. 打印 9 行小星星
*
**
***
****
*****
******
*******
********
*********
2. 將每一個?*?替換成對應(yīng)的行與列相乘
# 定義起始行
row = 1
# 最大打印 9 行
while row <= 9:
? ? # 定義起始列
? ? col = 1
? ? # 最大打印 row 列
? ? while col <= row:
? ? ? ? # end = ""增热,表示輸出結(jié)束后,不換行
? ? ? ? # "\t" 可以在控制臺輸出一個制表符胧辽,協(xié)助在輸出文本時對齊
? ? ? ? print("%d * %d = %d" % (col, row, row * col), end="\t")
? ? ? ? # 列數(shù) + 1
? ? ? ? col += 1
? ? # 一行打印完成的換行
? ? print("")
? ? # 行數(shù) + 1
? ? row += 1
字符串中的轉(zhuǎn)義字符
\t?在控制臺輸出一個?制表符峻仇,協(xié)助在輸出文本時?垂直方向?保持對齊
\n?在控制臺輸出一個?換行符
制表符?的功能是在不使用表格的情況下在?垂直方向?按列對齊文本
轉(zhuǎn)義字符描述
\\反斜杠符號
\'單引號
\"雙引號
\n換行
\t橫向制表符
\r回車