循環(huán)

目標(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回車

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市邑商,隨后出現(xiàn)的幾起案子摄咆,更是在濱河造成了極大的恐慌,老刑警劉巖人断,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吭从,死亡現(xiàn)場離奇詭異,居然都是意外死亡恶迈,警方通過查閱死者的電腦和手機涩金,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來暇仲,“玉大人步做,你說我怎么就攤上這事∧胃剑” “怎么了全度?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長斥滤。 經(jīng)常有香客問我讼载,道長,這世上最難降的妖魔是什么中跌? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任咨堤,我火速辦了婚禮,結(jié)果婚禮上漩符,老公的妹妹穿的比我還像新娘一喘。我一直安慰自己,他們只是感情好嗜暴,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布凸克。 她就那樣靜靜地躺著,像睡著了一般闷沥。 火紅的嫁衣襯著肌膚如雪萎战。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天舆逃,我揣著相機與錄音蚂维,去河邊找鬼戳粒。 笑死,一個胖子當(dāng)著我的面吹牛虫啥,可吹牛的內(nèi)容都是我干的蔚约。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼涂籽,長吁一口氣:“原來是場噩夢啊……” “哼苹祟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起评雌,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤树枫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后景东,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體团赏,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年耐薯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丝里。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡曲初,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出杯聚,到底是詐尸還是另有隱情臼婆,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布幌绍,位于F島的核電站颁褂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏傀广。R本人自食惡果不足惜颁独,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望伪冰。 院中可真熱鬧誓酒,春花似錦、人聲如沸贮聂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吓懈。三九已至歼冰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間耻警,已是汗流浹背隔嫡。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工甸怕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人畔勤。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓蕾各,卻偏偏與公主長得像,于是被迫代替她去往敵國和親庆揪。 傳聞我的和親對象是個殘疾皇子式曲,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容