二.Python流程控制
在程式當中很常需要判斷如果是True則走哪一條判斷,
若False則走哪一條判斷。
我們必須要學會,邏輯式的編排程式走向,並且學會程式當中的判斷方法。
為此,要學會布林值,比較運算子,布林運算子。
1.布林值
有別於前一篇章所述的整數,浮點數,以及字串。
布林值的資料型態,只有True跟False.
#注意:(1)第一個字母必須大寫
(2)True以及False不可命名為變數
2.比較運算子
會比較兩個值,並產生一個布林值結果。
@比較運算子如下
= = 等於
!= 不等於
< 小於
> 大於
<=小於等於
>=大於等於
自己動手:
練習題目一:42==42
"答案"
IDLE>42==42>>True
練習題目一:'發發'!='米奇'
"答案"
IDLE>'發發'!='米奇'>>True
3.布林運算子
布林運算子有三個,and,or,not。
@and真值表
True and True =True
True and False =False
False and True =False
False and False=False
@or 真值表
True and True =True
True and False =True
False and True =True
False and False=False
由於and跟or都可以比較兩個布林值,
所以又稱為二元布林運算子。
@not真值表
not True =False
not False =True
4.布林運算子&比較運算子混合運用
先動手試試,再來講解會比較容易懂
自己動手:
練習題目一:用and去比較4小於5以及5小於6
"答案"
IDLE>(4<5)and(5<6)>>True
練習題目二:用and去比較4小於5以及9小於6
"答案"
IDLE>(4<5)and(9<6)>>False
練習題目三:用or去比較1等於2以及2等於2
"答案"
IDLE>(1==2)and(2==2)>>True
布林運算是針對布林值去做比較,
而比較運算子所取得結果是布林值,
所以這兩個運算是可以做結合不會有衝突的。
舉第一題的例子來給你看,電腦是怎麼去跑這個運算的
(4<5)and(5<6)
True and(5<6)
True and True
True
由此可以看出計算順序是由左而右。
另外補充一點,not>and>or
Python運算順序是這樣的。
5.流程控制陳述句
這部分要學習的很枯燥,但是跟英文文法一樣,是基本功。
有這些東西,你才有辦法去寫判斷,才有辦法寫程式。
陳述句部分,這邊要介紹七種。
依序為:
if,else,elif,while,break,continue,for迴圈與range()函式
(1)if陳述句
構成要件:
a. if這個關鍵字
b. 條件(運算求值為True或是False的表示式)
c. 冒號
d. 在其下一行,縮排。
(2)else陳述句
構成要件:
a. else這個關鍵字
b. 冒號
c. 在其下一行,縮排。
通常實務上,會將以上兩種陳述句合併使用。
自己動手:
練習題目一:假設名子為fafa印出正確,假設不是,印出錯誤
"答案"
IDLE>name='bob'
if name=='fafa':
print('正確')
else:
print('錯誤')
>>錯誤
(3)elif陳述句
由於只有if或else其中一個句子會被執行,有時候我們會希望是很多選擇當中去執行其中一個。
這時候就可以用elif
通常放在if或是其他elif的後面
只有在前面條件是false時才會繼續檢查後續條件。
構成要件:
a. elif這個關鍵字
b. 一個條件
c. 冒號
d. 在其下一行開始縮排
自己動手打以下程式碼,程式順利運行之後再看我對程式的講解。
name='bob'
age=4000
if name=='A':
print('HI,A')
elif age<12:
print('你只是一個小孩')
elif age>2000:
print('千年妖精')
elif age>100:
print('人瑞')
你的答案是不是千年妖精呢? 如果是,恭喜你完成了這個題目
這個程式除了對陳述句的構成要件更熟悉之外,還有一件事你可以思考
年紀大於100跟年紀大於2000可不可以顛倒放?
@@??
答案是
不行。因為這樣千年妖精的選項將永遠不可能被執行。
(4)while陳述句
構成要件:
a. while這個關鍵字
b. 條件
c. 冒號
d. 在其下一行開始縮排
看到這邊,一定會疑惑,while跟if判斷式差別到底在哪?
不同處是,if結束後會繼續執行if之後的判斷式
而while,則會跳回程式開始之處。
動手練習:
練習題目一:
spam=0
if spam<5:
print('A')
spam=spam+1
練習題目二:
spam=0
while spam<5:
print('A')
spam=spam+1
兩個印出來的答案,想必就能讓初行者了解其中差別了!
#如果while被初行者不小心寫成完全不可能結束執行的迴圈時,
只要按下ctrl以及C就能結束程式
(5)break陳述句
這個陳述句的作用,是要終止while陳述句
避免程式當中的迴圈產生
構成要件:
只有break。
例子:
while True:
print('A')
name=input()
if name=='your name':
break
print('Thank you')
(6)continue陳述句
這跟break一樣,用在迴圈內部,值行時遇到此陳述句
會馬上跳回迴圈開始處,重新檢查迴圈條件
動手練習
while True:
print('who are you?')
name=input()
if name!='fafa':
continue
print('password?')
password=input()
if password=='ee':
break
print('通過')
這個練習,如果名子輸入不是fafa則會執行continue,回到程式剛開始處
若輸入是fafa
執行密碼輸入
若為ee
則break 結束這個迴圈
印出通過
(7)for迴圈與range()函式陳述句
若希望程式重複執行固定次數時使用。
構成要件:
a.for這個關鍵字
b.一個變數
c.in這個關鍵字
d.呼叫range()方法,最多傳入三個參數
e.冒號
f.在下一行縮排
動手練習:
題目:將數學0加到100
total=0
for num in range(101):
total=total+num
print(total)
看完這個程式覺得很汗顏,因為電腦計算不到一秒就跑完了
#break和continue都僅能在for以及while判斷中使用
講到這裡,有沒有發現剛剛的構成要件,有一點很奇怪
d.呼叫range()方法,最多傳入三個參數
這具體是什麼意思?
其實是
for i in range(0,10,2):
print(i)
第一個值是起始
第二個值是末端
第三個值是遞增
#注意打的逗號是不是正確的壓底逗號,
若是打中文的大豆號,程式執行會出錯!
6.匯入模組
所有python程式都可以呼叫一組內建函是使用
包括之前使用過的print(),input(),len()
構成要件:
a.import這個關鍵字
b.模組名稱
c.(選填)若為多個模組,用逗號隔開
動手練習
import random
for i in range(5):
print(random.randint(1,10))
#random.randint這個是在兩數之間隨機取數字
7.使用sys.exit()提前結束程式執行
因為exit()函式在sys模組中,所以要先匯入sys
動手:
import sys
while True:
print('Type exit to exit')
response =input()
if response=='exit':
sys.exit()
<第二章總結>
在這篇章學會布林值,布林運算子,函式,
匯入官方提供的模組
知道如何執行迴圈,也知道如何終止程式,
或讓程式回到程式起點開始運行
這一章相當重要,可以的話就多練習幾次。
留言列表