Victoria
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.

      Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

      Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

      Explore these features while you wait
      Complete general settings
      Bookmark and like published notes
      Write a few more notes
      Complete general settings
      Write a few more notes
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note No publishing access yet

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.

    Your account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Your team account was recently created. Publishing will be available soon, allowing you to share notes on your public page and in search results.

    Explore these features while you wait
    Complete general settings
    Bookmark and like published notes
    Write a few more notes
    Complete general settings
    Write a few more notes
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    15
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # TQC+ 程式語言Python 解答(全)101~910 最佳解!!! **全部的程式碼,皆通過CODE JUDGER測試**![](https://i.imgur.com/zpfctrV.png) ###### tags: `school` ![](https://i.gifer.com/5RR.gif) # Python 第1類:基本程式設計 ## Python 101 整數格式化輸出 ![](https://i.imgur.com/E5v7Tkh.png) ```python= a=input() b=input() c=input() d=input() print('|{:>5s} {:>5s}|'.format(a,b)) print('|{:>5s} {:>5s}|'.format(c,d)) print('|{:<5s} {:<5s}|'.format(a,b)) print('|{:<5s} {:<5s}|'.format(c,d)) ``` ## Python 102 浮點數格式化輸出 ![](https://i.imgur.com/gBlgFuu.png) ```python= a=float(input()) b=float(input()) c=float(input()) d=float(input()) print("|%7.2f %7.2f|"%(a,b)) print("|%7.2f %7.2f|"%(c,d)) print("|{:<7.2f} {:<7.2f}|".format(a,b)) print("|{:<7.2f} {:<7.2f}|".format(c,d)) ``` ## Python 103 字串格式化輸出 ![](https://i.imgur.com/Yq6oTRc.png) ```python= a=input() b=input() c=input() d=input() print('|{:>10s} {:>10s}|'.format(a,b)) print('|{:>10s} {:>10s}|'.format(c,d)) print('|{:<10s} {:<10s}|'.format(a,b)) print('|{:<10s} {:<10s}|'.format(c,d)) ``` ## Python 104 圓形面積計算 ![](https://i.imgur.com/nVQFNqI.png) ```python= import math r=eval(input("")) print("Radius = %.2f"%r) print("Perimeter = %.2f"%(r*2*math.pi)) print("Area = %.2f"%(r*r*math.pi)) ``` ## Python 105 矩形面積計算 ![](https://i.imgur.com/LTPCKDz.png) ```python= h=eval(input()) w=eval(input()) print('Height = %.2f'%h) print('Width = %.2f'%w) print('Perimeter = %.2f'%(w*2+h*2)) print('Area = %.2f'%(w*h)) ``` ## Python 106 公里英哩換算 ![](https://i.imgur.com/4gEStEQ.png) ```python= x=float(input()) y=float(input()) z=float(input()) s = (z/1.6)/((60*x+y)/(60*60)) print("Speed = %.1f"%(s)) ``` ## Python 107 數值計算 ![](https://i.imgur.com/cgvyQDs.png) ```python= l=[0]*5 l[0]=eval(input()) l[1]=eval(input()) l[2]=eval(input()) l[3]=eval(input()) l[4]=eval(input()) print(l[0],l[1],l[2],l[3],l[4]) print('Sum = %.1f'%sum(l)) print('Average = %.1f'%(sum(l)/len(l))) ``` ## Python 108 座標距離計算 請撰寫一程式,讓使用者輸入四個數字x1、y1、x2、y2,分別代表兩個點的座標(x1, y1)、(x2, y2)。計算並輸出這兩點的座標與其歐式距離。 提示1:歐式距離 $= \sqrt{((x1-x2)^2+(y1-y2)^2)}$ 提示2:兩座標的歐式距離,輸出到小數點後第4位 ![](https://i.imgur.com/GAAdJ22.png) ```python= x1=eval(input()) y1=eval(input()) x2=eval(input()) y2=eval(input()) print(f'( {x1} , {y1} )') print(f'( {x2} , {y2} )') print('Distance = %.4f'% ((x1-x2)**2+(y1-y2)**2)**0.5) ``` ## Python 109 正五邊形面積計算 請撰寫一程式,讓使用者輸入一個正數s,代表正五邊形之邊長,計算並輸出此正五邊形之面積(Area)。 提示1:建議使用import math模組的math.pow及math.tan 提示2:正五邊形面積的公式: $ Area=(5 * s^2)/(4 * tan(pi/5))$ 提示3:輸出浮點數到小數點後第四位。 ![](https://i.imgur.com/u2vl0WZ.png) ```python= import math s=eval(input()) print('Area = %.4f'%((5*s**2)/(4*math.tan(math.pi/5)))) ``` ## Python 110 正n邊形面積計算 2. 設計說明: 請撰寫一程式,讓使用者輸入兩個正數n、s,代表正n邊形之邊長為s,計算並輸出此正n邊形之面積(Area)。 提示1:建議使用import math模組的math.pow及math.tan 提示2:正n邊形面積的公式如下:$Area = (n * s^2) / (4 * tan(pi/n))$ 提示3:輸出浮點數到小數點後第四位 ![](https://i.imgur.com/eooV6nO.png) ```python= import math n=eval(input()) s=eval(input()) print('Area = %.4f'%((n*s**2)/(4*math.tan(math.pi/n)))) ``` # Python 第2類:選擇敘述 ## Python 201 偶數判斷 2. 設計說明: 請使用選擇敘述撰寫一程式,讓使用者輸入一個正整數,然後判斷它是否為偶數(even)。 ![](https://i.imgur.com/I6rcTPP.png) ```=python= n=int(input()) if(n%2==0): print(f'{n} is an even number.') else : print(f'{n} is not an even number.') ``` ## Python 202 倍數判斷 2. 設計說明: 請使用選擇敘述撰寫一程式,讓使用者輸入一個正整數,然後判斷它是3或5的倍數,顯示【x is a multiple of 3.】或【x is a multiple of 5.】;若此數值同時為3與5的倍數,顯示【x is a multiple of 3 and 5.】;如此數值皆不屬於3或5的倍數,顯示【x is not a multiple of 3 or 5.】,將使用者輸入的數值代入x。 ![](https://i.imgur.com/QQ0gQBX.png) ```python= x=int(input()) if(x%3==0 and x%5!=0): print(f'{x} is a multiple of 3.') elif(x%3!=0 and x%5==0): print(f'{x} is a multiple of 5.') elif(x%3==0 and x%5==0): print(f'{x} is a multiple of 3 and 5.') else : print(f'{x} is not a multiple of 3 or 5.') ``` ## Python 203 閏年判斷 2. 設計說明: 請使用選擇敘述撰寫一程式,讓使用者輸入一個西元年份,然後判斷它是否為閏年(leap year)或平年。其判斷規則為:每四年一閏,每百年不閏,但每四百年也一閏。 ![](https://i.imgur.com/cT40S1v.png) ```python= n=int(input()) if(n%4==0 and (n%400==0 or n%100!=0)): print(f'{n} is a leap year.') else : print(f'{n} is not a leap year.') ``` ## Python 204 算術運算 2. 設計說明: 請使用選擇敘述撰寫一程式,讓使用者輸入兩個整數a、b,然後再輸入一算術運算子 (+、-、*、/、//、%) ,輸出經過運算後的結果。 ![](https://i.imgur.com/7nQvOeH.png) ```python= a=eval(input()) b=eval(input()) c=str(input()) if(c=='+'): print(a+b) elif(c=='-'): print(a-b) elif(c=='*'): print(a*b) elif(c=='/'): print(a/b) elif(c=='//'): print(a//b) elif(c=='%'): print(a%b) ``` ## Python 205 字元判斷 2. 設計說明: 請使用選擇敘述撰寫一程式,讓使用者輸入一個字元,判斷它是包括大、小寫的英文字母(alphabet)、數字(number)、或者其它字元(symbol)。例如:a為英文字母、9為數字、$為其它字元。 ![](https://i.imgur.com/zMFwyzJ.png) ``` python= n=str(input()) if(n.isdigit()): print(f'{n} is a number.') elif(n.isalpha()) : print(f'{n} is an alphabet.') else : print(f'{n} is a symbol.') ``` ## Python 206 等級判斷 2. 設計說明: 請使用選擇敘述撰寫一程式,根據使用者輸入的分數顯示對應的等級。標準如下表所示: 分 數 等級 80 ~ 100 A 70 ~ 79 B 60 ~ 69 C <= 59 F ![](https://i.imgur.com/mmShXrD.png) ``` python= n=int(input()) if(n>=80 and n<=100) : print('A') elif(n>=70 and n<80) : print('B') elif(n>=60 and n<70) : print('C') else : print('F') ``` ## Python 207 折扣方案 2. 設計說明: 請使用選擇敘述撰寫一程式,要求使用者輸入購物金額,購物金額需大於8,000(含)以上,並顯示折扣優惠後的實付金額。購物金額折扣方案如下表所示: 金  額 折 扣 8,000(含)以上 9.5折 18,000(含)以上 9折 28,000(含)以上 8折 38,000(含)以上 7折 ``` python= n=int(input()) if(n>=8000 and n<18000) : print(n*0.95) elif(n>=18000 and n<28000): print(n*0.9) elif(n>=28000 and n<38000): print(n*0.8) elif(n>=38000): print(n*0.7) ``` ## Python 208 十進位換算 2. 設計說明: 請使用選擇敘述撰寫一程式,讓使用者輸入一個十進位整數num(0 ≤ num ≤ 15),將num轉換成十六進位值。 提示:轉換規則 = 十進位0~9的十六進位值為其本身,十進位10~15的十六進位值為A~F。 ![](https://i.imgur.com/So8krVa.png) ``` python= n=eval(input()) if(n>=0 and n<10) : print(n) elif (n==10) : print('A') elif (n==11) : print('B') elif (n==12) : print('C') elif (n==13) : print('D') elif (n==14) : print('E') elif (n==15) : print('F') ``` ## Python 209 距離判斷 2. 設計說明: 請使用選擇敘述撰寫一程式,讓使用者輸入一個點的平面座標x和y值,判斷此點是否與點(5, 6)的距離小於或等於15,如距離小於或等於15顯示【Inside】,反之顯示【Outside】。 提示:計算平面上兩點距離的公式:$\sqrt{(x1-x2)^2 + (y1-y2)^2}\quad$ ![](https://i.imgur.com/vupvPIn.png) ``` python= x = eval(input()) y = eval(input()) d = ((x-5)**2+(y-6)**2)**0.5 if d <= 15: print('Inside') else: print('Outside') ``` ## Python 210 三角形判斷 2. 設計說明: 請使用選擇敘述撰寫一程式,讓使用者輸入三個邊長,檢查這三個邊長是否可以組成一個三角形。若可以,則輸出該三角形之周長;否則顯示【Invalid】。 提示:檢查方法 = 任意兩個邊長之總和大於第三邊長 ![](https://i.imgur.com/Xw2VRLp.png) ``` python= a=int(input()) b=int(input()) c=int(input()) if(a+b>c and a+c>b and a+b>c): print(a+b+c) else : print(Invalid) ``` # Python 第3類:迴圈敘述 ## Python 301 迴圈整數連加 2. 設計說明: 請使用迴圈敘述撰寫一程式,讓使用者輸入兩個正整數a、b(a < b),利用迴圈計算從a開始連加到b的總和。例如:輸入a=1、b=100,則輸出結果為5050(1 + 2 + … + 100 = 5050)。 ![](https://i.imgur.com/LuXamdd.png) ```python= a=int(input()) b=int(input()) sum=0 for i in range (a,b+1): sum+=i print(sum) ``` ## Python 302 迴圈偶數連加 2. 設計說明: 請使用迴圈敘述撰寫一程式,讓使用者輸入兩個正整數a、b(a < b),利用迴圈計算從a開始的偶數連加到b的總和。例如:輸入a=1、b=100,則輸出結果為2550(2 + 4 + … + 100 = 2550)。 ![](https://i.imgur.com/olFEtov.png) ```python= a=int(input()) b=int(input()) sum=0 for i in range (a,b+1): if(i%2==0): sum+=i print(sum) ``` ## Python 303 迴圈數值相乘 2. 設計說明: 請使用迴圈敘述撰寫一程式,讓使用者輸入一個正整數(<100),然後以三角形的方式依序輸出此數的相乘結果。 提示:輸出欄寬為4,且需靠右對齊。 ![](https://i.imgur.com/1EqWR6p.png) ```python= a=eval(input()) c=0 for i in range(1,a+1): for j in range(1,i+1): c=i*j print("%4d"%(c),end='') print() ``` ## Python 304 迴圈倍數總和 2. 設計說明: 請使用迴圈敘述撰寫一程式,讓使用者輸入一個正整數a,利用迴圈計算從1到a之間,所有5之倍數數字總和。 ![](https://i.imgur.com/xXA118o.png) ```python= n=eval(input()) sum=0 for i in range(1,n+1): if(i%5==0): sum+=i print(sum) ``` ## Python 305 數字反轉 2. 設計說明: 請撰寫一程式,讓使用者輸入一個正整數,將此數值以反轉的順序輸出。 ![](https://i.imgur.com/FTFy6VI.png) **解法(1** ```python= a=int(input()) if(a==0): print(0) while (a!=0) : print(int(a%10),end="") a=a//10 ``` **解法(2** ```python= a=str(input()) reversed_string=''.join(reversed(a)) print(reversed_string) ``` ## Python 306 迴圈階乘計算 2. 設計說明: 請使用迴圈敘述撰寫一程式,讓使用者輸入一個正整數n,利用迴圈計算並輸出n!的值。 ![](https://i.imgur.com/Qne2ROT.png) ```python= n=eval(input()) sum=1 for i in range(1,n+1): sum*=i print(sum) ``` ## Python 307 乘法表 2. 設計說明: (1) 請使用迴圈敘述撰寫一程式,要求使用者輸入一個正整數n(n<10),顯示n*n乘法表。 (2) 每項運算式需進行格式化排列整齊,每個運算子及運算元輸出的欄寬為2,而每項乘積輸出的欄寬為4,皆靠左對齊不跳行。 ![](https://i.imgur.com/PkSLngw.png) ```python= n=int(input()) for i in range(1,n+1): for j in range(1,n+1): print('{} * {} = {:<4}'.format(j,i,(j*i)),end='') print() ``` ## Python 308 迴圈位數加總 2. 設計說明: 請使用迴圈敘述撰寫一程式,要求使用者輸入一個數字,此數字代表後面測試資料的數量。每一筆測試資料是一個正整數(由使用者輸入),將此正整數的每位數全部加總起來。 ![](https://i.imgur.com/3dkncmL.png) ### 解法(1 : 新學的寫法,超讚 ```python= for i in range(int(input())): n=str(input()) a = [int(j) for j in list(str(n))] # 將對應的數字轉換成數字串列,例如 11 轉換成 [1, 1] print("Sum of all digits of "+str(n)+" is "+str(sum(a))) ``` ### 解法(2 ```python= a=int(input()) for i in range(a): ans=0 n=str(input()) for i in range(0,len(n)): ans+=int(n[i]) print("Sum of all digits of "+str(n)+" is "+str(ans)) ``` ### 解法(3 ```python= n = eval(input()) for i in range(n): num = eval(input()) t = num ans = 0 while t!=0: ans+=(t%10) t=t//10 print('Sum of all digits of',num,'is',ans) ``` ## Python 309 存款總額 2. 設計說明: 請使用迴圈敘述撰寫一程式,提示使用者輸入金額(如10,000)、年收益率(如5.75),以及經過的月份數(如5),接著顯示每個月的存款總額。 提示:四捨五入,輸出浮點數到小數點後第二位。 舉例: 假設您存款$10,000,年收益為5.75%。 過了一個月,存款會是:10000 + 10000 * 5.75 / 1200 = 10047.92 過了兩個月,存款會是:10047.92 + 10047.92 * 5.75 / 1200 = 10096.06 過了三個月,存款將是:10096.06 + 10096.06 * 5.75 / 1200 = 10144.44 以此類推。 ![](https://i.imgur.com/OVKIioN.png) ```python= total = eval(input()) y = eval(input()) m = eval(input()) print('%s \t %s' % ('Month', 'Amount')) for i in range(1, m + 1): total += total * y / 1200 print('%3d \t %.2f' % (i, total)) ``` ## Python 310 迴圈公式計算 2. 設計說明: 請使用迴圈敘述撰寫一程式,讓使用者輸入正整數n (1 < n),計算以下公式的總和並顯示結果: $$ \frac{1}{1+\sqrt{2}} + \frac{1}{\sqrt{2}+\sqrt{3}} + \frac{1}{\sqrt{3}+\sqrt{4}} + ... + \frac{1}{\sqrt{n-1}+\sqrt{n}} $$ 提示:輸出結果至小數點後四位。 ![](https://i.imgur.com/yIf2R5l.png) ```python= x=eval(input()) i=1 tmp=0 while i<x: tmp+=1/((i**0.5)+((i+1)**0.5)) i+=1 print('%.4f'%(tmp)) ``` # Python 第4類:進階控制流程 ## Python 401 最小值 2. 設計說明: 請撰寫一程式,由使用者輸入十個數字,然後找出其最小值,最後輸出最小值。 ![](https://i.imgur.com/5DgKZKm.png) ```python= num = [] for i in range(10): num.append(eval(input())) print(min(num)) ``` ## Python 402 不定數迴圈-最小值 2. 設計說明: 請撰寫一程式,讓使用者輸入數字,輸入的動作直到輸入值為9999才結束,然後找出其最小值,並輸出最小值。 ![](https://i.imgur.com/C2cBH1x.png) ```python= n= [] while True: value = eval(input()) if value == 9999: break n.append(value) print(min(n)) ``` ## Python 403 倍數總和計算 2. 設計說明: 請撰寫一程式,讓使用者輸入兩個正整數a、b(a<=b),輸出從a到b(包含a和b)之間4或9的倍數(一列輸出十個數字、欄寬為4、靠左對齊)以及倍數之個數、總和。 ![](https://i.imgur.com/ftgAeDk.png) ```python= a = int( input() ) b = int( input() ) total = 0 count = 0 for i in range( a, b + 1 ): if i % 4 == 0 or i % 9 == 0: count += 1 print("{:<4d}".format(i), end="") if count % 10 == 0: print() total += i print() print(count) print(total) ``` ## Python 404 數字反轉判斷 2. 設計說明: 請撰寫一程式,讓使用者輸入一個正整數,將此正整數以反轉的順序輸出,並判斷如輸入0,則輸出為0。 ![](https://i.imgur.com/6jIG6q3.png) ```python= n=str(input()) s=''.join(reversed(n)) print(s) ``` ## Python 405 不定數迴圈-分數等級 2. 設計說明: 請撰寫一程式,以不定數迴圈的方式輸入一個正整數(代表分數),之後根據以下分數與GPA的對照表,印出其所對應的GPA。假設此不定數迴圈輸入-9999則會結束此迴圈。標準如下表所示: 分 數 GPA 90 ~ 100 A 80 ~ 89 B 70 ~ 79 C 60 ~ 69 D 0 ~ 59 E ![](https://i.imgur.com/j8bGTWB.png) ```python= while True : n=int(input()) if n==-9999: break if(n>0 and n<60): print('E') elif(n>=60 and n<70): print('D') elif(n>=70 and n<80): print('C') elif(n>=80 and n<90): print('B') elif(n>=90 and n<=100): print('A') ``` ## Python 406 不定數迴圈-BMI計算 2. 設計說明: 請撰寫一程式,以不定數迴圈的方式輸入身高與體重,計算出BMI之後再根據以下對照表,印出BMI及相對應的BMI代表意義(State)。假設此不定數迴圈輸入-9999則會結束此迴圈。標準如下表所示: BMI值 代表意義 BMI < 18.5 under weight 18.5 <= BMI < 25 normal 25.0 <= BMI < 30 over weight 30 <= BMI fat 提示:$BMI = 體重(kg)/身高^2(m)$,輸出浮點數到小數點後第二位。 不需考慮男性或女性標準。 ![](https://i.imgur.com/2cgAcvW.png) ```python= while True: H = float(input()) if H == -9999: break else: W = float(input()) BMI = W / (H/100)**2 print(f'BMI: {BMI:.2f}') if BMI < 18.5: print("State: under weight") if 18.5 <= BMI < 25: print("State: normal") if 25.0 <= BMI < 30: print("State: over weight") if 30 <= BMI: print("State: fat") ``` ## Python 407 不定數迴圈-閏年判斷 2. 設計說明: (1) 請撰寫一程式,以不定數迴圈的方式讓使用者輸入西元年份,然後判斷它是否為閏年(leap year)或平年。其判斷規則如下:每四年一閏,每百年不閏,但每四百年也一閏。 (2) 假設此不定數迴圈輸入-9999則會結束此迴圈。 ![](https://i.imgur.com/eq4LHsb.png) ```python= year = eval(input()) while year!=-9999: if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0: print('%d is a leap year.'%year) else : print('%d is not a leap year.'%year) year = eval(input()) ``` ## Python 408 奇偶數個數計算 2. 設計說明: 請撰寫一程式,讓使用者輸入十個整數,計算並輸出偶數和奇數的個數。 ![](https://i.imgur.com/qWhBFjV.png) ```python= even = odd = 0 for _ in range(10): if int(input()) % 2 == 0: even += 1 else: odd += 1 print(f'Even numbers: {even}') print(f'Odd numbers: {odd}') ``` ## Python 409 得票數計算 2. 設計說明: 某次選舉有兩位候選人,分別是No.1: Nami、No.2: Chopper。請撰寫一程式,輸入五張選票,輸入值如為1即表示針對1號候選人投票;輸入值如為2即表示針對2號候選人投票,如輸入其他值則視為廢票。每次投完後需印出目前每位候選人的得票數,最後印出最高票者為當選人;如最終計算有相同的最高票數者或無法選出最高票者,顯示【=> No one won the election.】。 ![](https://i.imgur.com/pUfQrYH.png) ```python= count1 = 0 count2 = 0 null = 0 for i in range(5): vote = int(input()) if vote == 1: count1 += 1 elif vote == 2: count2 += 1 else: null += 1 print("Total votes of No.1: Nami = %d" % count1) print("Total votes of No.2: Chopper = %d" % count2) print("Total null votes = %d" % (null)) if count1 > count2: print("=> No.1 Nami won the election.") elif count1 < count2: print("=> No.2 Chopper won the election.") else: print("=> No one won the election.") ``` ## Python 410 繪製等腰三角形 2. 設計說明: 請撰寫一程式,依照使用者輸入的n,畫出對應的等腰三角形。 ![](https://i.imgur.com/MbIQeI6.png) ```python= n = int(input()) for i in range(n, 0, -1): print(' '*(i-1) + '*'*(1+2*(n-i))) ``` # Python 第5類:函式(Function) ## Python 501 訊息顯示 2. 設計說明: 請撰寫一程式,呼叫函式compute(),該函式功能為讓使用者輸入系別(Department)、學號(Student ID)和姓名(Name)並顯示這些訊息。 ![](https://i.imgur.com/6rTdqdI.png) ```python= def compute(): department = input() studentid = input() name = input() print('Department:',department) print('Student ID:',studentid) print('Name:',name) compute() ``` ## Python 502 乘積 2. 設計說明: 請撰寫一程式,將使用者輸入的兩個整數作為參數傳遞給一個名為compute(x, y)的函式,此函式將回傳x和y的乘積。 ![](https://i.imgur.com/DtPDrYZ.png) ### 解法(1 ```python= def compute(x,y): print(x*y) compute(int(input()),int(input())) ``` ### 解法(2 ```python= def compute(x,y): return x*y x = eval(input()) y = eval(input()) print(compute(x,y)) ``` ## Python 503 連加計算 2. 設計說明: 請撰寫一程式,讓使用者輸入兩個整數,接著呼叫函式compute(),此函式接收兩個參數a、b,並回傳從a連加到b的和。 ![](https://i.imgur.com/hEfFpTl.png) ```python= def compute(a,b): ans=0 for i in range(a,b+1): ans+=i return ans x = eval(input()) y = eval(input()) print(compute(x,y)) ``` ## Python 504 次方計算 2. 設計說明: 請撰寫一程式,讓使用者輸入兩個整數,接著呼叫函式compute(),此函式接收兩個參數a、b,並回傳$a^b$的值。 ![](https://i.imgur.com/9A4QsOh.png) ### 解法(1 ```python= def compute(x,y): print(x**y) compute(int(input()),int(input())) ``` ### 解法(2 ```python= def compute(a,b): return pow(a,b) x = eval(input()) y = eval(input()) print(compute(x,y)) ``` ## Python 505 依參數格式化輸出 2. 設計說明: 請撰寫一程式,將使用者輸入的三個參數,變數名稱分別為a(代表字元character)、x(代表個數)、y(代表列數),作為參數傳遞給一個名為compute()的函式,該函式功能為:一列印出x個a字元,總共印出y列。 提示:輸出的每一個字元後方有一空格。 ![](https://i.imgur.com/nOcjTfI.png) ```python= def compute(a,x,y): for i in range(y): for j in range(x): print('%c '%a,end='') print() a = input() x = eval(input()) y = eval(input()) compute(a,x,y) ``` ## Python 506 一元二次方程式 2. 設計說明: 請撰寫一程式,將使用者輸入的三個整數(代表一元二次方程式 $ax^2 + bx + c = 0$ 的三個係數a、b、c)作為參數傳遞給一個名為compute()的函式,該函式回傳方程式的解,如無解則輸出【Your equation has no root.】 提示: 輸出有順序性 回傳方程式的解,無須考慮小數點位數 ![](https://i.imgur.com/HDSR1n3.png) ### 解法(1 ```python= def compute(a,b,c): temp=b**2-4*a*c if(temp<0): print('Your equation has no root.') elif(temp==0) : ans=-b/2*a print('%.1f'%ans) elif(temp>0) : print('%.1f, %.1f'%((-b+temp**0.5)/(2*a),(-b-temp**0.5)/(2*a))) compute(int(input()),int(input()),int(input())) ``` ### 解法(2 ```python= def compute(a,b,c): q=b**2-4*a*c if q<0: print("Your equation has no root.") elif q==0: print(-b/2*a) else: q1=(-b+q**0.5)/(2*a) q2=(-b-q**0.5)/(2*a) print('{}, {}'.format(q1, q2)) a=int(input()) b=int(input()) c=int(input()) compute(a,b,c) ``` ## Python 507 質數 2. 設計說明: 請撰寫一程式,讓使用者輸入一個整數x,並將x傳遞給名為compute()的函式,此函式將回傳x是否為質數(Prime number)的布林值,接著再將判斷結果輸出。如輸入值為質數顯示【Prime】,否則顯示【Not Prime】。 ![](https://i.imgur.com/voIVXoa.png) ```python= def compute(x): if x <= 1: return False for i in range(2,x): if x%i == 0: return False return True x = eval(input()) if compute(x): print('Prime') else: print('Not Prime') ``` ## Python 508 最大公因數 2. 設計說明: 請撰寫一程式,讓使用者輸入兩個正整數x、y,並將x與y傳遞給名為compute()的函式,此函式回傳x和y的最大公因數。 ![](https://i.imgur.com/uPuMfVr.png) ### 解法(1 ```python= import math def compute(x,y): return math.gcd(x,y) x,y=eval(input()) print(compute(x,y)) ``` ### 解法(2 ```python= def compute(x,y): while(y!=0): temp=y y=x%y x=temp print(x) x,y=eval(input()) compute(x,y) ``` ## Python 509 最簡分數 2. 設計說明: 請撰寫一程式,讓使用者輸入二個分數,分別是x/y和m/n(其中x、y、m、n皆為正整數),計算這兩個分數的和為p/q,接著將p和q傳遞給名為compute()函式,此函式回傳p和q的最大公因數(Greatest Common Divisor, GCD)。再將p和q各除以其最大公因數,最後輸出的結果必須以最簡分數表示 ![](https://i.imgur.com/z6Pfjx9.png) ```python= import math def compute(x,y): gcd = math.gcd(x,y) return gcd x,y = eval(input()) m,n = eval(input()) q = y*n p = m*y+x*n gcd=compute(p,q) print(f'{x}/{y} + {m}/{n} = {int(p/gcd)}/{int(q/gcd)}') ``` ## Python 510 費氏數列 2. 設計說明: 請撰寫一程式,計算費氏數列(Fibonacci numbers),使用者輸入一正整數num (num>=2),並將它傳遞給名為compute()的函式,此函式將輸出費氏數列前num個的數值。 提示:費氏數列的某一項數字是其前兩項的和,而且第0項為0,第一項為1,表示方式如下: $$F_0 = 0 $$ $$F_1 = 1 $$ $$F_n = F_{n-1} + F_{n-2} $$ ![](https://i.imgur.com/osDAZ4N.png) ### 解法(1 ```python= def compute(n): if n > 1: return compute(n-1) + compute(n-2) # 遞迴 return n n=int(input()) for i in range(n): print(compute(i), end = ' ') ``` ### 解法(2 ```python= def compute(n): curr = 1 pre = 0 print(0,1,end=' ') for i in range(2,n): temp = curr+pre print(temp,end=' ') pre = curr curr = temp num = eval(input()) compute(num) ``` # Python 第6類:串列(List)的運作(一維、二維以及多維) ## Python 601 偶數索引值加總 2. 設計說明: 請撰寫一程式,利用一維串列存放使用者輸入的12個正整數(範圍1~99)。顯示這些數字,接著將串列索引為偶數的數字相加並輸出結果。 提示:輸出每一個數字欄寬設定為3,每3個一列,靠右對齊。 ![](https://i.imgur.com/T5tuEVn.png) ```python= m={} total=c=0 for i in range(0,12): m[i]=int(input()) if(i%2==0): total+=m[i] for i in range(0,12): print('{:>3d}'.format(m[i]),end="") c+=1 if(c==3): print() c=0 print(total) ``` ## Python 602 撲克牌總和 2. 設計說明: 請撰寫一程式,讓使用者輸入52張牌中的5張,計算並輸出其總和。 提示:J、Q、K以及A分別代表11、12、13以及1。 ![](https://i.imgur.com/Tvq8X4c.png) ```python= t=0 for i in range(5): n=str(input()) if(n=='J'): t+=11 elif(n=='Q'): t+=12 elif(n=='K'): t+=13 elif(n=='A'): t+=1 else : t+=int(n) print(t) ``` ## Python 603 數字排序 2. 設計說明: 請撰寫一程式,要求使用者輸入十個數字並存放在串列中。接著由大到小的順序顯示最大的3個數字。 ![](https://i.imgur.com/JkxoZ4J.png) ```python= m=[] for i in range(10): n=int(input()) m.append(n) m=sorted(m) print(m[9],m[8],m[7]) ``` ## Python 604 眾數 2. 設計說明: 請撰寫一程式,讓使用者輸入十個整數作為樣本數,輸出眾數(樣本中出現最多次的數字)及其出現的次數。 提示:假設樣本中只有一個眾數。 ![](https://i.imgur.com/PUMSTBA.png) ### 解法(1 ```python= m=[0]*100 for i in range(10): n=int(input()) m[n]+=1 print(m.index(max(m))) #取得位址 print(max(m)) ``` ### 解法(2 ```python= m=[0]*100 for i in range(10): n=int(input()) m[n]+=1 for i in range(0,100): if(max(m)==m[i]): print(i) print(max(m)) ``` ## Python 605 成績計算 2. 設計說明: 請撰寫一程式,讓使用者輸入十個成績,接下來將十個成績中最小和最大值(最小、最大值不重複)以外的成績作加總及平均,並輸出結果。 提示:平均值輸出到小數點後第二位。 ![](https://i.imgur.com/GbiOkvH.png) ```python= n=[] for i in range(10): x=eval(input()) n.append(x) s=sum(n)-max(n)-min(n) print(s) print("%.2f"%(s/(10-2))) ``` ## Python 606 二維串列行列數 2. 設計說明: 請撰寫一程式,讓使用者輸入兩個正整數rows、cols,分別表示二維串列lst 的「第一個維度大小」與「第二個維度大小」。 串列元素[row][col]所儲存的數字,其規則為:row、col 的交點值 = 第二個維度的索引col – 第一個維度的索引row。 接著以該串列作為參數呼叫函式compute()輸出串列。 提示:欄寬為4。 ![](https://i.imgur.com/nRKAiV9.png) ```python= def compute(r,c): for i in range(r): for j in range(c): print("%4d"%(j-i), end='') print() r = int(input()) c = int(input()) compute(r,c) ``` ## Python 607 成績計算 2. 設計說明: 請撰寫一程式,讓使用者輸入三位學生各五筆成績,接著再計算並輸出每位學生的總分及平均分數。 提示:平均分數輸出到小數點後第二位 ![](https://i.imgur.com/S4PbmSg.png) ```python= n=["1st","2nd","3rd"] t=[[0 for j in range(5)] for i in range(3)] for i in range(3): print("The {} student:".format(n[i])) for j in range(5): t[i][j]=int(input()) for i in range(3): print("Student %d"%(i+1)) print("#Sum %d"%(sum(t[i]))) print("#Average %.2f"%(sum(t[i])/5)) ``` ## Python 608 最大最小值索引 2. 設計說明: 請撰寫一程式,讓使用者建立一個3*3的矩陣,其內容為從鍵盤輸入的整數(不重複),接著輸出矩陣最大值與最小值的索引。 ![](https://i.imgur.com/wyocxkC.png) ### 解法(1 ```python= n=[] for i in range(9): n.append(int(input())) m=max(n) mi=n.index(m) print("Index of the largest number {} is: ({}, {})".format(m,mi//3,mi%3)) s=min(n) si=n.index(s) print("Index of the smallest number {} is: ({}, {})".format(s,si//3,si%3)) ``` ### 解法(2 ```python= a=[] for i in range(9): n=int(input()) a.append(n) print(f'Index of the largest number {max(a)} is: ({(a.index(max(a)))//3}, {(a.index(max(a)))%3})') print(f'Index of the smallest number {min(a)} is: ({(a.index(min(a)))//3}, {(a.index(min(a)))%3})') ``` ## Python 609 矩陣相加 2. 設計說明: 請撰寫一程式,讓使用者建立兩個2*2的矩陣,其內容為從鍵盤輸入的整數,接著輸出這兩個矩陣的內容以及它們相加的結果。 ![](https://i.imgur.com/oBvmdTv.png) ```python= L1 = [[0 for i in range(2)] for j in range(2)] L2 = [[0 for i in range(2)] for j in range(2)] print('Enter matrix 1:') for i in range(2): for j in range(2): L1[i][j] = int(input('[%d, %d]: '%(i+1,j+1))) print('Enter matrix 2:') for i in range(2): for j in range(2): L2[i][j] = int(input('[%d, %d]: '%(i+1,j+1))) print('Matrix 1:') for i in range(2): for j in range(2): print(L1[i][j],end=' ') print() print('Matrix 2:') for i in range(2): for j in range(2): print(L2[i][j],end=' ') print() print('Sum of 2 matrices:') for i in range(2): for j in range(2): print((L1[i][j]+L2[i][j]),end=' ') print() ``` ## Python 610 平均溫度 2. 設計說明: 請撰寫一程式,讓使用者輸入四週各三天的溫度,接著計算並輸出這四週的平均溫度及最高、最低溫度。 提示1:平均溫度輸出到小數點後第二位。 提示2:最高溫度及最低溫度的輸出,如為31時,則輸出31,如為31.1時,則輸出31.1。 ![](https://i.imgur.com/Z8VoxTg.png) ```python= L=[] for w in range(1,4+1): print("Week %d:"%w) for D in range(1,3+1): x=eval(input("Day %d:"%D)) L.append(x) A=sum(L)/len(L) print("Average: %.2f"%A) print("Highest:",max(L)) print("Lowest:",min(L)) ``` # Python 第7類:數組(Tuple)、集合(Set)以及詞典(Dictionary) ## Python 701 串列數組轉換 2. 設計說明: 請撰寫一程式,輸入數個整數並儲存至串列中,以輸入-9999為結束點(串列中不包含-9999),再將此串列轉換成數組,最後顯示該數組以及其長度(Length)、最大值(Max)、最小值(Min)、總和(Sum)。 ![](https://i.imgur.com/FezBH03.png) ```python= LIST = [] num = eval(input()) while num!=-9999: LIST.append(num) num = eval(input()) TUPLE = tuple(LIST) print(TUPLE) print('Length:',len(TUPLE)) print('Max:',max(TUPLE)) print('Min:',min(TUPLE)) print('Sum:',sum(TUPLE)) ``` ## Python 702 數組合併排序 2. 設計說明: 請撰寫一程式,輸入並建立兩組數組,各以-9999為結束點(數組中不包含-9999)。將此兩數組合併並從小到大排序之,顯示排序前的數組和排序後的串列 ![](https://i.imgur.com/L1OO3jD.png) ### 解法(1 ```python= tuple1 = () num = eval(input('Create tuple1:\n')) while num !=-9999: tuple1 +=(num,) num = eval(input()) tuple2 = () num = eval(input('Create tuple2:\n')) while num !=-9999: tuple2 +=(num,) num = eval(input()) tuple1 += tuple2 print('Combined tuple before sorting:',tuple1) LIST = list(tuple1) LIST.sort() print('Combined list after sorting:',LIST) ``` ### 解法(2 ```python= t1=() print('Create tuple1:') while True : n=int(input()) if(n==-9999) : break t1+=(n,) t2=() print('Create tuple2:') while True : n=int(input()) if(n==-9999) : break t2+=(n,) t1 += t2 print('Combined tuple before sorting:',t1) LIST = list(t1) LIST.sort() print('Combined list after sorting:',LIST) ``` ## Python 703 數組條件判斷 2. 設計說明: 請撰寫一程式,輸入一些字串至數組(至少輸入五個字串),以字串"end"為結束點(數組中不包含字串"end")。接著輸出該數組,再分別顯示該數組的第一個元素到第三個元素和倒數三個元素。 ![](https://i.imgur.com/7HPFCC4.png) ```python= TUPLE = () string = input() while string != "end": TUPLE +=(string,) string = input() print(TUPLE) print(TUPLE[0:3]) print(TUPLE[-3:]) ``` ## Python 704 集合條件判斷 2. 設計說明: 請撰寫一程式,輸入數個整數並儲存至集合,以輸入-9999為結束點(集合中不包含-9999),最後顯示該集合的長度(Length)、最大值(Max)、最小值(Min)、總和(Sum)。 ![](https://i.imgur.com/Z3gs4it.png) ### 解法(1 ```python= set1 = set() num = eval(input()) while num!=-9999: set1.add(num) num = eval(input()) print('Length:',len(set1)) print('Max:',max(set1)) print('Min:',min(set1)) print('Sum:',sum(set1)) ``` ### 解法(2 ```python= s1=set() while True : n=int(input()) if(n==-9999) : break s1.add(n) print('Length:',len(s1)) print('Max:',max(s1)) print('Min:',min(s1)) print('Sum:',sum(s1)) ``` ## Python 705 子集合與超集合 2. 設計說明: 請撰寫一程式,依序輸入五個、三個、九個整數,並各自儲存到集合set1、set2、set3中。接著回答:set2是否為set1的子集合(subset)?set3是否為set1的超集合(superset)? ![](https://i.imgur.com/IknyNoc.png) ```python= set1 = set() set2 = set() set3 = set() print('Input to set1:') for i in range(5): set1.add(eval(input())) print('Input to set2:') for i in range(3): set2.add(eval(input())) print('Input to set3:') for i in range(9): set3.add(eval(input())) print('set2 is subset of set1:',str(set2.issubset(set1))) print('set3 is superset of set1:',str(set3.issuperset(set1))) ``` ## Python 706 全字母句 2. 設計說明: 全字母句(Pangram)是英文字母表所有的字母都出現至少一次(最好只出現一次)的句子。請撰寫一程式,要求使用者輸入一正整數k(代表有k筆測試資料),每一筆測試資料為一句子,程式判斷該句子是否為Pangram,並印出對應結果True(若是)或False(若不是)。 提示:不區分大小寫字母 ![](https://i.imgur.com/G6cKzQm.png) ### 解法(1 ```python= count= eval(input()) alpha=26 for i in range(count): sentence = input() set1 = set(sentence.lower()) if ' ' in set1: set1.remove(' ') if len(set1) >= alpha: print('True') else: print('False') ``` ### 解法(2 ```python= n=int(input()) for i in range(n): a=[0]*26 #初始化 (有26個英文字母) f=True temp=input() temp=temp.lower() #轉小寫去統計 #print(temp) for i in range(len(temp)): #字串讀一遍 if(temp[i]!=' '): a[ord(temp[i])-ord('a')]+=1 # 登記各個字母有幾個 a放在位子[0] b放在位子[1] for i in range(len(a)): if(a[i]==0) : f=False #print(a) if(f) : print('True') else : print('False') ``` ## Python 707 共同科目 2. 設計說明: 請撰寫一程式,輸入X組和Y組各自的科目至集合中,以字串"end"作為結束點(集合中不包含字串"end")。請依序分行顯示(1) X組和Y組的所有科目、(2)X組和Y組的共同科目、(3)Y組有但X組沒有的科目,以及(4) X組和Y組彼此沒有的科目(不包含相同科目)。 提示:科目須參考範例輸出樣本,依字母由小至大進行排序。 ![](https://i.imgur.com/aU6nE2w.png) ```python= xS = set() yS = set() print('Enter group X\'s subjects:') x = input() while x != 'end': xS.add(x) x=input() print('Enter group Y\'s subjects:') y = input() while y != 'end': yS.add(y) y=input() print(sorted(xS.union(yS))) print(sorted(yS.intersection(xS))) print(sorted(yS.difference(xS))) print(sorted(yS.symmetric_difference(xS))) ``` ## Python 708 詞典合併 2. 設計說明: 請撰寫一程式,自行輸入兩個詞典(以輸入鍵值"end"作為輸入結束點,詞典中將不包含鍵值"end"),將此兩詞典合併,並根據key值字母由小到大排序輸出,如有重複key值,後輸入的key值將覆蓋前一key值。 ![](https://i.imgur.com/zji2PJk.png) ### 解法(1 ```python= x={} y={} print('Create dict1:') while True: key = input('Key: ') if key == 'end': break x[key] = input('Value: ') print('Create dict2:') while True: key = input('Key: ') if key == 'end': break y[key] = input('Value: ') x.update(y) for i in sorted(x.keys()): print(i+": "+x[i]) ``` ### 解法(2 ```python= dc={} #其實好像建一個dict就可以了 print('Create dict1:') while True : k=input('Key: ') if k=='end' : break dc[k]=input('Value: ') print('Create dict2:') while True : k=input('Key: ') if k=='end' : break dc[k]=input('Value: ') for i in sorted(dc.keys()): print(i+": "+dc[i]) ``` ## Python 709 詞典排序 2. 設計說明: 請撰寫一程式,輸入一顏色詞典color_dict(以輸入鍵值"end"作為輸入結束點,詞典中將不包含鍵值"end"),再根據key值的字母由小到大排序並輸出。 ![](https://i.imgur.com/pbCDGFu.png) ```python= d= {} while True: key = input('Key: ') if key == 'end': break d[key] = input('Value: ') for i in sorted(d.keys()): print(i+': '+d[i]) ``` ## Python 710 詞典搜尋 2. 設計說明: 請撰寫一程式,為一詞典輸入資料(以輸入鍵值"end"作為輸入結束點,詞典中將不包含鍵值"end"),再輸入一鍵值並檢視此鍵值是否存在於該詞典中。 ![](https://i.imgur.com/1ix4UEA.png) ```python= d = {} while True: key = input('Key: ') if key == 'end': break d[key] = input('Value: ') search = input('Search key: ') print(search in d.keys()) ``` # Python 第8類:字串(String)的運作 ## Python 801 字串索引 2. 設計說明: 請撰寫一程式,要求使用者輸入一字串,顯示該字串每個字元的索引。 ![](https://i.imgur.com/ZimRdua.png) ```python= n=str(input('')) for i in range(0,len(n)): print('Index of \''+n[i]+'\': '+str(i)) ``` ## Python 802 字元對應 2. 設計說明: 請撰寫一程式,要求使用者輸入一字串,顯示該字串每個字元的對應ASCII碼及其總和。 ![](https://i.imgur.com/L7v9A7R.png) ```python= n=str(input('')) sum=0 for i in range(0,len(n)): sum+=ord(n[i]) print('ASCII code for \''+n[i]+'\' is '+str(ord(n[i]))) print(sum) ``` ## Python 803 倒數三個詞 2. 設計說明: 請撰寫一程式,讓使用者輸入一個句子(至少有五個詞,以空白隔開),並輸出該句子倒數三個詞。 ![](https://i.imgur.com/5G1SjJ5.png) ```python= my_list =list(map(str, input("").split())) print(my_list[-3],my_list[-2],my_list[-1]) ``` ## Python 804 大寫轉換 2. 設計說明: 請撰寫一程式,讓使用者輸入一字串,分別將該字串轉換成全部大寫以及每個字的第一個字母大寫。 ![](https://i.imgur.com/TvxWDHC.png) ### 解法(1 ```python= n=input() print(n.upper()) print(n.title()) ``` ### 解法(2 ```python= #不用函式的寫法,我就閒 2022/6/16 n=input() res = "" for i in n: if(i!=' ') : temp=ord(i)-32 res = res + chr(temp) else : res +=' ' print(res) print(n[0].upper(),end='') for i in range(1,len(n)): if(n[i-1]==' '): temp=ord(n[i])-32 print(chr(temp),end='') elif n[i]==' ' : print(' ',end='') else : print(n[i],end='') ``` ## Python 805 字串輸出 2. 設計說明: 請撰寫一程式,要求使用者輸入一個長度為6的字串,將此字串分別置於10個欄位的寬度的左邊、中間和右邊,並顯示這三個結果,左右皆以直線 |(Vertical bar)作為邊界。 ![](https://i.imgur.com/0waajN7.png) ```python= n=input() print('|{:<10s}|'.format(n)) print("|%s|"%n.center(10)) print('|{:>10s}|'.format(n)) ``` ## Python 806 字元次數計算 2. 設計說明: 請撰寫一程式,讓使用者輸入一字串和一字元,並將此字串及字元作為參數傳遞給名為compute()的函式,此函式將回傳該字串中指定字元出現的次數,接著再輸出結果。 ![](https://i.imgur.com/buqcExa.png) ### 解法(1 ```python= def compute(Str, s): print(f'{s} occurs {Str.count(s)} time(s)') compute(input(),input()) ``` ### 解法(2 ```python= def compute(Str, s): return Str.count(s) Str = input() s = input() print(f'{s} occurs {compute(Str, s)} time(s)') ``` ### 解法(3 ```python= #不用函式的寫法 def compute(n,m) : ans=0 for i in range(len(n)): if(n[i]==m): ans+=1 print(f'{m} occurs {ans} time(s)') compute(input(),input()) ``` ## Python 807 字串加總 2. 設計說明: 請撰寫一程式,要求使用者輸入一字串,該字串為五個數字,以空白隔開。請將此五個數字加總(Total)並計算平均(Average)。 ![](https://i.imgur.com/K4etyUx.png) ```python= m=list(map(int,input().split())) j=sum=0 for i in m: sum+=i j+=1 print(f'Total = {sum}') print(f'Average = {sum/j}') ``` ## Python 808 社會安全碼 2. 設計說明: 請撰寫一程式,提示使用者輸入一個社會安全碼SSN,格式為ddd-dd-dddd,d表示數字。若格式完全符合(正確的SSN)則顯示【Valid SSN】,否則顯示【Invalid SSN】 ![](https://i.imgur.com/eooxlKY.png) ```python= num=input().replace("-","") if(num.isdigit()): print('Valid SSN') else: print('Invalid SSN') ``` ## Python 809 密碼規則 2. 設計說明: 請撰寫一程式,要求使用者輸入一個密碼(字串),檢查此密碼是否符合規則。密碼規則如下:  a. 必須至少八個字元。  b. 只包含英文字母和數字。  c. 至少要有一個大寫英文字母。  d. 若符合上述三項規則,程式將顯示檢查結果為【Valid password】,否則顯示【Invalid password】。 ![](https://i.imgur.com/qN3UTMg.png) ```python= n = input() b=0 for i in range(len(n)): if n[i].isupper(): b=1 if b==1 and len(n)>=8 and n.isalnum(): print("Valid password") else: print("Invalid password") ``` ## Python 810 最大值與最小值之差 2. 設計說明: 請撰寫一程式,首先要求使用者輸入正整數k(1 <= k <= 100),代表有k筆測試資料。每一筆測試資料是一串數字,每個數字之間以一空白區隔,請找出此串列數字中最大值和最小值之間的差。 提示:差值輸出到小數點後第二位。 ![](https://i.imgur.com/bGDkwHp.png) ```python= for i in range(int(input())): data=list(map(float,input().split())) print('{:.2f}'.format( max( data ) - min( data ))) ``` # Python 第9類:檔案與異常處理 ## Python 901 成績資料 2. 設計說明: 請撰寫一程式,將使用者輸入的五筆資料寫入到write.txt(若不存在,則讓程式建立它),每一筆資料為一行,包含學生名字和期末總分,以空白隔開。檔案寫入完成後要關閉。 ![](https://i.imgur.com/QYyrXqk.png) ```python= n = open('write.txt','w') for i in range(5): n.write(input()+'\n') n.close() ``` ## Python 902 資料加總 2. 設計說明: 請撰寫一程式,讀取read.txt的內容(內容為數字,以空白分隔)並將這些數字加總後輸出。檔案讀取完成後要關閉。 ![](https://i.imgur.com/2GVd4Y0.png) ```python= f=open("read.txt") w=f.read() sp=w.split(" ") total=0 for x in sp: total+=eval(x) print(total) ``` ## Python 903 成績資料 2. 設計說明: 請撰寫一程式,要求使用者輸入五個人的名字並加入到data.txt的尾端。之後再顯示此檔案的內容。 ![](https://i.imgur.com/PwgHiiQ.png) ```python= with open("data.txt","a+",encoding="utf-8") as file: for i in range(5): file.write("\n"+input()) print("Append completed!") print("Content of \"data.txt\":") file.seek(0) print(file.read()) ``` ## Python 904 資料計算 2. 設計說明: 請撰寫一程式,讀取read.txt(每一列的格式為名字和身高、體重,以空白分隔)並顯示檔案內容、所有人的平均身高、平均體重以及最高者、最重者。 提示:輸出浮點數到小數點後第二位。 ![](https://i.imgur.com/IpWAZLx.png) ```python= height=[] weight=[] maxh=0 maxw=0 f=open("read.txt","r") w=f.readlines() for x in w: print(x) ss=x.split(" ") height.append(eval(ss[1])) weight.append(eval(ss[2])) if (eval(ss[1])>maxh): maxh=eval(ss[1]) hname=ss[0] if (eval(ss[2])>maxw): maxw=eval(ss[2]) wname=ss[0] avgh=sum(height)/len(height) avgw=sum(weight)/len(weight) print("Average height: {:.2f}".format(avgh)) print("Average weight: {:.2f}".format(avgw)) print("The tallest is {} with {:.2f}cm".format(hname,maxh)) print("The heaviest is {} with {:.2f}kg".format(wname,maxw)) ``` ## Python 905 字串資料刪除 2. 設計說明: 請撰寫一程式,要求使用者輸入檔案名稱data.txt和一字串s,顯示該檔案的內容。接著刪除檔案中的字串s,顯示刪除後的檔案內容並存檔。 ![](https://i.imgur.com/FxL51Kl.png) ```python= f=input() s=input() with open(f,"r+",encoding="utf-8")as file: data=file.read() print("=== Before the deletion") print(data) print("=== After the deletion") data=data.replace(s,'') print(data) file.seek(0) file.write(data) ``` ## Python 906 字串資料取代 2. 設計說明: 請撰寫一程式,要求使用者輸入檔名data.txt、字串s1和字串s2。程式將檔案中的字串s1以s2取代之。 ![](https://i.imgur.com/5M9ytbZ.png) ```python= fn,s1,s2=input(),input(),input() f=open(fn,'r') w=f.read() print("=== Before the replacement") print(w) w=w.replace(s1,s2) print("=== After the replacement") print(w) ``` ## Python 907 詳細資料顯示 2. 設計說明: 請撰寫一程式,要求使用者輸入檔名read.txt,顯示該檔案的行數、單字數(簡單起見,單字以空白隔開即可,忽略其它標點符號)以及字元數(不含空白)。 ![](https://i.imgur.com/ACHMcMR.png) ```python= f_name = input() f_line = f_word = f_char = 0 with open(f_name, 'r') as file: for line in file: f_line += 1 f_word += len(line.split()) f_char += sum([len(c) for c in line.split()]) print('%d line(s)' %f_line) print('%d word(s)' %f_word) print('%d character(s)' %f_char) ``` ## Python 908 單字次數計算 2. 設計說明: 請撰寫一程式,要求使用者輸入檔名read.txt,以及檔案中某單字出現的次數。輸出符合次數的單字,並依單字的第一個字母大小排序。(單字的判斷以空白隔開即可) ![](https://i.imgur.com/ON7rGu7.png) ```python= fn,num=input(),eval(input()) f=open(fn,'r') w=f.read() sp1=w.split() setsp1=sorted(set(sp1)) for i in setsp1: if(sp1.count(i) == num): print(i,end='\n') ``` ## Python 909 聯絡人資料 2. 設計說明: 請撰寫一程式,將使用者輸入的五個人的資料寫入data.dat檔,每一個人的資料為姓名和電話號碼,以空白分隔。再將檔案加以讀取並顯示檔案內容。 ![](https://i.imgur.com/0mOPgmD.png) ```python= with open("data.dat","w",encoding="UTF-8") as fp: for i in range(5): fp.write(input()+"\n") print('The content of "data.dat":') with open("data.dat","r",encoding="UTF-8") as fp: for i in fp: print(i) ``` ## Python 910 學生基本資料 2. 設計說明: 請撰寫一程式,要求使用者讀入read.dat(以UTF-8編碼格式讀取),第一列為欄位名稱,第二列之後是個人記錄。請輸出檔案內容並顯示男生人數和女生人數(根據"性別"欄位,0為女性、1為男性)。 ![](https://i.imgur.com/igVg9hc.png) ```python= M=0 F=0 f=open('read.dat','r') w=f.readlines() for i in w: print(i) sp=i.split() if(sp[2]=="1"): M+=1 elif(sp[2]=="0"): F+=1 print("Number of males: {}".format(M)) print("Number of females: {}".format(F)) ```

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password
    or
    Sign in via Facebook Sign in via X(Twitter) Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    By signing in, you agree to our terms of service.

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully