---
# System prepended metadata

title: python 基礎

---

# python 基礎

## variable/data type

int: 整數
str: 字串
float: 浮點數/小數
bool: 布林值

list: 清單/陣列
tuple: 元組/數組
set: 集合
dict: 字典


```python!=
type(1) #int
type("Hello world") #str
type(1.12) #float
type(True) #bool

l = [1, "a", 1.1]
type(l) # list

t = (1, 2, 3)
type(t) #tuple

s = {1, 2, 3}
type(s) # set

d = {
    1: "a",
    'b': 'c'
}
type(d) # dict
```

## input/output

```python!=
print("這是輸出")
print(1)
print(1.12)

# 這是輸出
# 1
# 1.12
```
python的print會在輸出後面換行

```python!
print("hello", "world", 12) #hello world 12
```

python的print可以輸出多個物件，且不限制型態

```python!
print(data, sep=" ", end='\n')
```

我們可以透過sep這個參數來調整透過什麼字串來分隔物件，end來調整以什麼作為結尾，"\n"為換行。


### variable

加設我們有個盒子然後我們把它命名成a，這個a可以存一些東西，此時他就稱為variable(變數)，這個變數可以存我們之前講的所有資料型態，也可以把別的變數存到新的變數裡，這個動作叫做賦值(assign)，注意這裡將一個變數存到新的變數的過程中，只是同一個箱子被貼上不同的標籤(變數名稱)，而如果想要兩個不同的箱子存一樣的東西則需要使用copy(某些時候使用deepcopy比較安全)。

### input
```python!=
a = input("請輸入資料: ")
```
上述代碼會輸出input裡面的資料(可以是空的)並等待使用者輸入內容，並將輸入的內容做為字串賦值到a裡面。

### casting 型態轉換
假設我們輸入了1，那input給的會是一個字串
```python=
a = input()
print(type(a)) # str
```

那如果我們需要輸入一個數字而不是字串怎麼辦，這個時候我們可以透過casting來轉型態。
```python=
a = input()
print(type(a)) # str
a = int(a)
print(type(a)) # int
```

如果沒辦法轉成該型態就會噴錯，ex: 
```python=
a = int('s') # ValueError: invalid literal for int() with base 10: 's'
```

### list

list類似於其他程式語言的陣列，但其成員不限定資料型態以及整個陣列的大小不固定，這也是python相較於其他語言較為簡單的原因之一，但維護好list也是python重要的一環。

#### 宣告

list在宣告的時候需要打上`[]`或是剛剛提到的casting，而我們也可以在裡面先初始化內容
```python=
l = []
l = list()
l = [1, 2, 3]
l = [i for i in range(10)] # 之後會教迴圈
l = [i for i in range(10) if i % 2 == 0] # 之後會教條件判斷
```

#### 查詢
```python=
l = [1, 2, 3, 4, 5, 6]
print(l) # [1, 2, 3]
print(l[0]) # 1
print(l[2]) # 3
print(l[6]) # index out of range
print(l[-1]) # 6
print(l[0:2]) # [1, 2]
print(l[3:]) # [4, 5, 6]
print(l[:3]) # [1, 2, 3]
print(l[1:4:2]) # [2, 4]
print(l[::2]) # [1, 3, 5]

for i in l:
    print(i) # 一樣之後會教
# 1
# 2
# 3
# 4
# 5
# 6

```

#### 新增
```python=
l = [1, 2, 3]
print(l) # [1, 2, 3]
l.append(4) # [1, 2, 3, 4]
l.insert(2, 6) # [1, 2, 6, 3, 4]
l.extend([1, 2, 3]) # [1, 2, 6, 3, 4, 1, 2, 3]
```

#### 刪除

```python=
l = [1, 2, 3]
print(l) # [1, 2, 3, 4, 5, 6, 7, 8]
del l[2] # [1, 2, 4, 5, 6, 7, 8]
l.remove(2) # [1, 4, 5, 6, 7, 8]
l.pop() # [1, 4, 5, 6, 7]
l.clear() # []
del l # NameError: name 'l' is not defined
```

#### 修改
```python=
l = [1, 2, 3]
l[1] = 10 # [1, 10, 3]
```
