判斷純量類型的函數
使用 isinstance(x, classinfo) 函數判斷純量類型,其中 x 輸入物件名稱、 classinfo 輸入類型名稱。
# 判斷是否為整數
print(isinstance(87, int)) # output:True
print(isinstance("87", int)) # output:False
# 判斷是否為浮點數
print(isinstance(87.0, float)) # output:True
print(isinstance(87, float)) # output:False
# 判斷是否為文字
print(isinstance("True", str)) # output:True
print(isinstance(True, str)) # output:False
# 判斷是否為布林
print(isinstance(False, bool)) # output:True
print(isinstance("False", bool)) # output:False
# 判斷是否為 None
print(isinstance(None, type(None))) # output:True
print(isinstance("None", type(None))) # output:False
使用 type()函數回傳純量類型 my_int = 87
my_float = 8.7
my_str = "Hello Python"
bool_true = True
bool_false = False
none_type = None
print(type(my_int))
print(type(my_float))
print(type(my_str))
print(type(bool_true))
print(type(bool_false))
print(type(none_type))
# output
## <class 'int'>
## <class 'float'>
## <class 'str'>
## <class 'bool'>
## <class 'bool'>
## <class 'NoneType'>
python 類型轉換
純量轉換
使用與目標轉換類型同名的函數轉換純量類型。
- int():轉換純量為整數類型
- float():轉換純量為浮點數類型
- bool():轉換純量為布林類型,除了 0 以外的數字都是True
- str():轉換純量為文字類型
# 轉換成整數
print(int(8.7))
print(int(True))
print(int(False))
print(int("87"))
# output
8
1
0
87
# 轉換成浮點數
print(float(87))
print(float(True))
print(float(False))
print(float("87"))
# output
87.0
1.0
0.0
87.0
# 轉換成布林
print(bool(0))
print(bool(0.0))
print(bool(1))
print(bool(1.0))
print(bool(8.7))
print(bool(-8.7))
# output
False
False
True
True
True
True
# 轉換成字串
print(str(87))
print(str(87.0))
print(str(True))
print(str(False))
# output
87
87.0
True
False
python 運算符
算數運算符 x=5, y=2
運算符 名稱 範例
+ 加法 x + y = 7
- 減法 x - y = 3
* 乘法 x * y = 10
/ 除法 x / y = 2.5
% 取餘數 x % y = 1
** 指數 x ** y = 25
// 取整除 x // y = 2
+ 與 * 也可用於字串 (string) , + 用於字串相接, * 用於複製字串
a = "a"
b = a + "b" # 字串連接, b 會等於 "ab"
c = a * 3 # 字串重複三倍, c 會等於 "aaa"
賦值運算符 x = 5 = 0101 , 3 = 0011
運算符 名稱 範例 解答
= 賦值 x = 5 x = 5
+= 加法賦值 x += 3 —> x = x + 3 x = 8
-= 減法賦值 x -= 3 —> x = x - 3 x = 2
*= 乘法賦值 x * = 3 —> x = x * 3 x = 15
/= 除法賦值 x /= 3 —> x = x / 3 x = 1.666…
%= 取餘賦值 x %= 3 —> x = x % 3 x = 2
//= 取整除賦值 x //= 3 —> x = x // 3 x = 1
**= 指數賦值 x **= 3 —> x = x ** 3 x = 125
&= AND 賦值 x &= 3 —> x = x & 3 x = 1 = 0001
|= OR 賦值 x |= 3 —> x = x | 3 x = 7 = 0111
^= XOR 賦值 x ^= 3 —> x = x ^ 3 x = 6 = 0110
»= 右移賦值 x »= 3 —> x = x » 3 x = 0 = 0000 = 5 * 1/2**3 = 5/8
«= 左移賦值 x «= 3 —> x = x « 3 x = 40 = 0010 1000 = 5 * 2**3 = 5 * 8
比較運算符 運算符 名稱 範例
== 相等 x == y
!= 不相等 x != y
> 大於 x > y
< 小於 x < y
>= 大於等於 x >= y
<= 小於等於 x <= y
邏輯(布林)運算符 x = 4
運算符 名稱 範例
and 與運算 - 兩者為 True,返回 True x < 5 and x < 10 —> True
or 或運算 - 其中一者為 True,返回 True x < 5 or x < 4 —> True
not 非運算 - 兩者為 Faluse,返回 True not(x < 5 and x < 10) —> False
身分運算符 運算符 描述 範例
is 如果兩個變量是同一個對象(具有相同的記憶體位置),則返回 True x is y
is not 如果兩個變量不是同一個對象(不是指向相同的記憶體位置),則返回 True x is not y
成員運算符 運算符 描述 範例
in 當 in 前面的變數在後面的序列中時,結果為 True x in y
not in 當 in 前面的變數不在後面的序列中時,結果為 True x not in y
位元運算符 a = 5
運算符 名稱 範例
& AND(位與操作符) - 當兩側數字在該位上都是 1 的時候,結果該位也為 1,否則為 0 a & 2 = 0 = 0000
| OR(位或操作符) - 當兩側數字在該位上只要有一個是 1 的時候,結果該位為 1,否則為 0 a | 2 = 7 = 0111
^ XOR(位異或操作符) - 當兩側數字對應位二進位制相異時(其中一位為 1,另一位為 0),結果為 1 a ^ 2 = 7 =
~ NOT(位取反操作符) - 對運算元進行按位取反操作,1 變成 0,0 變成 1 ~a = -6 = -(0101 + 1) = -(0110)
« 左移操作符 - 將 « 左側的數字左移若干位,右側補 0,左側高位數捨棄 a « 2 = 20 = 0001 0100
» 右移操作符 - 將 » 左側的數字右移若干位,左側補齊 0 a » 2 = 1 = 0001
python 條件語句與迴圈控制
- 條件語句:當程式流程在進行的過程,需要根據某個條件來決定是否執行接下來的動作時使用。
- 迴圈控制:處理資料時,若是想要重複執行某些相同的步驟時,就會使用到迴圈。
條件語句
if
若判斷條件成立,則執行底下縮排的敘述內容;反之,則不動作。
if condition:
statement
if-else
若condition 為真 (True),則執行 statement1;反之,則執行statement2。
if condition:
statement1 for True condition
else:
statement2 for False condition
if-elif-else
elif 的個數是沒有限制的,可以依照自己的需求而定。
if condition1:
statement1 for True Condition1
elif condition2 :
statement2 for True Condition2
elif condition3 :
statement3 for True Condition3
else:
statements for Each Condition False
巢狀if ID = input()
year = int(ID[1:3])
if year < 4:
print("Graduated")
elif year <= 7 and year >= 4:
if year == 7:
print("Freshman")
elif year == 6:
print("Sophomore")
elif year == 5:
print("Junior")
elif year == 4:
print("Senior")
else:
print("Not Registered Yet")
迴圈控制
單層 for-loop - 適用在「已知迴圈數」的問題
- for和in中間放自訂變數,in後面可接一個序列(ex. list)
- 迴圈會依序從序列裡取得元素,將元素指派給前面的自訂變數,並執行迴圈裡的內容
- 通常會跟range()做一個搭配使用
range(起始值,終止值,遞增(減)值)
for x in sequence:
# 放要執行的東西
# 迴圈搭配list依序印出內容
sequences = [0, 1,'jason',2.5]
for i in sequences:
print(i)
# output
0
1
jason
2.5
# 迴圈搭配range()使用
for i in range(3):
print(i, end=" ")
print() # 換行
for i in range(10,2,-2):
print(i, end=" ")
# output
0 1 2
10 8 6 4
巢狀 for-loop - 迴圈裡面又包覆著其他的迴圈。
- 處理的問題具有重複執行某段敘述的特性,而且這些敘述受到兩個 (或兩個以上) 的變數來分別控制其變化
# 九九乘法表
for i in range(1, 10):
for j in range(1, 10):
if j == 9:
print("\t", i*j) # j == 9時,換行
else:
print("\t", i*j, end = '') # j < 9時,不換行
while loops
適用在「無法預知迴圈數」的問題
while test_expression:
Body of while
# 產生1到10的序列
i = 1
while i <= 10:
print(i, end=" ")
i = i + 1
break 和 continue(迴圈不規則結束) - break:中斷迴圈的執行並跳脫迴圈結構,繼續執行迴圈外的敘述。
- continue:不中斷迴圈;只跳過迴圈內 continue 後面的剩餘敘述,接著繼續執行下一次的迴圈運作。
- 規則的結束方式是當迴圈的判斷條件不再符合時,迴圈自然結束;而不規則的迴圈結束則是在迴圈自然結束前,我們已經得到想要的運算結果,利用強制中斷的方式來結束迴圈。
for i in "Hey Alan":
if i == "l":
break
print(i, end=" ")
print()
for i in "Hey Alan":
if i == "l":
continue
print(i, end=" ")
# output
H e y A
H e y A a n
python保留字
定義:語言本身的編譯器中已經定義過的單詞,具有特定含義和用途,使用者不能再將這些單詞作為變數名或函數名、類名使用。
保留字 說明
and 邏輯與操作,用於表示式運算
as 用於轉換資料型別
assert 用於判斷變數或條件表示式的結果
async 用於啟用非同步操作
await 用於非同步操作中等待協程返回
break 中斷迴圈語句的執行
class 定義類
continue 繼續執行下一次迴圈
def 定義函數或方法
del 刪除變數或序列的值
elif 條件語句,與 if、else 結合使用
else 條件語句,與 if、else 結合使用;也可用於異常或迴圈語句
except 包含捕獲異常後的處理程式碼塊,與 try、finally 結合使用
False 含義為假的邏輯值
finally 包含捕獲異常後的始終要呼叫的程式碼塊,與 try、except 結合使用
for 迴圈語句
from 用於匯入模組,與 import 結合使用
global 用於在函數或其他區域性作用域中使用全域性變數
if 條件語句,與 elif、else 結合使用
import 匯入模組,與 from 結合使用
in 判斷變數是否在序列中
is 判斷變數是否為某個類的範例
lambda 定義匿名函數
None 表示一個空物件或是一個特殊的空值
nonlocal 用於在函數或其他作用域中使用外層(非全域性)變數
not 邏輯非操作,用於表示式運算
or 邏輯或操作,用於表示式運算
pass 空的類、方法或函數的預留位置
raise 用於丟擲異常
return 從函數返回計算結果
True 含義為真的邏輯值
try 測試執行可能出現異常的程式碼,與 except, finally 結合使用
while 迴圈語句
with 簡化 Python 的語句
yield 從函數依次返回值