# 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))
```