2022建北電資聯合暑訓
Python課程
講師:立葉、田鼠
課程內容
目錄(欸這是簡報欸 為什麼要目錄
一、python介紹 | 七、條件敘述 | |
二、python開發環境 | 八、迴圈敘述 | |
三、輸出基本介紹 | 九、串列 | |
四、變數&輸入基本介紹 | 十、字串 | |
五、運算子 | 十一、函式 | |
六、註解 | 十二、模組 |
Python介紹
特點
好寫易懂
泛用度高
資源豐富
但由於是直譯式語言
跑起來較慢
Python開發環境
Jupyter Notebook
- 於瀏覽器中開啟
- 可使用Markdown語法
- 常用於數據分析
JupyterLab
與JupyterLab非常相似
但可以在同一個畫面中多工處理
Visual Studio Code
-
豐富的擴充套件
- 多自動偵錯功能
- 美觀的介面設計
Colab
- 免下載
- 常用於數據分析、機器學習
- 可以付費解鎖更高級的版本
- 線上開發環境
- 要貼上測資?Ctrl + Shift + V
- 是我們待會會用到的! 跟C++一樣😌
輸出
要怎麼在python裡面輸出東西?
print("Hello World!")
print(<要輸出的東西>)
要怎麼在python裡面輸出東西?
print()
不放任何東西,行不行得通?
當然可以!
輸出
特殊字元(反斜線)
特殊字元 | 意義 |
---|---|
\\ | 反斜線 |
\n | 換行 |
\t | Tab鍵 |
\' | 單引號 |
\" | 雙引號 |
輸出
特殊字元(反斜線)
小測驗🥳
試著用一行程式碼印出以下的文字吧
A: \\Hand in the homework tomorrow!//
B: \\no problem!//
輸出
一次輸出多項目
print(項目1,項目2,項目3,...)
項目間有空格,輸出完有換行?
print(項目1,項目2,項目3,...,sep=空隔間要輸出的東西,
end=輸出完後要額外輸出的東西)
sep預設是空格,end預設是'\n'
例題演練🥳
變數 & 輸入基本介紹
python中主要的變數型態
英文名稱 | 中文名稱 |
---|---|
int | 整數 |
float | 小數(浮點數) |
str | 字串 |
bool | 布林值 |
python宣告變數
變數名稱 = 變數值
變數型態?
python會自己判斷!
連續賦值 & 多重賦值
python會自己判斷!
變數1 = 變數2 = 變數3 = ... = 變數值
變數1,變數2,變數3,... = 變數值1,變數值2,變數值3,...
變數命名限制
變數只能由字母、數字、底線組成
不得以數字開頭
不得為保留字
python保留字
and | as | assert | async | await |
break | class | continue | def | del |
elif | else | except | False | finally |
for | from | global | if | import |
in | is | lambda | None | nonlocal |
not | or | pass | raise | return |
True | try | while | with | yield |
輸入示例
a = input("請輸入一串文字: ")
print("你剛剛輸入的文字是:", a)
'''
請輸入一串文字: ckefgisc
你剛剛輸入的文字是: ckefgisc
'''
變數 = input(<提示字>)
輸入
輸入預設會是字串
a = input()
print(type(a))
如何轉換型態?
輸入
用一個型態()來包住input()的部分!
例如:要轉成數字,就這樣寫
a = int(input())
print(type(a))
輸入
又如果只確定輸入的是一個數字,但不確定他會是整數還是小數,怎麼辦?
eval()! 他會幫你轉成數字,同時會幫你判斷是整數還是小數
a = eval(input())
b = eval(input())
print(type(a),type(b))
輸入
要怎麼讀取在同一行的多個值(?)
.split()!
把這個函式接在一個字串後面,他就會把字串以一個指定的符號做分隔,並把切開來的每個值存到串列上ㄟ!
括號裡面放要指定的分隔字,如果沒有則以空格為預設
輸入
要怎麼讀取在同一行的多個值(?)
用了這個之後,我又不會轉型態了🤤
print(map(int,input().split())) !
map(func, obj)😌
運算子
算數運算子
運算子 | 意義 | 舉例 | 結果 |
---|---|---|---|
+ | 加 | 5+2 | 7 |
- | 減 | 5-2 | 3 |
* | 乘 | 5*2 | 10 |
** | 次方 | 5**2 | 25 |
/ | 浮點除法 | 5/2 | 2.5 |
// | 整數除法 | 5//2 | 2 |
% | 模(取餘數) | 5%2 | 1 |
複合指定運算子
複合指定運算子 | 舉例 | 改寫 |
---|---|---|
+= | a=a+2 | a+=2 |
-= | a=a-2 | a-=2 |
* | a=a*2 | a*=2 |
** | a=a**2 | a**2 |
/ | a=a/2 | a/=2 |
// | a=a//2 | a//=2 |
% | a=a%2 | a%2 |
比較運算子
運算子 | 舉例 | 意義 |
---|---|---|
< | 5<2 | 5是否小於2 |
> | 5>2 | 5是否大於2 |
<= | 5<=2 | 5是否小於等於2 |
>= | 5>=2 | 5是否小於等於2 |
== | 5==2 | 5是否等於2 |
!= | 5!=2 | 5是否不等於2 |
回傳一個布林值(True/False)!
邏輯運算子
運算子 | 意義 |
---|---|
and | 且 |
or | 或 |
not | 否 |
回傳一個布林值(True/False)!
邏輯運算子
A | B | A and B | A or B |
---|---|---|---|
True | True | True | True |
True | False | False | True |
False | True | False | True |
False | False | False | False |
邏輯運算子
小測驗🥳
True and (False or not(True or False))的結果是什麼?
運算子的優先順序!!
運算子 | 意義 |
---|---|
() | 括號 |
** | 次方 |
*,/,//,% | 乘除模 |
+,- | 加減 |
>,<,>=,<=,==,!= | 比較 |
not | 否 |
and | 和 |
or | 或 |
先
後
例題演練🥳
註解
什麼是註解?
給寫程式的人看的小提示!
電腦會忽略註解文字的部分
python的註解
單行註解:#
多行註解:上下各三個單引號(')或雙引號(")
python的註解
a = 5'''這邊是註解
這是多行註解,所以還是註解
'''這邊就不是了
a = 1 #後面的文字才會變成註解la
這一行又沒有井字號,根本不會變成註解
#但是這一行有
條件敘述if
if
if 判斷式:
....要執行的程式
age = int(input("請輸入自己的年齡: "))
if age<=14:
print("你是幼年人口!")
非常重要ㄉ縮排
在python,縮排是非常重要的東西!
if 判斷式:
#我在這個if裡面,因為我有縮排
#我不在這個if裡面,因為我沒有縮排
這會關係到該行程式有沒有在該判斷式下面!
也要特別注意,雖然沒有特別規定縮排要空幾格,但整個程式的縮排空格數必須一樣。
if...else...
if 判斷式1:
....要執行的程式
else:
....要執行的程式
age = int(input("請輸入自己的年齡: "))
if age<=14:
print("你是幼年人口!")
else:
print("你不是幼年人口!")
if...elif...else
if 判斷式1:
....要執行的程式
elif 判斷式2:
....要執行的程式
elif 判斷式3:
....要執行的程式
---
else:
....要執行的程式
if...elif...else
age = int(input("請輸入自己的年齡: "))
if age<=14:
print("你是幼年人口!")
elif age>=65:
print("你是老年人口!")
else:
print("你是壯年人口!")
例題演練🥳
迴圈敘述(for/while)
while迴圈
while 判斷式:
....要重複執行的程式
total = n = 0
while n<10:
n += 1
total += n
print(total)
每次要進去迴圈前,都會判斷一次n<10這個條件!
我的輸出爆炸了
while True:
print("INFINITE POWER")
按下Ctrl + C,可以終止這個惡夢。
或者...防患未然(?
break
while True:
a = input()
if a==0 :
break
break可以讓你直接跳出整個迴圈!
continue
total = i = 0
while i<10:
i += 1
if i==5:
continue
total += i
print(total)
continue則是讓你直接跳過迴圈裡面剩下的程式,並回到迴圈的開頭!
補充:利用while讓輸入變簡單
要怎麼讀取EOF😢
為了抵抗十惡不赦,不把測資分開的初體者而設計的程式(沒😌
while True:
try:
#要執行的程式
except EOFError:
break
其中,try, except是我們沒教的東西(等之後再說囉)
輸入終止:Ctrl + D
for迴圈: range(起始點,終止點,公差(?))
for 變數 in range(起始點,終止點,公差(?)):
....要重複執行的程式
for i in range(0,5,1):
print("嗨",end='')
當 \(0\leq i < 5\) 時,會進入迴圈
for迴圈: range(次數)
for 變數 in range(次數):
....要重複執行的程式
for i in range(7):
print(i)
將字串的每一個字元跑過一次!
for i in range(5):
print("嗨",end='')
老子直接給你指定次數!
三倍例題一次滿足🥳
List(串列)
特性
- 可以儲存多個且多種的資料
- 從[0]開始為第一項、[1]為第二項......
- 可以擷取特定部分,且有許多相關函式可利用
宣告串列
a = []#空串列
b = [1, "11", 1.11, '1111']#非空串列
宣告空串列時,[ ]內留白即可
新增元素
使用.append(x)將x新增近該串列的尾端
a = [123, "abc", 1.35]
a.append(456)#將456加進a串列
print(a) #[123, 'abc', 1.35, '456']
移除指定位置的值
.pop(x)可以移除串列[x]的值
(若x未填入任何值,則刪除串列末項)
a = [123, "abc", 1.35]
a.pop(1)#將"abc"移出a串列
print(a) #[123, 1.35]
移除串列中指定的值
用.remove(x)移除串列中的x
(若不只一項,則移除最前項)
a = [123, "abc", 1.35]
a.remove(1.35)#將1.35移出a串列
print(a) #[123, 'abc']
擷取串列特定部分
串列後加上[ r : l : i ]
可以在串列內從r到l-1每i項取一次
a = [1, 2, "ccc", 7, 'hw', "ccc"]
print(a[1:5:2]) #[2, 7]
print(a[::2]) #[1, 'ccc', 'hw']
print(a[:3:]) #[1, 2, 'ccc']
輸入串列
輸入資料通常會在同一行,
不同行的時候可以用另一個方式
a = [int(s) for s in input().split()]
print(a)#同行
a = []
for i in range(int(input())):#先輸入串列大小
a.append(input())
print(a)#不同行
for迴圈: 掃描list
for 變數 in 串列名:
....要重複執行的程式
listA = ["python","C++","HTML","BBS","bbs art","硬體","密碼學"]
for i in listA:
print(i)
將串列的每一個元素跑過一次!
非常好例題
String(字串)
特性
- 顧名思義,就是把一堆字給串起來
- 也有很多相關的函式可以搭配使用
- 可以拿來玩很多有趣的東西(有點廢話
輸出
可以輸出一個變數或一個字串
如果是字串,記得要在兩旁加引號
s = 1
print(s)
print("s")
字串運算
就是用乘號弄出一堆字串
print("c8763"*5)#c8763c8763c8763c8763c8763
像List一樣可以分段
a = "cr8t7n6d3d"*3
print(a[10:19:2])#c8763
威力在哪裡
用.find()及.count()函式找到字串裡的特定字母或計算出現次數
a = "就一些充字數的威利對就充威利字數"*3
print(a.find("威利"), a.count("威利"))#7 6
但.count()數過的東西不會重複數到
像下面這ㄍ
a = "abcabcabcabca"
print(a.count("abca"))#2
for迴圈: 掃描字串
for 變數 in 字串名:
....要重複執行的程式
a = "ckefgisc27th";
for i in a:
print(i)
將字串的每一個字元跑過一次!
補充輸出
一次輸出多項目
如果是用之前的字串運算來輸出,會不會有空格?
不會!因為他會被視為一個項目。
print("2022" + "建北電資" + "聯合暑訓")
#2022建北電資聯合暑訓
格式化字串
在字串中預計要輸出變數的地方放著大括號{},然後後面再接一個.format(),括號裡放變數!
a = eval(input())
b = eval(input())
print("{}+{}={}".format(a,b,a+b))
例題演練🥳
函式(function)
Python內建函式
abs(x)
max(x,y,z…)
min(x,y,z…)
變數型別(x)
len(x)
reverse(x)
得到變數X的絕對值。
會得出多個數字或是list等的最大值。
會得出多個數字或是list等的最小值。
將一個變數的變數型別轉換
得到變數x的長度
將x反轉
但也不是每個函式都有內建的可以用
所以
這時候就需要自己來寫ㄌ
函式的格式
def 函式名(x){
#要做的事
return y#想要的東西
}
來去zerojudge上面寫題目了la
先寫下面這幾題ㄅ
在分類題庫上可以看到其他題目,挑戰看看ㄅ😆
import模組
如果找不到可用的內建函式,
可以考慮先找找看有沒有別人寫好的,
然後把它匯入
import方式
以下有四種示範
import random#把整個模組搬進來,使用時前面還是要加random.
from random import randint#從random模組裡搬出randint,使用時不須加random.
import random as r#跟第一種差不多,但前面是加r.
from random import *#也是把整個搬進來,但不加random.,所以有可能造成名稱衝突,通常不使用
今天的課就到這啦
大家可以去吃飯了
deck
By ck1100851羅威廷
deck
- 276