練習跟解題:http://163.30.43.15
上機考:考試當天公佈網址
註冊帳號:帳號輸入學號, 暱稱輸入班級座號姓名,Email填入學校信箱
加入課程:老師提供課程代碼
相關訊息用Google Classroom通知
程式作業在zerojudge撰寫
練習程式使用Python IDLE 或 Python線上編譯器
新增檔案
執行程式
觀看結果
print跟input的教學影片
輸出函數print跟輸入函數input,python沒有文字輸入盒跟標籤,所以要使用print顯示資料,input取得資料
註解#,被註解的程式不會被執行
左邊=右邊,右邊的資料會放到左邊裡
本次重點:print、print不換行、註解#、Input、=
示範1:螢幕顯示Hello World
示範2:輸入姓名,螢幕顯示Hello 姓名
課程作業:a007、a012、a033、a013
#顯示文字後會自動換行,文字內容要用雙引號包起來
print("Hello World")
#顯示文字後不會自動換行
print("Hello World", end="")
#使用逗號,將好幾筆資料再放同一行
print("yo", "man", "what's up")
#使用+號,把所有文字連接在一起
print("yo"+"man"+"what's up")
#手動輸入的資料會存進name變數裡
name = input()
#Hello字串跟變數之間用逗號隔開
print("Hello ", name)
#使用逗號,好幾筆資料再放同一行+變數
print("Hello ", name, "how r u")
#使用+號,把所有文字跟變數連接在一起
print("yo"+name+"what's up")
name = input()
print("Hello,",name, ", how r u")
#結果為「Hello, 姓名 , how r u」,姓名跟逗號之間會有空白
print("Hello, {}, how r u".format(name))
#結果為「Hello, 姓名, how r u」,姓名跟逗號之間沒有空白
b=3.12345
print("{:.0f}".format(b)) #不顯示小數位
print("{:.3f}".format(b)) #顯示到小數點第三位
程式中的任何資料都需存放在箱子裡,需要運算時再將資料取出進行運算
變數與算術運算的教學影片
算術運算符號:
1. ()括號
2. **(次方)
3. -(負號)
4. *(乘) /(除) %(取餘數) //(取商數)
5. +(加) -(減)
本次重點:
數字相加與字串相加的不同
int(將字串轉換成數字、無條件捨去、把小數變不見)
運算符號執行的優先順序
示範:兩個數字相加、兩數的除法三兄弟、BMI
課堂作業:在zerojudge平台完成a014 a046 a048 a049 a124,今天截止
# 準備四個變數,並給予初始值
num = 100
str = "100"
bool = True
decimal = 3.1419
# 顯示變數的內容
print(num) #顯示num變數內容(正確寫法)
print("num") #顯示num這三個文字(錯誤寫法)
# 一次顯示四個變數的內容
print(num,str,bool,decimal)
#準備x變數,設定值為1
x = 1
print(x)
#修改x變數,並顯示其結果
x = 2
print(x)
#累加數字至x變數裡
x = x+1
print(x)
# 輸入兩筆資料,分別放入x,y
x = input()
y = input()
# 顯示x,y的資料(此時為字串格式)
print("x", x)
print("y", x)
# 輸入x,y的資料
x = input()
y = input()
# 字串相加
r=x+y
print(r)
# 數字相加,使用int(),將字串轉換成數字
r = int(x) + int(y)
print(r)
str=input() #輸入15 20
print(str) #確認str的內容,是否有用空格隔開
list1=str.split() #使用空格分割資料,分割後的資料放入清單(倉庫)裡
print(list1[0]) #確認箱子內容是否為15
print(list1[1]) #確認箱子內容是否為20
--
bmi = weight / height**2
print("BMI:", bmi) #不確定bmi有沒有算錯,印出來看看
#沒有算錯的話,接著便可使用條件判斷,判斷是否過重、標準或過輕
模仿APCS檢定考試方式
沒有網路,無法使用線上編輯器
只會告知是否答對,沒有提示
可使用電腦內的Python IDLE,可用來測試自己的程式
禁止任何作弊行為,如:交談、小抄
會提供教學網站的截圖
如要學會寫程式,請務必練習解題,而不是死背程式碼
if教學影片,搭配猜數字例子
#產生隨機數字程式碼
import random
number = random.randint(1,2)
print("隨機數字是", number)
比較運算子:其結果為布林值(True成立, False不成立)
== 等於 != 不等於
>大於 >=大於等於
<小於 <=小於等於
邏輯運算子:and or not
示範:
成績評語
過濾成績資料是否都為數字,是的話才給評語
判斷幾個科目不及格
本次重點:比較運算、邏輯運算、何時會用到 :、縮排
課堂作業:
a024 a031 a061 a055(再新增題目),在zerojudge平台完成,今天截止
# 取得成績資料,資料型態為字串
grade = input()
# 使用if判斷,注意要使用「:」以及縮排
if int(grade) >= 60:
print("恭喜及格")
# 取得成績資料,資料型態為字串
grade = input()
# 使用if判斷,注意要使用「:」以及縮排
if int(grade) >= 60:
print("恭喜及格")
else:
print("重補修見囉")
# 取得成績資料且同時使用int轉換
grade = int(input())
if grade >= 80:
print("考得不錯")
elif grade >= 60:
print("恭喜及格")
else:
print("重補修見囉")
grade = int(input())
# 下列為巢狀判斷,if裡面還有一層if
if grade<=100 and grade>=0:
if grade>=60:
print("恭喜及格")
else:
print("重補修見囉")
else:
print("範圍錯誤")
grade = input()
# 條件裡有兩個條件
if int(grade) >= 80 and int(grade) <=100:
print("超強der")
elif 80 > int(grade) >= 60:
print("美賣喔")
else:
print("重補修見囉")
grade = input()
# 下列為巢狀判斷,if裡面還有一層if
if grade.isnumeric(): #grade此時是文字
if int(grade)>=60:
print("恭喜及格")
else:
print("重補修見囉")
else:
print("請輸入數字")
g1 = int(input())
g2 = int(input())
n = 0
if g1<60:
n=n+1
if g2<60:
n=n+1
print("不及格科目數量",n)
for跟while的教學影片
搭配範例:2的5次方、5階層、畫星星
示範:
使用For(計數迴圈)及While(條件迴圈)設計2的5次方、5階層
課堂作業:a124 累加數字 a121. 等差級數 a086. 加總7的倍數 a106 反向印出 a004: 經濟大恐慌 (while題目?)
本次重點:for、while、range()、搞懂for跟while的差別、何時會用到「 : 」跟縮排
for i in range(5):
print(i)
for j in range(1,5):
print(j)
for k in range(1,5,2):
print(k)
2的5次方代表 2*2*2*2*2
總共乘五個2,轉換成程式執行的邏輯
執行了五次乘法
每次乘法都是乘2
程式概念如下
Result = 1
Result = Result * 2
Result = Result * 2
Result = Result * 2
Result = Result * 2
Result = Result * 2
將上述程式轉換成重複執行的概念,使用重複執行的方塊,讓這個方塊可以執行五次,並且每次執行時都是乘2
Result = 1
# range(1,6,1)代表範圍1~5
# 記得使用「:」以及縮排
for i in range(1,6,1):
Result = Result * 2
print(Result)
5階層代表 1*2*3*4*5
總共乘五個數字,轉換成程式執行的邏輯為
執行了五次乘法
每次乘法乘上不同數字,第一次乘1,第二次乘2...以此類推
程式概念如下
Result = 1
Result = Result * 1
Result = Result * 2
Result = Result * 3
Result = Result * 4
Result = Result * 5
將上述程式轉換成重複執行的概念,使用重複執行的方塊,讓這個方塊可以執行五次,並且第一次乘1,第二次乘2...以此類推
Result = 1
# range(1,6,1)代表範圍1~5
# 記得使用「:」以及縮排
for i in range(1,6,1):
Result = Result * i
print(Result)
i=1
j=1
while i<6: #滿足條件則執行迴圈
j=j*2
i=i+1 #藉由改變i的數字,控制迴圈的執行次數
print(j)
i=1
j=1
while i<6: #滿足條件則執行迴圈
j=j*i #第一次乘1,第二次乘2...以此類推
i=i+1
#藉由改變i的數字,除了控制執行次數,也可做階層的乘數
print(j)
for跟while的教學影片
搭配範例:2的5次方、5階層、畫星星
示範:
用星星畫3x5的長方形(巢狀迴圈,print不換行小技巧:end="")
課堂作業: a094 星星直角三角形 a096 星星等腰三角形 99乘法表
本次重點:for、while、range()、搞懂for跟while的差別、何時會用到「 : 」跟縮排
*****
*****
*****
使用程式畫出「3行」且「每行有5顆*」的星星長方形
一次只能畫1顆星星
重複第一個步驟5次,會畫出5顆星星
在重複第二個步驟3次,畫出3行的5顆星星
#第一個步驟
print("*", end="")
#第二個步驟
for j in range(5):
print("*", end="")
#第三個步驟怎麼做?
*
**
***
使用程式畫出「3行」且「每行星星數不同」的星星直角三角形
第一行一顆星星
第二行二顆星星
第三行三顆星星
for j in range(1):
print("*", end="")
print()
for j in range(2):
print("*", end="")
print()
for j in range(3):
print("*", end="")
print()
#如何改寫成巢狀迴圈?
把清單想像成倉庫,倉庫裡可存放許多箱子,每個箱子都會有個編號,方便程式設計師存取箱子。
一般來說,箱子編號從0開始編號。
假設輸入資料1 2 3 4
s=input().split()
n=list(map(int,s))
print(n)
print(max(n))
一維陣列:把箱子擺放成一排
二維陣列:有架子的倉庫,把數排箱子疊起來
示範:
練習部分List的方法
in運算符號:可檢查資料是否在List裡
for迴圈也可用於List,語法為「for item in List:」
延伸閱讀:List的方法
課堂作業:
a122壽山動物園、a107百數的最大值、a125排隊還要排多久、a138前綴和練習
自我挑戰:
排序題目
實作單字翻譯、發票對獎的程式
smart_tiger = ["巧虎", "桃樂比"]
print(smart_tiger)
print(smart_tiger[0])
print(smart_tiger[1])
smart_tiger.append("琪琪")
smart_tiger.insert(1,"琪琪")
smart_tiger.remove("琪琪")
smart_tiger.count("琪琪")
smart_tiger.index("琪琪")
friend = ["多比", "圓圓"]
smart_tiger=smart_tiger+friend
print(smart_tiger)
smart_tiger = [[1, 2, 3], ["巧虎", "桃樂比", "琪琪"]]
#印出陣列內容
print(smart_tiger)
print(smart_tiger[0])
print(smart_tiger[1][2])
smart_tiger = []
smart_tiger = ["巧虎"]
smart_tiger.append("桃樂比")
smart_tiger.insert(1,"琪琪")
smart_tiger.append("多比")
smart_tiger.remove("多比")
smart_tiger.pop()
smart_tiger.count("琪琪")
print(smart_tiger)
print(smart_tiger.index("桃樂比"))
print("妙妙" in smart_tiger)
st = ["2琪琪", "3桃樂比","1巧虎"]
st.sort()
print(st)
#st.sort(reverse = True)
role=st.pop()
print(st)
print(role)
print(st.count("2琪琪"))
st = ["巧虎","琪琪","桃樂比"]
for i in st:
print(i)
st = ["巧虎","琪琪","桃樂比"]
for i in range(len(st)):
print(st[i])
#清單資料必須使用[ ]包起來,且用,隔開
invoice = ["726","620","962","790"]
number = input("輸入你的發票後三碼:")
reward_index = invoice.index(number)
print(reward_index) #印出清單的索引值
english = [] #輸入英文單字
chinese = [] #輸入中文翻譯
select_word = input("請輸入英文單字:") #輸入要查詢的單字
#提示到此結束,後續程式自己寫
字串不可變:無法修改、刪除字串中某一文字
字串運算:+、*、in、not in
字元轉ascii:ord()
去除字串前後的空白或換行:str.strip()
字串切片:字串[開頭:結尾:間隔]
反轉字串:[::-1]
課堂作業:a126、a003、a009、a010
圖片出處:https://jenifers001d.github.io/2019/11/30/Python/learning-Python-day3/
#初始化變數,並且進行文字相加
s1="hello"
print(s1) #hello
s2="world"
s3=s1+s2
print(s3)
#取得部分文字後,存到新變數
s4=s1[0]+s1[4]+s2[0]
s4=s4*2
print(s4)
s1="howhow" #howhow->ho ho
s1[2]=" " #會有錯誤
#提供兩種做法
#1.將文字存至其他變數
s2=s1[0:2]+" "+s1[0:2]
print(s2)
#2.將文字變成list,再進行修改
l=list(s1)
l[2]=" "
l[5]=" "
print(l) #會印出list
#使用迴圈一個字一個字印出來
for i in l:
print(i,end="")
str="Taco cat"
print(str[1]) #a
print(str[1:]) #aco cat
print(str[:-1])#Taco ca
print(str[2:-3])#co
print(str[0::2])#Tc a
print(str[::-1])#tac ocaT
print('He' in 'Hello') #True
print('He' not in 'Hello') #False
print(ord('a')) #97
str=" abc "
print(str.strip()) #abc
print(str.upper()) # ABC
print(str.isupper())#False
使用他人已設計好之功能,直接匯入使用,可大量節省撰寫程式之時間
取得網頁資料:urllib、request_html,如:取得特定網頁資訊,可用於購物比價、取得APCS公告、開放資料平台之資訊(天氣、空氣、公車、發票)
解析JSON資料格式:json,如:取得開放資料平台之資訊,解析資料檔案,將其轉換成Python的清單或字典
人臉辨識:dlib、Face Recognition,如:人臉辨識、追蹤,可用於取得人臉特徵資訊
影像處理:PIL,如:開啟、關閉、修改圖檔
電子郵件:smtplib,如:可透過gmail寄信
網路地圖:folium,如:免費網路地圖、可新增圖標、圓圈、線條
製作遊戲:PyGame,如:製作視窗遊戲,也可取得搖桿控制資訊
公車動態:usrlib + json + folium
PM2.5資訊:usrlib + json
偵測人臉+修圖:dlib + Face Recognition + PIL
PChome價格爬蟲:request + json
APCS公告通知:request_html + smtplib
爬蟲教學:https://clu.gitbook.io/python-web-crawler-note/
癡漢爬蟲:https://clu.gitbook.io/python-web-crawler-note/51-chi-han-pa-87f228-ptt-biao-te-ban-xia-zai-566829
folium教學:https://blog.yeshuanova.com/2017/10/python-visulization-folium/
桃園開放資料:https://data.tycg.gov.tw/opendata/datalist/datasetMeta?oid=b3abedf0-aeae-4523-a804-6e807cbad589
人臉馬賽克:https://kknews.cc/zh-tw/code/g4myaa9.html
換臉:https://kknews.cc/zh-tw/code/8klobpn.html
相關網站
import urllib
from urllib import request
url = "http://www.sssh.tyc.edu.tw/files/40-1001-18-1.php"
response = request.urlopen(url)
content = response.read()
content = content.decode('utf-8')
print(content)
#程式碼來源:CAVEDU教育團隊技術部落格
import urllib, json
from urllib import request
s = 0
k = 0
url = "http://opendata2.epa.gov.tw/AQI.json"
response = request.urlopen(url)
content = response.read()
content = content.decode('utf-8')
data_list = json.loads(content)
c = input("請輸入縣市名稱:")
for i in range(0,81):
if c == data_list[i]["County"]:
print(i," ",c," ",data_list[i]["SiteName"], " " , data_list[i]["PM2.5"])
s = s + int(data_list[i]["PM2.5"])
k=k+1
if k == 0:
print("查無資料")
else:
print (c + "共有" + str(k) + "個測站,平均 PM 2.5 是 " + str(round(s/k)))
114學年度特殊選才錄取:宜蘭大學資訊工程系
學姊的學習歷程分享
高雄醫學大學 醫務管理暨醫療資訊學系
113學年度 個人申請 第一階段篩選
一般組:國英21,國英數需底標以上
APCS組:APCS 2+2,國英12,國英數需底標以上
113學年度
*全校國文均標10級以上,約前45%
*全校國文底標7級分以上,約前87%
學姊第二階段
備審資料:90.3分,面試:93分