# 資研 4/12 社課講義
[**提問表單**](https://forms.gle/z4dPC1JPV6uA2q9w7)
---
## 模組 Module & 套件 Package
[**Python函式庫**](https://docs.python.org/zh-tw/3/library/index.html)
### 模組
一個`Python`檔案就類似於一個模組,當一次需要撰寫大量內容或長時間維護時,有時會將部分定義程式碼分檔案撰寫,而在主模組(main)中就可以透過`import`來引入模組。
>別名可以按照自己的習慣去命名,撰寫程式碼時方便輸入
```
import 模組名稱
import 模組名稱 as 別名
from 模組名稱 import 函式
```
### 套件
若一個模組形似一個檔案,則套件就類似於一個資料夾,包含許多模組,在主模組(main)中可以透過`from`來引入套件中的模組。
```
from 套件名稱 import 模組名稱
from 套件名稱 import 模組名稱 as 別名
```
:::warning
**import all 的寫法**
可以一次性引入所有在該套件下的模組
```
from 套件名稱 import *
```
:::
---
## Dates 模組
模組可以自行定義但`Python`也有很多已經撰寫好的模組可以引用,但在一般電腦內的直譯器內模組需另外下載,不過Colab不需要另外下載,需要注意的是在正規測驗、競賽中(如APCS)是無法適用的
### 引入模組
```python=
import datetime
```
### 顯示現在時間
```python=
x = datetime.datetime.now()
print(x)
```
1. 顯示的是**GMT標準時間**也就是英國倫敦格林威治天文臺當下的時間,並非主機所位在地點之當地時間
2. 回傳的資料包含年份 year、月份 month、日期 day、小時 hour、分鐘 minute、秒 second、微秒 microsecond
3. 可以透過`.+需要的資料`來進一步取得時間
>對應的英文在2.
```python=
print(x.year)
```
### 建立時間點
```python=
x = datetime.datetime(2024, 4, 12)
```
回傳:2024-04-12 00\:00\:00
>沒有給定的會預設為0
### 轉換
`datetime`模組常被用在計時或轉換日期使用,這裡用轉換日期詳細說明,
利用`日期.strftime(格式符號)`進行轉換成當地時間
```python=
print(x.strftime('%A'))
```
回傳:Friday
:::spoiler 符號
| 符號 | 意義 | 範例 |
|:----:|:-------------------------------:|:--------------------------:|
| %a | 星期幾的簡稱 | Mon, Tue... |
| %A | 星期幾 | Monday, Tuesday... |
| %w | 星期幾(0->星期日) | 0, 1, 2..., 6 |
| %d | 日期 | 01, 02, 03..., 31 |
| %b | 月份縮寫 | Jan, Feb... |
| %B | 月份 | January, February... |
| %m | 月份 | 01, 02..., 12 |
| %y | 年份(後2位) | 00, 01... |
| %Y | 年份 | 0001, 0002..., 2024... |
| %H | 小時(24小時制) | 00, 01..., 23 |
| %I | 小時(12小時制) | 00, 01..., 12 |
| %M | 分鐘 | 00, 01..., 59 |
| %S | 秒 | 00, 01..., 59 |
| %f | 微秒 | 000000, 000001..., 999999 |
| %U | 周序號(從0開始, 以周日為開始) | 00, 01..., 53 |
| %W | 周序號(從0開始, 以周一為開始) | 00, 01..., 53 |
| %c | 日期+時間 | Tue Apr 16 14\:00\:00 2024 |
| %x | 日期 | 04/16/24 |
| %X | 時間 | 14\:00\:00 |
[**其他符號**](https://docs.python.org/zh-tw/3/library/datetime.html#strftime-and-strptime-behavior)
:::
---
## Math 模組
`Python`本身就有內建的數學函式,`Math`模組算是一個擴充,有更多跟數學相關的函式
```python=
import math
```
### 取最近整數
>類似於[**高斯符號**](https://zh.wikipedia.org/zh-tw/%E5%8F%96%E6%95%B4%E5%87%BD%E6%95%B0) []
```python=
print(math.ceil(13.873096))
print(math.floor(13.873096))
```
1. ceil是取大於該數且最相近之整數
2. floor是取小於該數且最相近之整數
### π
```python=
print(math.pi)
```
[**其他函式**](https://www.w3schools.com/python/module_math.asp)