# [資安實務] Python入門
上課講義➢ gg.gg/python1016
## 變數型態
int:整數
float:浮點數
bool:布林值
str:字串
#### 字串相關函數
| 函數 | 意義 |
| -------- | -------- |
| len() | 計算字串的字數 |
| <str>.split() | 將字串分割為[列表](#列表(list)) |
## 輸入與輸出
### 輸出
語法如下:
```
print()
```
**[sep和end的用法]**
sep (分隔字元) 預設為空白字元
end (結束字元) 預設為換行字元
### 輸入
語法如下:
```
變數(字串) = input()
```
注意:輸入前不用先設一個變數
如果要輸入一個整數,可以使用int()函數
## 運算子
### 算術運算子
與其他程式語言相同,
'+'表示加
'-'表示減
'*'表示乘
'%'表示餘數
不過也有部分運算子python特有的寫法:
| 運算子 | 意義 |
| ---- | ---- |
| / | 除(帶小數點) |
| // | 整除 |
| ** | 次方 |
### 關係運算子
與其他程式語言相同,例如:'>'表示大於、'=='表示等於...
### 邏輯運算子
Python的邏輯運算子與其他程式語言寫法不同,如下:
| 運算子 | 意義 | 其他語言寫法 |
| ----- | ----- | ----- |
| and | 且 | && |
| or | 或 | \|\| |
| not | 反相 | ! |
## 條件判斷
if-else 語法:
```python=
if 條件1:
執行內容1
elif 條件2: #不是else if!!!
執行內容2
.
.
.
else:
執行內容n
```
## 迴圈
### while迴圈
語法:
```python=
while 條件:
執行內容 #重複執行到不滿足條件為止
```
也可以搭配else使用:
```python=
while 條件1:
執行內容1 #重複執行到不滿足條件為止
else:
執行內容2
```
### for迴圈
```python=
for 變數 in 序列:
執行內容
```
序列的部分可填入range()函式、字串、列表...
假設說序列為字串"abcde",
迴圈會先執行a(變數=a),第二遍會執行b...,直到執行完e後結束。
#### **[range()函式]**
```python=
for 變數 in range(起始值, 終止值, 遞增值):
執行內容
```
註:起始值預設為0,遞增值預設為1,皆可省略
**[利用python寫星星樹]**
```python=
n = int(input())
a = n-1
b = 1
for i in range(n):
for j in range(a):
print(" ", end='')
for j in range(b):
print("*", end='')
print() #換行
a -= 1
b += 2
```
## 序列
序列是一種用來儲存一系列數值的方式
Python中常見的序列有列表、字典、元組、集合
### 列表(list)
以[ ]含括不同型態的資料
| 函數 | 意義 |
| -------- | -------- |
| len() | 計算列表元素的個數 |
| <list>.append() | 新增一個新的元素到列表 |
| <list>.sort( ) | 將列表由小到大排序 |
[由大到小排序?]
```
<list>.sort(reverse = True)
```
### 字典(dict)
以{ }含括key:value對應資料
## 利用Python進行[編碼與解碼](https://hackmd.io/@hyu/BJ1CJ_AhY#%E7%B7%A8%E7%A2%BC%E8%88%87%E8%A7%A3%E7%A2%BC)
#### 進位制轉換

除十進位皆以字串形式表示,並加上字首前綴
(二進位為0b,八進位為0o,十六進位為0x)
#### ASCII
十進位轉為對應ASCII字元
```
chr()
```
ASCII字元轉為十進位
```
ord()
```
#### 摩斯電碼
利用字典紀錄對應的編碼,進行加解密
**[解密]**
```python=
s = input().split()
MORSE_CODE_DICT = { '.-':'A', '-...':'B', '-.-.':'C', '-..':'D', '.':'E', '..-.':'F', '--.':'G', '....':'H', '..':'I', '.---':'J', '-.-':'K', '.-..':'L', '--':'M', '-.':'N', '---':'O', '.--.':'P', '--.-':'Q', '.-.':'R', '...':'S', '-':'T', '..-':'U', '...-':'V', '.--':'W', '-..-':'X', '-.--':'Y', '--..':'Z', '/':' '}
for i in range(len(s)):
print(MORSE_CODE_DICT[s[i]], end='')
print()
```
**[加密]**
```py=
s = input().upper() #輸入要全部轉大寫
MORSE_CODE_DICT = { 'A':'.-', 'B':'-...', 'C':'-.-.', 'D':'-..', 'E':'.', 'F':'..-.', 'G':'--.', 'H':'....', 'I':'..', 'J':'.---', 'K':'-.-', 'L':'.-..', 'M':'--', 'N':'-.', 'O':'---', 'P':'.--.', 'Q':'--.-', 'R':'.-.', 'S':'...', 'T':'-', 'U':'..-', 'V':'...-', 'W':'.--', 'X':'-..-', 'Y':'-.--', 'Z':'--..', ' ':'/'}
for i in range(len(s)):
print(MORSE_CODE_DICT[s[i]], end='')
if i != len(s)-1:
print(end=' ')
print()
```
###### tags: `資安`