# 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: