講者 : 邱妍瑛

日期:2019 / 12 / 11

Python基礎

start coding

大綱

  • Python 簡介
  • Lab - 1 成績計算
    • 基本資料型態
    • 變數
    • 輸入輸出
    • 運算子
  • Lab - 2 溫度檢測
    • 流程控制
  • Lab - 3 進階成績計算
    • 串列
    • 迴圈

Outline

Python?

What is python?

程式語言有很多種

選 Python 的原因

  • 簡單易學、簡潔易讀
  • 用途廣泛且實用
    • 聊天機器人
    • 物聯網
    • 數據分析
    • 網站開發
    • 遊戲製作
    • ...
  • 活躍的社群
  • 開發者能夠用更少的代碼表達想法
#include <iostream> 
using namespace std; 

int main() { 
 cout << "Hello! World!"; 

 return 0; 
}
print('Hello World')

Lab - 1

grade

Lab - 1 

使用者輸入:

輸出:

  • 名字(str)
  • 學號(str)
  • 三個成績(int, int, float
  • 名字
  • 學號
  • 總成績
  • 平均(取整數)
#輸出格式
姓名:
學號:
總成績為:
平均為:

我們需要什麼

使用者輸入:

輸出:

輸入

變數

資料型態

運算子

輸出

  • 名字(str)
  • 學號(str)
  • 三個成績(int, int, float
  • 名字
  • 學號
  • 總成績
  • 平均(取整數)

變數

Variable

在 Python 中,變數像是標籤一般,

將各種型態的資料貼上標籤,方便之後使用。

變數

資料 A

名稱

變數

另一個名稱

資料 B

變數寫法

例如我們設這個變數為 pet,

內容則是一個字串 'Kitty'。

pet = 'Kitty'

= 代表 assign (指派)

不是數學上的等於

利用 = 將資料放進變數裡

變數實例

Pet

'Kitty'

使用者

Python

變數實例

pet = 'Kitty'
pet = '小黑'

既然是「變」數,代表我們可以改變它的內容:

一個標籤只能貼在一個內容上,所以 pet 就變成 '小黑' 了

'小黑'

變數實例

Pet

'小黑'

使用者

Python

變數命名規則

  • 使用 A-Z, 0-9, 和 _ 底線命名
  • Python 會辨別大小寫
  • 不能使用 Python 的保留字
  • 開頭不能為數字

基本資料型態

Basic Data Type

資料型態決定了

資料將佔用的記憶體空間大小

以及程式該如何處理資料

int 12
float 16
str 21
bool 12
資料型態 佔用記憶體大小
資料型態 名稱 例子
int 整數 1, 2, -1, -2
float 小數 0.1, 0.2, -0.1, -0.2
str 字串 'abc', "abc"
bool 布林值 True, False
complex 複數 1 + 2j, 3 + 4j

str

要被單引號雙引號包起來


以下這些都是 str 型態:
'abc', "abc"
'123', "123"

'0.1', "0.1"
'True', "True"

bool

第一個字母要大寫

只能表示對(True)或錯(False)

通常用於條件判斷

'123'

強制型態轉換

123
int('123')

字串

整數

強制型態轉換

'123'
123
str(123)

字串

整數

強制型態轉換

輸入

Input

input( )

讀進來的東西是一個 String

因此可藉由剛剛提到的強制轉型來做型態轉換

input() #直接輸入

input("請輸入姓名: ") #帶有提示的輸入

num = input("請輸入一個數字: ") #存進變數

num = int(input("請輸入一個數字: ")) #強制轉型
num = eval(input("請輸入一個數字"))

將 「請輸入姓名:」

直接輸出到螢幕上

a = input('請輸入姓名: ') 

使用者輸入的「Yan」

assign 到 a 這個變數中

請輸入姓名:

Yan

回到 Lab - 1 

使用者輸入:

name = input("請輸入姓名: ")
num = input("請輸入學號:")

grade1 = int(input("請輸入成績1: "))
grade2 = int(input("請輸入成績2: "))
grade3 = float(input("請輸入成績3: "))
  • 名字(str)
  • 學號(str)
  • 三個成績(int, int, float

輸出

Output

print( )

a = 1
b = 2
print('show a and b: {}, {}'.format(a, b))

str.format(args1, args2, ...)

我們可以藉由這個功能來格式化輸出

show a and b: 1, 2

a = 1
b = 2
print(a ,b)

算數運算子

Arithmetic operator

名稱 算術運算子 例子
+
-
*
除(浮點數) / 4/2 結果為 2.0
除(整數) // 9//5 結果為 1
次方 ** 2**3 結果為 8
取餘數 % 7%5 結果為 2

輸出:

  • 名字
  • 學號
  • 總成績
  • 平均(取整數)
all = grade1 + grade2 + grade3
avg = all//3

先算出總分跟平均:

輸出:

  • 名字
  • 學號
  • 總成績
  • 平均(取整數)
print("姓名為:", name)
print("學號為:", num)

print("總成績為: {}".format(all))
print("平均為: {}".format(avg))

然後輸出,可利用剛剛有提到的格式化輸出:

#輸出格式
姓名:
學號:
總成績為:
平均為:

!輪到你寫了!

不要偷偷翻前面呦

這樣才會進步啾咪

給你 Lab - 1 的題目 

使用者輸入:

輸出:

  • 名字(str)
  • 學號(str)
  • 三個成績(int, int, float
  • 名字
  • 學號
  • 總成績
  • 平均(取整數)
#輸出格式
姓名:
學號:
總成績為:
平均為:
name = input("請輸入姓名: ")
num = input("請輸入學號:")

grade1 = int(input("請輸入成績1: "))
grade2 = int(input("請輸入成績2: "))
grade3 = float(input("請輸入成績3: "))

all = grade1 + grade2 + grade3
aver = all//3

print("姓名為:", name)
print("學號為:", num)

print("總成績為 {}".format(all))
print("平均為 {}".format(avg))

Lab - 1 完整程式碼:

Lab - 2

whether

Lab - 2

使用者輸入:

判斷後輸出:

  • 氣溫(int)
  • 氣溫高於或等於 25 度 但不到 33 度:穿短袖
  • 大於 33 度:太熱了不出門
  • 小於 25 度:穿長袖

我們需要什麼

使用者輸入:

判斷後輸出:

  • 氣溫(int)
  • 氣溫高於或等於 25 度 但不到 33 度:穿短袖
  • 大於 33 度:太熱了不出門
  • 小於 25 度:穿長袖

輸入

流程控制

輸出

流程控制

flow control

if-else 寫法

if 條件:
	成立時執行的程式片段
elif 條件:
	上面 if 不成立且條件成立時執行的程式片段
else :
  	以上都不成立時執行的程式片段

if-else

if 條件式1:
    blabalbla
    blabalbla...
    
elif 條件式2:
    blabalbla
    blabalbla...

# 上述條件式都不成立執行
else:
    blabalbla
    blabalbla...

if 的執行區塊

else 的執行區塊

elif 的執行區塊

縮排

  • 用來劃分程式的執行區塊
  • 可以用 Tab 或 空白鍵
  • 同一區塊的縮排一定要一致
  • 整份程式碼建議使用相同的標準當作縮排
while playing:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            playing = False

這就是縮排

比較/邏輯運算子

if temp >= 25:
    if temp < 33:
        print("穿短袖")
    else:
        print("太熱了不出門")
else:
    print("穿長袖")

使用者輸入:

  • 氣溫(int)
  • 氣溫高於或等於 25 度 但不到 33 度:穿短袖
  • 大於 33 度:太熱了不出門
  • 小於 25 度:穿長袖
temp = int(input('請輸入氣溫:'))

!輪到你寫了!

不要偷偷翻前面呦

對我就是在說你

附上 Lab - 2 的題目

使用者輸入:

判斷後輸出:

  • 氣溫(int)
  • 氣溫高於或等於 25 度 但不到 33 度:穿短袖
  • 大於 33 度:太熱了不出門
  • 小於 25 度:穿長袖
temp = int(input('請輸入氣溫:'))

if temp >= 25:
    if temp < 33:
        print("穿短袖")
    else:
        print("太熱了不出門")
else:
    print("穿長袖")

Lab - 2 完整程式碼:

Lab - 3

grade 2.0

Lab - 3

讓使用者輸入5個分數,

用串列存放分數,

然後計算串列中元素的總和並輸出總分。

#input
請輸入成績 1 :
請輸入成績 2 :
請輸入成績 3 :
請輸入成績 4 :
請輸入成績 5 :
#output
總分:

偷吃步:可使用內建函式 sum() 來算總分

串列

list

串列簡介

  • 由一連串資料所組成、有順序且可改變內容的序列。
  • 以 [ ] 標示
  • 裡面的資料以「 , 」隔開
  • 串列中可以包含不同型別的元素。
  • 若串列的元素相同但順序不同,表示不同串列。
[1, 'Yan', 2, 'Erica']
[2, 'Erica', 1, 'Yan']
name_list = ['Yan', 'Erica', 'oneone']

建立串列

empty_list = []
another_empty_list = list()

取得 list 的元素

在 list 名稱後面使用中括號 [ ]

加上想取得元素的位置 ( index )

alphabets = ['a', 'b', 'c']
print(alphabets[1])

b

疑?第一個怎麼不是 a?

取得 list 的元素

alphabets = ['a', 'b', 'c']
print(alphabets[1])
0 1 2
a b c

程式語言中的 index 是從 0 開始

所以如果要取得第一個位置的元素,要輸入的位置值會是 0 

想取得第二個元素則得輸入 1 ,以此類推

b

位置1

新增元素

alphabets = ['a', 'b', 'c']
alphabets.append('d')

list名稱 .append( 元素 )

['a', 'b', 'c', 'd']

['a', 'b', 'c']

append('d')

回到 Lab - 3

讓使用者輸入5個分數,

用串列存放分數,

然後計算串列中元素的總和並輸出總分。

#input
請輸入成績 1 :
請輸入成績 2 :
請輸入成績 3 :
請輸入成績 4 :
請輸入成績 5 :
#output
總分:

偷吃步:可使用內建函式 sum() 來算總分

迴圈

Loops

迴圈用途

name_list = ['Erica', 'Amy', 'Chia', 'Sam', 'Bessy',..., 'Yan']
print(name_list[0])
print(name_list[1])
print(name_list[2])
print(name_list[3])
print(name_list[4])
...
print(name_list[50])
for i in name_list:
	print(i)

for 迴圈

可放入 字串、串列 

將裡面的元素一個一個拿出來

for variable in list:
	your code...

縮排

冒號

「for」和「in」是 Python 的關鍵字,

兩者之間可以放置使用者自訂的變數

適用於 已知迴圈圈數

用法

  • 串列 list
the_list = [1, 3, 5, 7, 9]
for i in the_list:
    print(i)

1, 3, 5, 7, 9

  • 字串
the_str = "Erica"
for letter in the_str:
  print(letter)

E, r, i, c, a

for 迴圈 - range

使用 range物件

來控制執行次數

for variable in range():
	your code...

縮排

冒號

變數

用法

  • range( start, stop, 間隔 )
    • start:計數從此開始 (包含該值),預設從 0 開始
    • stop:計數到此結束 (不包含該值)
    • 間隔:每次改變量,預設為 1
for i in range(1, 5):
    print(i)
    
for i in range(1, 5, 1):
    print(i)

1, 2, 3, 4

range() 可以想成重複 (stop - start)

回到 Lab - 3

讓使用者輸入5個分數,

用串列存放分數,

然後計算串列中元素的總和並輸出總分。

#input
請輸入成績 1 :
請輸入成績 2 :
請輸入成績 3 :
請輸入成績 4 :
請輸入成績 5 :
#output
總分:

偷吃步:可使用內建函式 sum() 來算總分

grades = []

建立串列:

print("總分為",sum(grades))
for i in range(1,6):
    score = int(input("第{}個分數:".format(i)))
    grades.append(score)

使用 for 迴圈:

輸出:

!輪到你寫了!

不要偷偷翻前面呦

加油你可以的不要放棄

這裡就是 Lab - 3 的題目

讓使用者輸入5個分數,

用串列存放分數,

然後計算串列中元素的總和並輸出總分。

#input
請輸入成績 1 :
請輸入成績 2 :
請輸入成績 3 :
請輸入成績 4 :
請輸入成績 5 :
#output
總分:

偷吃步:可使用內建函式 sum() 來算總分

grades = []

for i in range(1,6):
    score = int(input("第{}個分數:".format(i)))
    grades.append(score)

print("總分為",sum(grades))

Lab - 3 完整程式碼:

參考資料

Python 入門教學(土豆):

https://hackmd.io/GcikZaGORSqp4Xn-qHkhxg

Python(王柏凱):

https://slides.com/adkevin3307/python-3#/

Python 入門(姚韋辰):

https://www.slideshare.net/AndyYao6/python-80307606

以上是幫助我很多的筆記和 Slides 們,

感謝他們拯救了我 ouo

參考資料

Victor’s Python中文教程(Victor Lin):

http://ez2learn.com/index.html

Python 入門(ccClub):

https://medium.com/ccclub/tagged/python-%E5%85%A5%E9%96%80

Python 入門 (django girls):

https://djangogirlstaipei.herokuapp.com/tutorials/python/?os=windows

這些參考資料也是你學習 Python 的好地方,

這頁比較偏教程,有興趣可以看看~

python basic

By oneone

python basic

  • 136