---
# System prepended metadata

title: 資研 4/12 社課講義
tags: [社課講義, 資研]

---

# 資研 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)