# 10/24 資安python營隊
###### tags: `營隊筆記`
> :video_game:
## :memo: 觀念
### Python
1. 變數命名規則
* 由英文、數字、底線組成
* 不得以數字開頭
* 不能與Python內建的保留字相同
## :memo: 練習題第一部分
### 練習1: 輸入(轉整數)、輸出、運算子
題目內容:依序輸入國、英、數三科成績,其權值分別為國文4倍、英文3倍、數學3倍,請計算加權平均(國文成績*4+英文成績*3+數學成績*3/10)
請將底線處填入適當的程式碼
```
ch, en, ma = int(input()), int(input()), int(input()) ==# int() 將文字強制轉整數==
avg = **(4*ch+3*en+3*ma)**/10
print(avg)
```
:rocket:
### 練習2: 輸入(轉整數)、輸出、運算子
題目內容:輸入兩點座標(x1, y1), (x2, y2),輸出兩點距離
```
x1, y1, x2, y2 = float(input()), float(input()), float(input()), float(input())
==# float() 將文字強制轉浮點數(俗稱小數)==
dist = ((x1-x2)**2+(y1-y2)**2)**0.5
print(dist)
```
:cat:
### 練習3: 判斷結構
題目內容:輸入西元年,請判斷其為閏年或平年
閏年判斷:西元年被400整除 或 西元年被4整除且不被100整除
```python=
y = int(input())
if ((y%400==0) or (y%4==0 and y%100!=0)):
print("閏年")
else:
print("平年")
```
## :memo: 練習題第二部分
##
### 練習4: 判斷結構
題目內容:輸入一個數,判斷其是否為質數,輸出對應的結果
請將底線處填入適當的程式碼
```python=
n = int(input())
flag = 0 # flag值為0代表質數,1代表合數
for i in range(2,n-1,1): # 從2到n-1,若有一個數可以把n整除,則n為合數
if (n%i==0):
flag = 1
break # break語法用來跳出迴圈
if (flag==0):
print("質數")
else:
print("合數")
```
:dog:
### 練習5:string、list
題目內容:輸入n個數,中間以空白間隔,請計算此n數和 [進化版]
例如:輸入20 30 40,輸出90
```python=
ans = 0
for x in input().split(" "):
ans = ans + int(x)
print(ans)
```
:apple:
### 練習6:string、list
題型:字元 ==> ASCII值 (ASCII編碼)
題目內容:輸入一個字串,請輸出其ASCII編碼的10進位值(以空白間隔)
範例輸入:HappyCTF{L2_Python}
範例輸出:72 97 112 112 121 67 84 70 123 76 50 95 80 121 116 104 111 110 125
```python=
s = input()
for x in s:
print( ord(s), end=' ')
# print()函數裡的第二個參數 end=' ' 意指印出資料後結束字元為' '(空白),
# 此參數預設為換行
```
:banana:
### 練習7:Caesar cipher古典密碼學
題型:Caesar cipher encryption
題目內容:輸入一個字串s 及字元向右平移數n,請輸出其加密後結果
範例輸入:HAPPYCTF{L2_PYTHON} 5
範例輸出:MFUUDHYK{Q2_UDYMTS}
請將底線處填入適當的程式碼
``` python=
s, n = input().split() # 將 s, n 讀入(資料型態為字串)
n = int(n) # 將 n 轉換為整數
ans = '' # ans 為存放答案的變數
for c in s:
if ('A' <= c <= 'Z'): # 若是大寫字母則平移 n
if (ord(c)+n > ord('Z')): # 若平移後超出 Z
ans = ans + chr(ord(c)+n-26)
else:
ans = ans + chr(ord(c)+n)
else: # 若不是大寫字母則不平移(原字元不變)
ans = ans + c
print(ans)
```
:pear: