二.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()

<第二章總結>
在這篇章學會布林值,布林運算子,函式,
匯入官方提供的模組
知道如何執行迴圈,也知道如何終止程式,
或讓程式回到程式起點開始運行
這一章相當重要,可以的話就多練習幾次。
 

arrow
arrow
    創作者介紹
    創作者 Zoe 的頭像
    Zoe

    Zoe的生活分享(包含自我成長,學習,旅遊)

    Zoe 發表在 痞客邦 留言(0) 人氣()