---
# System prepended metadata

title: 資研社試教

---

---
title: ''
disqus: hackmd
---

Python基本講義
===



## 前言
目前是為了資研社試教誕生的講義，沒意外的話下學期會持續更新直到我下幹，第一次編python講義有問題請鞭小力一點。




## 如何開始自己的第一次Python
雖然很多人可能已經會了，但還是講一下避免有人不知道
### 找到python在哪
假如你是在復旦的電腦教室，在搜尋欄打`idle`應該就找的到了
![image](https://hackmd.io/_uploads/HJsk_OXMee.png)

長這樣版本可能會不一樣

### 打開你的第一個檔案
點擊左上角的`file`
![image](https://hackmd.io/_uploads/B1xUudQGle.png)
點擊最上面的的`New File`
![image](https://hackmd.io/_uploads/B1Z_uO7fxl.png)
這樣子就完成寫python需要的前置作業了，接下來就開始實際操作吧



---


## Hello, world ##
學程式的第一步當然是先試著跑出點簡單的東西

```python=
print("Hello, world!")
```
:::spoiler 為甚麼大家第一個程式都寫`Hello, world`呢 ? 
可以參考維基百科
https://zh.wikipedia.org/zh-tw/Hello_World
簡單來說就是很久以前有人這樣寫，後面的人覺得很酷把他寫到自己的C教學書裡，就一路傳承到今天了
:::

`print()` 就是 Python 的輸出指令，字串要用引號包起來（單/雙引號都行）。

你想印什麼都可以塞進去，甚至可以直接印數字：
```python=
print(114514)
```
須注意這裡因為沒加符號電腦是判成單純數字
```python=
print("114514")
```
假如今天這樣寫裡面的114514會被判成字串



## 輸入 input() ##
要讓使用者輸入東西，用 `input()`。  
這裡需要注意，直接做輸入電腦一律判成字串
```python=
a = input()
print(a)  # 你輸入什麼就輸出什麼
```
如果希望電腦判斷輸入的是數字或其他資料型態，可以這樣改
```python=
a = int(input())
```
通常題目會要你一次輸入好幾個數字，可以這樣寫：
```python=
x, y = input().split()
# 但這樣 x, y 都是字串
```
如果你要整數，一樣要再包一層 int：
```python=
x, y = map(int, input().split())
```
沒看懂也沒關係，看到題目多練幾次熟起來自然也可以學會。

## 多行輸入
有時候題目會給你很多行輸入，一直到沒有資料為止（像是 Judge 平台）
```python=
while True:
    try:
        s = input()
    except EOFError:
        break
```
這個寫法很常見，可以先記下來，之後會一直用到。

---


# 資料型態 #

## int（整數） ##
最基本的資料型態，只能存數字且不接受小數點，
```python=
a = 5
b = 7
print(a + b)  # 12
```
python也有很多一般數學不會看到的運算子，像是：
- `//` 整除
- `%` 取餘數
- `**` 次方

```python=
print(7 // 2)  # 3
print(7 % 2)   # 1
print(2 ** 5)  # 32
```

## float（小數/浮點數） ##
有小數點就會自動是 float 型態：
```python=
pi = 3.14
print(type(pi))    # <class 'float'>
```

## str（字串） ##
所有用引號包起來的都是字串。  
字串有很多內建功能，也很容易操作。
```python=
s = "konpeko"
print(s[0])        # k
print(s[-1])       # o
print(s[1:4])      # onp
```
#### 把字串加起來

你可以直接「+」把字串連在一起，這是 Python 很厲害的地方。

```python=
a = "114514"
b = "1919810"
print(a + b)          # 1145141919810
```

如果你想讓中間有空格，或是任何想要的字串，可以自己加：
```python=
a = "Pekora"
b = "cute"
print(a + " " + b)    # Pekora cute
```
```python=
a = "Pekora"
b = "cute"
print(a + " is " + b)    # Pekora is cute
```
或者直接 print 多個變數，Python 會自動幫你加空格：
```python=
a = "maimai"
b = "dx"
print(a, b)           # maimai dx
```
---
格式化字串（f-string）可以在輸出的時候讓程式更好讀懂
```python=
name = "pekora"
y = 3
print(f"{name} 是 {y} 期生成員")   # pekora 是 3 期生成員
```
還有一些酷酷的內建函式可以用：
```python=
s = "TEmPTaTiON"
print(s.lower())   # temptation 全小寫
print(s.upper())   # TEMPTATION 全大寫
print(s.count('T')) # 3 反正就找幾個你指定的字元
print(len(s))      # 10 多長
```



# 常用容器 #

## list（串列/陣列） ##
好用陣列，啥都能裝
```python=
lst = [1, 4, 5, 1]
lst.append(4)     # 加東西
print(lst)        # [1, 4, 5, 1, 4]
print(lst[0])     # 1
lst.pop()         # 把最後一個拔掉
print(lst)        # [1, 4, 5, 1]
```
遍歷、切片、排序都很簡單：


## dict（字典） ##
類似C++的map，可以用唯一的key值對value，拿來查東西很方便
```python=
score = {"peko": 100, "miko": 90}
score["peko"] += 10
print(score)          # {'peko': 110, 'miko': 90}
for name in score:
    print(name, score[name])    #peko 110
                                #miko 90
```

## tuple（元組） ##
跟 list 很像，但不能改內容（比較少用）。
```python=
t = (1, 2, 3)
print(t[0])      # 1
```

## set（集合） ##
用來存「不重複」的東西，像數學裡的集合。
存到一樣的東西會去重自己刪掉
```python=
s = set()
s.add(3)
s.add(3)
print(s)         # {3}
s.remove(3)
```





---