Puthon 小社複習
講師:田鼠
輸出
print("Hello World!")
輸出
特殊字元(反斜線)
特殊字元 | 意義 |
---|---|
\\ | 反斜線 |
\n | 換行 |
\t | Tab鍵 |
\' | 單引號 |
\" | 雙引號 |
輸出
一次輸出多項目
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))
輸入
要怎麼讀取在同一行的多個值(?)
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 |
運算子的優先順序!!
運算子 | 意義 |
---|---|
() | 括號 |
** | 次方 |
*,/,//,% | 乘除模 |
+,- | 加減 |
>,<,>=,<=,==,!= | 比較 |
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 = "ckefgisc喔是喔真的假的fwefbbuwiub哦是嘛"*3
print(a.find("是"), a.count("是"))#9 6
但.count()數過的東西不會重複數到
像下面這ㄍ
a = "abcabcabcabca"
print(a.count("abca"))#2
for迴圈: 掃描字串
for 變數 in 字串名:
....要重複執行的程式
a = "ckefgisc27th";
for i in a:
print(i)
將字串的每一個字元跑過一次!
格式化字串
在字串中預計要輸出變數的地方放著大括號{},然後後面再接一個.format(),括號裡放變數!
a = eval(input())
b = eval(input())
print("{}+{}={}".format(a,b,a+b))
Tuple(元組)
特性
- 無法新增、修改、刪除
- 但執行速度較快
宣告
a = ()
#宣告空的tuple
b = 1, 2, 3
#宣告一個有123的tuple,括弧可省略
c = 1,
#宣告一個有1的tuple,後面用逗號表示為tuple
d = (1, )
e = (1)
#無逗號判定成int
print(type(a), type(b), type(c), type(d), type(e), sep = "\n")
'''
<class 'tuple'>
<class 'tuple'>
<class 'tuple'>
<class 'tuple'>
<class 'int'>
'''
使用
a = (1, "a", False)
print(a[0])#tuple a的第零項
print(a[:1:])tuple a從零到一,不包含一
print(a.index(False))輸出False是第幾項
'''
1
(1,)
2
'''
Set(集合)
特性
- 可修改
- 儲存的變數不重複
- 無序(但會自動由小排到大)
宣告
a = set()#空集合
print(type(a))#<class 'set'>
b = {1, 3, 3, 2, 1}
#非空集合也可用b = set([1, 3, 3, 2, 1])
print(type(b))#<class 'set'>
print(b)#{1, 2, 3}
無序性
a = {0, 1}
b = set([1, 0])
print(a == b)
判斷是否存在set中
a = {12, True, "火金姑閃爍爍"}
print("火金姑閃爍爍" in a)
print("在阮細漢的暝" in a)
判斷是否存在set中
a = {12, True, "火金姑閃爍爍"}
print("火金姑閃爍爍" in a)#True
print("在阮細漢的暝" in a)#False
移入移出set中的值
a = {12, True, "火金姑閃爍爍"}
print("火金姑閃爍爍" in a)#True
print("在阮細漢的暝" in a)#False
a.add("在阮細漢的暝")
a.discard("火金姑閃爍爍")
print("火金姑閃爍爍" in a)#False
print("在阮細漢的暝" in a)#True
Dictionary(字典)
特性
- 可以讓特定字彙對應到特定的值
- 可以應用在身分證字號、區碼......
宣告及取用
a = {}#空字典
print(type(a))#<class 'dict'>
b = {"A" : "台北市", "F" : "新北市"}
print(b["A"])#台北市
c = {100 : "中正區", 222 : "深坑區"}
print(c[222])#深坑區
判斷key值是否在dict中
a = {"A" : "台北市", "F" : "新北市"}
if "A" in a:
print(1)
else:
print(0)
#1
新增及刪除字典值
a = {"A" : "台北市", "F" : "新北市"}
a["M"] = "南投縣"
print(a)
#{'A': '台北市', 'F': '新北市', 'M': '南投縣'}
del a["F"]
print(a)
#{'A': '台北市', 'M': '南投縣'}
函式(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#想要的東西
}
import模組
如果找不到可用的內建函式,
可以考慮先找找看有沒有別人寫好的,
然後把它匯入
import方式
以下有四種示範
import random#把整個模組搬進來,使用時前面還是要加random.
from random import randint#從random模組裡搬出randint,使用時不須加random.
import random as r#跟第一種差不多,但前面是加r.
from random import *#也是把整個搬進來,但不加random.,所以有可能造成名稱衝突,通常不使用
Python 複習
By ivanlo
Python 複習
- 79