---
# System prepended metadata

title: 內建函數 Bulit-in Functions

---

# 內建函數 Bulit-in Functions
請參考[官方文件](https://docs.python.org/3/library/functions.html)。
以下我整理幾個常用。
最後更新 2022/9/5。

## 幫幫我
`help()`
遇到不會用的東西就`help`一下：
```python=
help(str)
help(list)
```

## 寫題目常用-輸入
用到的有 `input`、`eval`、`map`、`list`，並配合`str`的函數`split`。
舉例來說，使用者輸入一串用空格隔開的數字，此時因為 Python3 預設 `input` 是字串，因此你想把輸入變成數字，並放入一個串列(list)裡面：
1. 輸入字串
2. 分割字串
3. 逐一變成數字
4. 放入串列

```python=
user_input = input()
user_input = user_input.split(' ')
result = []
for number in user_input:
    result.append(eval(number))
```
我們可以把它簡化為一句話：
```python=
user_input = list(map(eval, input().split(' ')))
```
我們由內往外看，
`input().split(' ')`是把輸入以空格隔開，並且變成list；
`map(函數, 容器)`，是把容器內的每個元素，放進函數裡面，
此時他會變成一個 map 的class；
`list()` 把剛剛的 map 結果變成一個 list。

## 進位換算
`bin`：二進位
`oct`：八進位
`hex`：十六進位

三種函數都是回傳字串，以`0b`、`0o`、`0x`開頭。
```python=
bin(10)
# '0b1010'
oct(10)
# '0o12'
hex(10)
# '0xa'
```

直接打`0b 0o 0x`開頭的，會自動轉成十進位。
當然你也可以用`eval`
```python=
0b1010
# 10
0o12
# 10
0xa
# 10

eval('0b1010')
# 10
```

## ASCII轉換
`chr()`把數字變成字元；
`ord()`把字元變成數字。
```python=
chr(97)
# 'a'
ord('a')
# 97
```

## 數字相關
`int`、`float`、`complex`：變成該型態
`abs(數字)`：絕對值
`min(一堆數字的容器)`：找最小
`max(一堆數字的容器)`：找最大
`sum(一堆數字的容器)`：加總
`round(數字,小數幾位)`：四捨五入
`eval(字串)`：把引號拿掉，變int或fioot


## 排序
`sorted(容器)`：把容器內的東西排序後回傳，不影響原容器。
`list.sort()`：容器內東西排序，原容器改變。
註：如果是字串，字典排序；如果是數字，大小排序。