Python

Loop & Common Functions

廖惠平

2016/5/16

Loop

迴圈

  • 重複做同樣的事情
  • 直到設定的條件不符合為止
  • while迴圈
  • for迴圈

在Scratch的拼圖

想想看

如果你今天要寫「跳跳繩」...

  1. 拿起跳繩
  2. 甩繩子
  3. 跳起來
  4. 停止

一直跳一直跳

拿起跳繩
重複
	甩繩子
	跳起來
停止
            		

一直跳到累了

拿起跳繩
重複直到 累了
	甩繩子
	跳起來
停止
            		

跳十下

拿起跳繩
重複 十次
	甩繩子
	跳起來
停止
            		

While Loop

while迴圈

  1. 檢查條件
  2. 如果條件為真(True)
  3. 執行scope內的指令
  4. 重複上述步驟直到條件為False

while迴圈


while 條件:
	重複執行的指令
其他指令
            		
  • 條件為布林值
  • 記得冒號
  • 記得縮排

while迴圈──範例1


isTired = False
while isTired == False:
	print('Jump!')
	isTired = True
print('End')
            		

Jump!
End
            		

Demo

while迴圈──範例2


limit = 3
counts = 0
while counts < limit:
	print('Jump!')
	counts += 1
print('End')
            		

Jump!
Jump!
Jump!
End
            		

Demo

無窮迴圈

  • 一直重複
  • 不會停止
  • 耗資源

無窮迴圈


while True:
	print('hi~')
print('End')
            		

hi~
hi~
hi~
hi~
hi~
hi~
hi~
            		

Demo

注意事項

  • 重複執行某些動作
  • 小心無窮迴圈的出現
  • 注意執行條件有沒有更動

For Loop

For迴圈

  1. 如果從序列(Sequence)中有取得物件
  2. 執行scope內的指令
  3. 取得序列的下一項
  4. 重複上述步驟直到序列取不到物件

For迴圈


for 變數 in 序列:
	重複執行的指令
其他指令
            		
  • 變數為該次取得的物件
  • 記得in
  • 記得冒號
  • 記得縮排

for迴圈──範例1


scores = [60,70,100]
for x in scores:
	print(x)
print('End')
            		

60
70
100
End
            		

Demo

for迴圈──範例2


str = 'Hello'
for x in str:
	print(x)
print('End')
            		

H
e
l
l
o
End
            		

Demo

for迴圈──範例3


names_scores = (('Amy',82,90),('John',33,64),('Zoe',91,94))
for x,y,z in names_scores:
	print(x)
	print(y,z)
print('End')
            		

Amy
82 90
John
33 64
Zoe
91 94
End
            		

Demo

練習

請用迴圈計算此班的各科平均與個人總平均

姓名 C Python Java
習西西 80 74 29
王蟒蛇 38 84 59
林嘉娃 49 43 78

Function

函式

  • 可重複使用的功能
  • 避免複製貼上
  • 傳入參數可微調結果
  • 可能有回傳值
  • 內建函式
  • 自行撰寫函式

參數

  • parameter
  • 類似指派
  • 用來調整函式執行時的結果
  • 可變變數可在函式中被改動!

範例

假設我想要一杯紅茶微糖去冰...

  • 函式:生產手搖紅茶
  • 參數:微糖、去冰
  • 回傳:一杯微糖去冰的手搖紅茶

呼叫函式


函式名稱(參數)
print('Hi~')		#Hi~
print('1','2','3')	#1 2 3
a = [1,2,3,4,5]
b = len(a)		#b = 5
            		
  • 以函式名稱+小括號呼叫(call)函式
  • 可以有多個參數
  • 可用變數接回傳值

Built-in Functions

內建函式

輸入輸出

  • print():顯示
  • format():設定格式
  • input():輸入
  • open():開啟檔案

型別

  • int():轉為整數
  • float():轉為浮點數
  • complex():轉為複數
  • bool():轉為布林值
  • bin():轉為二進位
  • hex():轉為十六進位
  • oct():轉為八進位
  • chr():回傳該Unicode編碼的字元
  • ord():回傳該字元的Unicode編碼

練習1

請問下列程式碼執行結果為何?


a='15'
print(a)
print(int(a))
print(float(a))
print(complex(a))
print(bool(a))
b=15
print(bin(b))
print(hex(b))
print(oct(b))
c=97
print(chr(c))
d='a'
print(ord(d))
					

Demo

數學運算

  • abs():取絕對值
  • max():取最大值
  • min():取最小值
  • pow(a,b):a的b次方
  • round():取近似值
  • sum():加總序列中的數值

練習2

請問下列程式碼執行結果為何?


a = 3
b = -3
c = 0
d = -0
print(abs(a))
print(abs(b))
print(abs(c))
print(abs(d))
print(max(a,b,c,d))
print(min(a,b,c,d))
                    

練習2


e = 2
f = 3
g = 9
h = 0.5
print(pow(e,f))
print(pow(f,e))
print(pow(g,h))
i = 1.4
j = 1.5
k = -0.5
print(round(i))
print(round(j))
print(round(k))
x = [1,2,3,4,5]
total = sum(x)
print(total)
                    

Demo

序列

  • len():回傳序列長度
  • sorted():排序序列中的物件
  • reversed():反轉序列中物件被取用的順序
  • range(a,b):從a起到b止的序列
  • zip():配對兩序列

練習3

請問下列程式碼執行結果為何?


a = [4,2,1,-3,5]
b = [1,2,3,4,5]
print(len(a))
sorted(a)
print(a)
for x in reversed(a):
    print(x,end=' ')
print('\n====================')
for x in range(1,5):
    print(x,end=' ')
print('\n====================')
print(list(zip(a,b)))
                    

Demo