INFOR38th 學術 葉倚誠
年次:116
社團:建中資訊
幹位:學術
放課:演算法(STL、基礎圖論)
火鍋加芋頭、咖哩飯要拌
大括號不下放
My IG
INFOR38th IG
n = input("Please enter your score: ")
n = int(n) # 字串轉換為整數
if n >= 60:
print("Pass")
else:
print("Fail")
如果我今天輸入的不是整數?
Value Error
例外處理?
避免因為無法預測的原因導致程式無法完成執行!
| ValueError | 數值錯誤 (參數無效) |
| TypeError | 資料型別錯誤 |
| NameError | 變數名稱無效 |
| IndexError | 索引值範圍無效 |
| ImportError | 模組匯入錯誤 |
| ZeroDivisionError | 除數為0錯誤 |
| KeyboardInterrupt | 使用者中斷程式 |
我們可以使用 try-except-else-finally 語法!
try:
可能發生例外的程式片段
except 例外:
處理指定例外的程式片段
except Exception (as e):
處理其他例外 (不含系統例外) 的程式片段
except:
處理其他例外的程式片段:
else:
若未發生例外時執行的程式片段
finally:
程式結束執行的程式片段
n = input("Please enter your score: ")
try: # 嘗試執行程式片段
n = int(n)
except ValueError: # 捕捉可能發生的例外
print("Please enter a valid integer score.")
else: # 若未發生例外則執行
if n >= 60:
print("Pass")
else:
print("Fail")
finally: # 程式結束執行
print("End of program.")
練習:請撰寫一個程式,使用者輸入兩個整數後輸出前者除以後者的結果
捕捉以下例外!並輸出不同結果表示程式錯誤
1. 除數為0
2. 輸入非整數
3. 其他例外
assert 布林值, 例外定義阿嬤走路的時速 (v) <= 10 (km/hr),否則拋出例外
v = int(input("請輸入阿嬤走路的時速:"))
assert v <= 10, "阿嬤走路的時速不可能超過 10 (公里/小時)"
print(f"阿嬤走路的時速:{v} 公里/小時")
練習:請撰寫一個程式,使用者輸入速度、時間,輸出位移
參考答案
try:
v = int(input())
t = int(input())
assert t >= 0, "時間必為非負數"
s = v * t
print(s)
except Exception as e:
print(f"Error: {e}")import 模組
import 模組 as 名稱
from 模組 import 類別
from 模組 import*| Random | 亂數 |
| Math | 數學函式 |
| Os | 系統管理 |
| Re | 字串處理(正規表達式) |
| Time | 時間操作 |
| Json | Json 資料處理 |
import random
n = random.randint(1, 10) # 指定範圍中隨機選取一個數字
print(n)
n = random.randrange(2, 10, 2) # 指定 range 數組中隨機選取一個數字
print(n)
nums = [1, 2, 3, 4, 5]
print(random.choice(nums)) # 指定串列中隨機選取一個元素
print(random.sample(nums, k=3)) # 指定串列中隨機選取 k 個不重複元素
random.shuffle(nums) # 隨機排序串列元素
for i in nums:
print(i, end=" ")
import math
print(math.sqrt(16)) # 開根號
print(math.factorial(5)) # 階乘
print(math.gcd(48, 18)) # 最大公因數
print(math.lcm(4, 5)) # 最小公倍數
print(math.isqrt(20)) # 整數開根號
print(math.comb(5, 2)) # 組合
print(math.perm(5, 2)) # 排列
print(math.log2(8)) # 對數
print(math.log10(100)) # 常用對數
練習:請撰寫一個程式,使用者輸入整數 n,並輸入 n 個字串,從輸入的字串中隨機選取一個輸出 (提示:使用 random + list)
捕捉 n 不為整數的例外!
參考答案
import random
try:
n = int(input())
elements = []
for i in range(n):
elements.append(input())
print(random.choice(elements))
except ValueError:
print("ValueError")
package/
__init__.py
module1.py
module2.py
package1/
__init__.py
module3.py
from package.package1 import module3
import package.package1.module3 as m3
file_object = open(filename, mode, encoding)常用模式 (mode 參數):'r'、'w'、'a'
分別為:讀取、寫入、附加
file = open("data.txt", "r", encoding="utf-8") # 開啟檔案
content = file.read() # 讀取檔案
print(content)
file.close() # 關閉檔案
with open("data.txt", "r", encoding="utf-8") as f:
content = f.read() # 讀取檔案內容
print(content)
| read() | 讀取檔案 |
| readline() | 逐行讀取檔案 |
| readlines() | 逐行讀取檔案並儲存至串列 |
# 寫入模式
with open("output.txt", "w", encoding="utf-8") as f:
f.write("1\n")
f.write("2\n")
# 附加模式
with open("output.txt", "a", encoding="utf-8") as f:
f.write("Hello\n")
| write() | 讀取檔案 |
| writelines(list) | 逐行寫入,參數傳入串列 |
| print(文字, file) | 使用 print() 寫入檔案 |