01前言
通常都聽到別人說,計算機很牛逼,很聰明,其實計算機一點都不聰明,光是你要跟他溝通,都會氣 shi 你,聰明的是在寫程序的你。
寫程序就是跟計算機溝通,告訴它要做什麼。
竟然是這樣,那麼肯定缺少不了一些溝通邏輯。比如你要告訴計算機在什麼情況下做什麼?或者在哪個時間點做什麼?
這都需要用到邏輯判斷。這一章節,主要就是說這個。
02目錄
03一、條件語句
1、什麼是條件語句
Python 條件語句跟其他語言基本一致的,都是通過一條或多條語句的執行結果( True 或者 False )來決定執行的代碼塊。
Python 程序語言指定任何非 0 和非空(null)值為 True,0 或者 null 為 False。
執行的流程圖如下:
2、if 語句的基本形式
Python 中,if 語句的基本形式如下:
if 判斷條件:執行語句……else: 執行語句……
之前的章節也提到過,Python 語言有著嚴格的縮進要求,因此這裡也需要注意縮進,也不要少寫了冒號
:
。
if 語句的判斷條件可以用>(大於)、<(小於)、==(等於)、>=(大於等於)、<=(小於等於)來表示其關係。
例如:
輸出的結果為:
不及格
上面也說到,非零數值、非空字符串、非空 list 等,判斷為 True,否則為 False。因此也可以這樣寫:
輸出的結果如下:
可見,把結果列印出來了。
那如果我們把
num
改為空字符串呢?
很明顯,空字符串是為 False 的,不符合條件語句,因此不會執行到
print('Hello Python')
這段代碼。
還有再囉嗦一點,提醒一下,在條件判斷代碼中的冒號
:
後、下一行內容是一定要縮進的。不縮進是會報錯的。
冒號和縮進是一種語法。它會幫助 Python 區分代碼之間的層次,理解條件執行的邏輯及先後順序。
3、if 語句多個判斷條件的形式
有些時候,我們的判斷語句不可能只有兩個,有些時候需要多個,比如上面的例子中大於 60 的為及格,那我們還要判斷大於 90 的為優秀,在 80 到 90 之間的良好呢?
這時候需要用到 if 語句多個判斷條件,
用偽代碼來表示:
if 判斷條件1:執行語句1……elif 判斷條件2: 執行語句2……elif 判斷條件3: 執行語句3……else: 執行語句4……
實例:
輸出的結果:良好
4、if 語句多個條件同時判斷
有時候我們會遇到多個條件的時候該怎麼操作呢?
比如說要求 java 和 python 的考試成績要大於 80 分的時候才算優秀,這時候該怎麼做?
這時候我們可以結合
or
和
and
來使用。
or (或)表示兩個條件有一個成立時判斷條件成功
and (與)表示只有兩個條件同時成立的情況下,判斷條件才成功。
例如:
輸出結果:
不優秀良好
注意:if 有多個條件時可使用括號來區分判斷的先後順序,括號中的判斷優先執行,此外 and 和 or 的優先級低於 >(大於)、<(小於)等判斷符號,即大於和小於在沒有括號的情況下會比與或要優先判斷。
5、if 嵌套
if 嵌套是指什麼呢?
就跟字面意思差不多,指 if 語句中可以嵌套 if 語句。
比如上面說到的例子,也可以用 if 嵌套來寫。
當然這只是為了說明 if 條件語句是可以嵌套的。如果是這個需求,我個人還是不太建議這樣使用 if 嵌套的,因為這樣代碼量多了,而且嵌套太多,也不方便閱讀代碼。
04二、循環語句
1、什麼是循環語句
一般程式語言都有循環語句,為什麼呢?
那就問一下自己,我們弄程序是為了幹什麼?
那肯定是為了方便我們工作,優化我們的工作效率啊。
而計算機和人類不同,計算機不怕苦也不怕累,也不需要休息,可以一直做。
你要知道,計算機最擅長就是做重複的事情。
所以這時候需要用到循環語句,循環語句允許我們執行一個語句或語句組多次。
循環語句的一般形式如下:
在 Python 提供了 for 循環和 while 循環。
這裡又有一個問題了,如果我想讓他運行了一百次之後停止,那該怎麼做呢?
這時候需要用到一些控制循環的語句:
這些控制語句是為了讓我們告訴程序什麼時候停止,什麼時候不運行這次循環。
2、 for 循環語句
我們先來看下 for 循環語句。
它的流程圖基本如下:
基本的語法格式:
從列印結果來看,它就是把字符串
Hello
一個一個字符的列印出來。
那如果我們把字符串換為字典 dict 呢?
你會發現只列印了字典 dict 中的每一個 key 值。
很多時候,我都是建議大家學到一個新的知識點,都多去嘗試。
你嘗試一遍,自己觀察出來的結論,好過別人說十遍。
如果你不知道怎麼去試?
可以根據我們的例子舉一反三,比如上面的 for 循環,試了字符串,字典,那我們之前學的基本數據類型還有什麼呢?
不記得可以再返回去看看,可以把所有的基本類型都拿去嘗試一下。
比如,你試了之後,會發現整數和浮點數是不可以直接放在 for 循環裡面的。
3、 range() 函數
for 循環還常常和 range() 函數搭配使用的。
如果不知道 range() 函數 , 我們直接通過一段程序來理解。
for i in range(3):print(i)
列印的結果為:
012
可見,列印了 0 到 3 。
使用 range(x) 函數,就可以生成一個從 0 到 x-1 的整數序列。
如果是
range(a,b)
函數,你可以生成了一個左閉右開的整數序列。
其實例子中的
range(3)
可以寫成
range(0,3)
, 結果是一樣的。
其實使用 range() 函數,我們更多是為了把一段代碼重複運行 n 次。
這裡提個問題,你仔細觀察 range() 函數,上面說到的不管是 1 個參數的,還是 2 個參數的都有什麼共同的特點?
不知道你們有沒有發現,他都是每次遞增 1 的。
range(3)
就是 0 ,1,2 ,每次遞增 1 。
range(3,6)
就是 3 ,4 ,5 ,也是每次遞增 1 的。
那能不能每次不遞增 1 呢?
比如我想遞增 2 呢?
在程序的編寫中,肯定會遇到這樣的需求的。而 python 發展至今,range 函數肯定也會有這種功能。
所以 range 函數還有一個三個參數的。
比如
range(0,10,2)
, 它的意思是:從 0 數到 10(不取 10 ),每次間隔為 2 。
4、While 循環語句
While 循環和 for 循環的作用是一樣的。
我們先來看看 While 循環語句的樣子。
程序輸出的結果是:
5050
這個例子是計算 1 到 100 所有整數的和。
5、for 循環和 whlie 循環的區別
之前也提到過了,如果一種語法能表示一個功能,那沒必要弄兩種語法來表示。
竟然都是循環,for 循環和 while 循環肯定有他們的區別的。
那什麼時候才使用 for 循環和 while 循環呢?
for 循環主要用在迭代可迭代對象的情況。while 循環主要用在需要滿足一定條件為真,反覆執行的情況。 (死循環+break 退出等情況。)部分情況下,for 循環和 while 循環可以互換使用。例如:
雖然列印的結果是一樣的,但是細細品味你會發現,他們執行的順序和知道的條件是不同的。
6、嵌套循環
循環語句和條件語句一樣,都是可以嵌套的。
具體的語法如下:
除此之外,你也可以在循環體內嵌入其他的循環體,如在 while 循環中可以嵌入 for 循環, 反之,你可以在 for 循環中嵌入 while 循環
比如:
當我們需要判斷 sum 大於 1000 的時候,不在相加時,可以用到 break ,退出整個循環。
有時候,我們只想統計 1 到 100 之間的奇數和,那麼也就是說當 count 是偶數,也就是雙數的時候,我們需要跳出當次的循環,不想加,這時候可以用到 break
還有:
輸出的結果:
當然,這裡還用到了
for … else
語句。
其實 for 循環中的語句和普通的沒有區別,else 中的語句會在循環正常執行完(即 for 不是通過 break 跳出而中斷的)的情況下執行。
當然有
for … else
,也會有
while … else
。他們的意思都是一樣的。
05三、條件語句和循環語句綜合實例
1、列印九九乘法表
2、判斷是否是閏年