講者 : 邱妍瑛
日期: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 入門(姚韋辰):
以上是幫助我很多的筆記和 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
- 133