---
title: ''
disqus: hackmd
---
Python基本講義
===
## 前言
目前是為了資研社試教誕生的講義,沒意外的話下學期會持續更新直到我下幹,第一次編python講義有問題請鞭小力一點。
## 如何開始自己的第一次Python
雖然很多人可能已經會了,但還是講一下避免有人不知道
### 找到python在哪
假如你是在復旦的電腦教室,在搜尋欄打`idle`應該就找的到了

長這樣版本可能會不一樣
### 打開你的第一個檔案
點擊左上角的`file`

點擊最上面的的`New File`

這樣子就完成寫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)
```
---