# Python常用function與method
## 數字(Number)
### Function
- floor(num)
- 無條件捨去小數點位
```python
>>> import math
>>> my_num = 3.14
>>> print(math.floor(my_num))
3
```
## 字串(String)
### Method
- str.split(str="", num=string.count(str))
- 將字串以指定的字串做分隔,默認以所有空字符做分隔,參數num可以指定要分隔幾次,若沒有指定則全部做分隔
```python
>>> my_str = "I have a dream"
>>> print(my_str.split(" "))
['I', 'have', 'a', 'dream']
```
- str.join(seq)
- 將序列以指定的字符串起來形成一個新的字串
```python
>>> my_list = ['I', 'have', 'a', 'dream']
>>> print(" ".join(my_list))
I have a dream
```
- str.lower()
- 將字串大寫的字符轉成小寫
```python
>>> my_str = "I Have A Dream"
>>> print(my_str.lower())
i have a dream
```
- str.upper()
- 將字串小寫的字符轉成大寫
```python
>>> my_str = "I Have A Dream"
>>> print(my_str.upper())
I HAVE A DREAM
```
- str.strip([chars])
- 移除在字串頭尾出現的指定字符,默認為空白
```python
>>> my_str = " I have a dream "
>>> print(my_str.strip())
i have a dream
```
- str.isdigit()
- 判別字串是否為數字所有組成
```python
>>> my_str = "123"
>>> print(my_str.isdigit())
True
```
- str.startswith(substr, beg=0,end=len(string))
- 判斷字串是否以所指定的參數字串開頭
```python
>>> my_str = "I have a dream"
>>> print(my_str.startswith("I"))
True
```
- str.replace(old, new [, max])
- 將字串的某一字串換成另一個字串
```python
>>> my_str = "I have a dream"
>>> print(my_str.replace("a dream", "an apple"))
I have an apple
```
- str.count(substr, beg= 0, end=len(string))
- 統計某字串在此字串出現幾次
```python
>>> my_str = "national taiwan university"
>>> print(my_str.count("a"))
4
```
- str.format()
- 格式化字串
```python
>>> my_str = "Monday"
>>> print("Today is {}.".format(my_str))
Today is Monday.
```
### Function
- len(str)
- 回傳有多少個字元數
```python
>>> my_str = "I have a dream."
>>> print(len(my_str))
15
```
- int(str)
- 將字串轉為數字
```python
>>> my_str = '123'
>>> my_int = int(my_str)
>>> print(my_int)
123
>>> print(type(my_int))
<class 'int'>
```
## 列表(List)
### Method
- list.count(obj)
- 統計某個元素在列表出現的次數
```python
>>> my_list = [1, 3, 1, 4, 5, 2, 0]
>>> print(my_list.count(1))
2
```
- list.insert(index, obj)
- 在指定index位置插入新的元素進去
```python
>>> my_list = [1, 3, 4, 5, 2, 0]
>>> my_list.insert(2, 1)
>>> print(my_list)
[1, 3, 1, 4, 5, 2, 0]
```
- list.sort(key=None, reverse=False)
- 將列表排序,可以透過key指定更詳細的排序方法,reverse為顛倒排序順序
```python
>>> my_list = [1, 3, 1, 4, 5, 2, 0]
>>> my_list.sort()
>>> print(my_list)
[0, 1, 1, 2, 3, 4, 5]
```
### Function
- len(list)
- 回傳列表中元素個數
```python
>>> my_list = [1, 3, 1, 4, 5, 2, 0]
>>> print(len(my_list))
7
```
- max(list)
- 回傳列表中最大的元素
```python
>>> my_list = [1, 3, 1, 4, 5, 2, 0]
>>> print(max(my_list))
5
```
- sorted(list, cmp=None, key=None, reverse=False)
- 將列表做排序
```python
>>> my_list = [1, 3, 1, 4, 5, 2, 0]
>>> print(sorted(my_list))
[0, 1, 1, 2, 3, 4, 5]
```
- enumerate(list, [start=0])
- 回傳列表索引序列,由元素和元素編號所組成
```python
>>> my_list = ["Start", "Pause", "End"]
>>> print(list(enumerate(my_list)))
[(0, 'Start'), (1, 'Pause'), (2, 'End')]
```
## 集合(Set)
### Method
- set.add(obj)
- 給集合添加元素
```python
>>> my_set = {"Apple", "Banana", "Coconut"}
>>> my_set.add("Orange")
>>> print(my_set)
{'Banana', 'Orange', 'Coconut', 'Apple'}
```
- set.update(set)
- 添加新的集合至當前集合
```python
>>> my_set = {"Apple", "Banana", "Coconut"}
>>> my_set_2 = {"Orange", "Watermelon"}
>>> my_set.update(my_set_2)
>>> print(my_set)
{'Orange', 'Coconut', 'Apple', 'Watermelon', 'Banana'}
```
- set.intersection(set1, set2 ... etc)
- 回傳集合與參數中所列集合的交集
```python
>>> my_set = {"Apple", "Banana", "Coconut"}
>>> my_set_2 = {"Apple", "Orange"}
>>> print(my_set.intersection(my_set_2))
{'Apple'}
```
### Function
## 字典(Dict)
### Method
- dict.has_key(key)
- 查看所指定的key是否是字典的鍵
```python
>>> my_dict = {"Name": "TA", "Age": 18}
>>> print(my_dict.has_key("Apple"))
False
```
- dict.keys()
- 列出字典中所有的鍵
```python
>>> my_dict = {"Name": "TA", "Age": 18}
>>> print(my_dict.keys())
dict_keys(['Name', 'Age'])
```
- dict.values()
- 列出字典中所有的值
```python
>>> my_dict = {"Name": "TA", "Age": 18}
>>> print(my_dict.values())
dict_values(['TA', 18])
```
- dict.items()
- 列出字典中所有的(鍵, 值)
```python
>>> my_dict = {"Name": "TA", "Age": 18}
>>> print(my_dict.items())
dict_items([('Name', 'TA'), ('Age', 18)])
```
- dict1.update(dict2)
- 把字典dict2的鍵值更新到dict裡
```python
>>> my_dict = {"Taiwan": "Taipei", "Japan": "Tokyo"}
>>> my_dict_2 = {"USA": "New Work", "Canada": "Ottawa"}
>>> my_dict.update(my_dict_2)
>>> print(my_dict)
{'Taiwan': 'Taipei', 'Japan': 'Tokyo', 'USA': 'New Work', 'Canada': 'Ottawa'}
```
- dict.pop(key[,default])
- 刪除字典裡所指定的鍵並回傳對應的值,若key不存在回傳default
```python
>>> my_dict = {"Taiwan": "Taipei", "Japan": "Tokyo"}
>>> my_dict.pop("Japan")
>>> print(my_dict)
{'Taiwan': 'Taipei'}
```
### Function
## 型態轉換(Type Conversion)
- int(x)
- 將x轉換成整數
```python
>>> my_str = "123"
>>> my_num = int(my_str)
>>> print(type(my_num))
<class 'int'>
```
- str(x)
- 將x轉換成字串
```python
>>> my_num = 123
>>> my_str = str(my_num)
>>> print(type(my_str))
<class 'str'>
```
- list(x)
- 將x轉換成列表
```python
>>> my_str = "abcde"
>>> print(list(my_str))
['a', 'b', 'c', 'd', 'e']
```
- dict(x)
- 將x轉換成字典
```python
>>> my_list = [(1, "A"), (2, "B")]
>>> print(dict(my_list))
{1: 'A', 2: 'B'}
```
## 輸入與輸出(Input and Output)
### 鍵盤輸入
#### Function
- input()
- 從鍵盤讀入輸入,返回字串
```python
>>> ans = input("Are you over 18? ")
Are you over 18? Y
>>> print(ans)
Y
```
### 檔案(File)
#### Function
- open(filename, mode="r")
- 開啟檔案,可以指定用什麼模式,e.g. 讀、寫、續寫...
```python
>>> file = open("test.txt", "r")
```
#### Method
- file.close()
- 把file關掉,之後無法讀寫
```python
>>> file = open("test.txt", "r")
>>> file.close()
```
- file.write(str)
- 將字串寫入檔案
```python
>>> file = open("test.txt", "r")
>>> file.write("I am a coder")
>>> file.close()
```
- file.read([size])
- 讀取檔案,若沒有指定大小,則全部內容全會被讀取
```python
>>> file = open("test.txt", "r")
>>> content = file.read()
>>> print(content)
<line 1 content ...>
<line 2 content ...>
```
- file.readline([size])
- 讀取檔案一行
```python
>>> file = open("test.txt", "r")
>>> line_1 = file.readline()
>>> print(line_1)
<line 1 content ...>
```
## OS
- os.listdir(path)
- 列出該路徑下有的資料夾或檔案名稱
```python
>>> import os
>>> print(os.listdir("./")) # ./ 指的是當前目錄
['Music', 'Videos']
```
## 其他內建函數
- range(start, stop[, step])
- 回傳一個整數列表,可以依照指定從哪個數字開始,哪個數字結束,並以多少作為等差
```python
>>> range(0, 10, 3)
[0, 3, 6, 9]
```