''' 這是多行註解 第1個Python程式,執行結果是否如自己所想 若與想像不同,應該怎麼改呢?? ''' a, b = input(), input() # 這是單行註解 print(a+b) ''' 試著執行下方程式,就會了解為什麼上方程式會有這樣的結果 ''' a, b = input(), input() print(type(a)) ''' 題目內容:依序輸入國、英、數三科成績,其權值分別為國文4倍、英文3倍、數學3倍,請計算加權平均(國文成績*4+英文成績*3+數學成績*3/10) 請將底線處填入適當的程式碼 ''' ch, en, ma = int(input()), int(input()), int(input()) # int() 將文字強制轉整數 avg = ch*0.4 + en*0.3 + ma*0.3 print(avg) ''' 題目內容:輸入兩點座標(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) ''' 題目內容:輸入一個數,請判斷其為奇偶數 請將底線處填入適當的程式碼 ''' n = int(input()) if (n%2==0): print("偶數") else: print("奇數") ''' 題目內容:輸入一個數,請依下列原則輸出對應結果 3*k(3的倍數) ==> Good 3*k+1 ==> SoSo 3*k+2 ==> Bad ''' n = int(input()) if (n%3==0): print("Good") elif (n%3==1): print("SoSo") else: print("Bad") ''' 題目內容:輸入西元年,請判斷其為閏年或平年 閏年判斷:西元年被400整除 或 西元年被4整除且不被100整除 請將底線處填入適當的程式碼 ''' y = int(input()) if ((y%400==0) or (y%4==0 and y%100!=0)): print("閏年") else: print("平年") ''' 題目內容:輸入一個數,請計算所有數字和 例如:輸入2469,輸出21 (2+4+6+9) 請將底線處填入適當的程式碼 ''' n = int(input()) # 整數版本寫法 sum = 0 while (n>0): # 直到n變成0為止 sum = n%10 + sum # 重覆一: 將n的個位數加至總和sum n = n//10 # 重覆二: 將n的個位數去除 print(sum) ''' 題目內容:輸入一個數,請計算所有數字和 例如:輸入2469,輸出21 (2+4+6+9) 請將底線處填入適當的程式碼 ''' n = input() # 字串版本寫法 sum = 0 for x in n: # 走訪字串n的每個字元,存到變數x sum = int(x)+sum # 將變數x轉成整數加至總和sum print(sum) ''' 題目內容:終極密碼遊戲,電腦隨機從1-100取一個亂數當做密碼,玩家猜錯電腦會給提示 請將底線處填入適當的程式碼 ''' import random # 匯入random模組 ans = random.randint(1,100) # 利用random模組的randint()函數,從1到100之間取一個亂數 print('請猜一個1~100的數字') play = True while(play): guess = int(input('來隨便猜一個數字吧: ')) if (guess>ans): print('喔你猜得太大囉') elif (guess<ans): print('喔你猜得太小囉') else: print('恭喜你猜對了!') play = False ''' 題目內容:輸入一個數,判斷其是否為質數,輸出對應的結果 請將底線處填入適當的程式碼 ''' n = int(input()) flag = 0 # flag值為0代表質數,1代表合數 for i in range(2,n-1): # 從2到n-1,若有一個數可以把n整除,則n為合數 if (n%i==0): flag = 1 break # break語法用來跳出迴圈 if (flag==0): print("質數") else: print("合數") ''' 題目內容:輸入n個數,中間以空白間隔,請計算此n數和 例如:輸入20 30 40,輸出90 請將底線處填入適當的程式碼 ''' print('輸入n個數,中間以空白間隔') num = input().split() # num = ['20', '30', '40'] ans = 0 for x in num: ans = ans+int(x) print(ans) ''' 題目內容:輸入n個數,中間以空白間隔,請計算此n數和 [進化版] 例如:輸入20 30 40,輸出90 請將底線處填入適當的程式碼 ''' print('輸入n個數,中間以空白間隔') ans = 0 for x in input().split(): ans = ans+int(x) print(ans) ''' 題目內容:輸入n個數,中間以空白間隔,請計算此n數和 [再進化版] 例如:輸入20 30 40,輸出90 ''' print('輸入n個數,中間以空白間隔') num = [int(x) for x in input().split()] # 此稱之為List Comprehension 列表建構 print(sum(num)) ''' 題目內容:輸入n個數,中間以空白間隔,請計算此n數和 [終極版] 例如:輸入20 30 40,輸出90 ''' print('輸入n個數,中間以空白間隔') print(sum([int(x) for x in input().split()])) ''' 題目內容:輸入一個數,請計算所有數字和 例如:輸入2469,輸出21 (2+4+6+9) 請將底線處填入適當的程式碼 ''' print('輸入一個數') print(sum([int(x) for x in input()])) ''' 線上解題常會遇到測試資料一行有多個數值 可以用以下方法解決 ''' a, b, c = [int(x) for x in input().split()] ''' 統計文章裡各字母(大小寫視同大寫)出現次數,依字典序呈現結果,若次數為0 則不輸出該字母 範例輸入: This is testing 範例輸出: E 1 G 1 H 1 I 3 N 1 S 3 T 3 ''' d = {} for i in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ': # 建立一個key為A-Z各字母,其所有value皆為 0 的字典 d[i] = 0 l = input() # 讀入文章 for x in l.upper(): # 將文章中所有字母轉為大寫,用for迴圈走訪所有字元 if ('A' <= x <= 'Z'): # 英文字母才納入統計 d[x] = d[x]+1 for y in d: # 走訪dict裡的所有key if (d[y] > 0): print(y, d[y]) ''' 統計文章裡各字母(大小寫視同大寫)出現次數,依字典序呈現結果,若次數為0 則不輸出該字母 範例輸入: This is testing 範例輸出: E 1 G 1 H 1 I 3 N 1 S 3 T 3 ''' import string # 匯入string模組 a = string.ascii_uppercase # a變數為'ABCDEFGHIJKLMNOPQRSTUVWXYZ' d = dict.fromkeys(a, 0) # 建立一個key為A-Z各字母,其所有value皆為 0 的字典 l = input() # 讀入文章 for x in l.upper(): # 將文章中所有字母轉為大寫,用for迴圈遍歷所有字元 if ('A' <= x <= 'Z'): # 英文字母才納入統計 d[x] = d[x]+1 for y in d: # 走訪dict裡的所有key if (d[y] > 0): print(y, d[y]) ''' 題型:Caesar cipher encryption 題目內容:輸入一個字串s 及字元向右平移數n,請輸出其加密後結果 範例輸入:HAPPYCTF{L2_PYTHON} 5 範例輸出:MFUUDHYK{Q2_UDYMTS} 請將底線處填入適當的程式碼 ''' 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