'''
這是多行註解
第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