---
# System prepended metadata

title: 全 TQC Python 3 解答

---



# TQC Python3 101~510解答
####  Creator: 蔣天誠

<hr>


# Python 第1類：基本程式設計


## **101：整數格式化輸出**



```python
n1 = int(input())
n2 = int(input())
n3 = int(input())
n4 = int(input())
print("|%5d %5d|"%(n1, n2))
print("|%5d %5d|"%(n3, n4))
print("|%-5d %-5d|"%(n1, n2))
print("|%-5d %-5d|"%(n3, n4))

```


## **102：浮點數格式化輸出**
```python
n1 = float(input())
n2 = float(input())
n3 = float(input())
n4 = float(input())
print("|%7.2f %7.2f|"%(n1, n2))
print("|%7.2f %7.2f|"%(n3, n4))
print("|%-7.2f %-7.2f|"%(n1, n2))
print("|%-7.2f %-7.2f|"%(n3, n4))
```

## **103：字串格式化輸出**
```python
n1 = input()
n2 = input()
n3 = input()
n4 = input()
print("|%10s %10s|"%(n1, n2))
print("|%10s %10s|"%(n3, n4))
print("|%-10s %-10s|"%(n1, n2))
print("|%-10s %-10s|"%(n3, n4))
```

## **104：圓形面積計算**

第一解
```python
pi = 3.14159
Radius = float(input())
Perimeter = Radius * 2 * pi
Area = pi * Radius **2

print("Radius = %.2f"%(Radius))
print("Perimeter = %.2f"%(Perimeter))
print("Area = %.2f"%(Area))

```

第二解法 導入 math 套件解法
```python
import math

Radius = float(input())
Perimeter = Radius * 2 * math.pi
Area = math.pi * math.pow(Radius, 2)

print("Radius = %.2f"%(Radius))
print("Perimeter = %.2f"%(Perimeter))
print("Area = %.2f"%(Area))
```

## **105：矩形面積計算**
```python
Height = float(input())
Width = float(input())
Perimeter = (Height + Width) * 2
Area = Height * Width
print("Height = %.2f"%(Height))
print("Width = %.2f"%(Width))
print("Perimeter = %.2f"%(Perimeter))
print("Area = %.2f"%(Area))
```

## **106：公里英哩換算**
- 陷阱：題目是說「平均時速」而不是「英里」
- 時速公式：距離 / 時間
```python
x = float(input())
y = float(input())
z = float(input())

time = (x + y / 60) / 60
speed = z / 1.6 / time 
print("Speed = %.1f"%(speed))
```


## **107：數值計算**
```python
num1 = eval(input())
num2 = eval(input())
num3 = eval(input())
num4 = eval(input())
num5 = eval(input())

summ = num1+num2+num3+num4+num5
avg = summ/5
print(num1,num2,num3,num4,num5)
print('Sum = %.1f'%summ)
print('Average = %.1f'%avg)
```


## **108：座標距離計算**
 - 陷阱：輸出時空格
```python
x1 = eval(input())
y1 = eval(input())
x2 = eval(input())
y2 = eval(input())
print("(",x1,",",y1,")")
print("(",x2,",",y2,")")
print('Distance = %.4f'%((x1-x2)**2+(y1-y2)**2)**0.5)
```



## **109：正五邊形面積計算**
請撰寫一程式，讓使用者輸入一個正數s，代表正五邊形之邊長，計算並輸出此正五邊形之面積（Area）。

提示1：建議使用import math模組的math.pow及math.tan
提示2：正五邊形面積的公式： $ Area=(5 * s^2)/(4 * tan(pi/5))$
提示3：輸出浮點數到小數點後第四位。
```python
import math
s = int(input())
Area = (5 * math.pow(s,2) ) / ( 4*math.tan(math.pi/5) )
print("Area = %.4f"%(Area))
```

## **110：正n邊形面積計算**
```python
import math
n = eval(input())
s = eval(input())

area = (n*pow(s,2))/(4*math.tan(math.pi/n))

print('Area = %.4f'%area)
```


# Python 第2類：選擇敘述

## **201：偶數判斷**
請使用選擇敘述撰寫一程式，讓使用者輸入一個正整數，然後判斷它是否為偶數（even）。
```python
n = eval(input())
if n % 2 == 0:
    print("%d is an even number."%(n))
else:
    print("%d is not an even number."%(n))
```



## **202：倍數判斷**
請使用選擇敘述撰寫一程式，讓使用者輸入一個正整數，然後判斷它是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。
- 難達成的條件先寫 
```python
num = int(input())
if num % 3 == 0 and num == 5:
    print("%d is a multiple of 3 and 5."%(num))
elif num % 3 == 0:
    print("%d is a multiple of 3."%(num))
elif num % 5 == 0:
    print("%d is a multiple of 5."%(num))
else:
    print("%d is not a multiple of 3 or 5."%(num))
```




## **203：閏年判斷**
請使用選擇敘述撰寫一程式，讓使用者輸入一個西元年份，然後判斷它是否為閏年（leap year）或平年。其判斷規則為：每四年一閏，每百年不閏，但每四百年也一閏。
- 先判斷400，因為會與百年不閏衝突

```python
year = eval(input())

if year%400 == 0 :
    print('%d is a leap year.'%(year))
elif year%100 == 0:
    print('%d is not a leap year.'%(year))
elif year%4==0:
    print('%d is a leap year.'%(year))
else:
    print('%d is not a leap year.'%(year))
```



## **204:算術運算**
請使用選擇敘述撰寫一程式，讓使用者輸入兩個整數a、b，然後再輸入一算術運算子 (+、-、*、/、//、%） ，輸出經過運算後的結果。

```python
a = int(input())
b = int(input())

operator = input()

if operator == '+':
    result = a + b
elif operator == '-':
    result = a - b
elif operator == '*':
    result = a * b
elif operator == '/':
    result = a / b
elif operator == '%':
    result = a % b
print(result)
```

## **205：字元判斷**
使用選擇敘述撰寫一程式，讓使用者輸入一個字元，判斷它是包括大、小寫的英文字母（alphabet）、數字（number）、或者其它字元（symbol）。例如：a為英文字母、9為數字、$為其它字元。

- %c 字元格式
```python
char = input()

if char.isalpha():  
    print("%c is an alphabet."%(char))
elif char.isdigit():  
    print("%c is a number."%(char))
else:  
    print("%c is a symbol."%(char))
```

## **206：等級判斷**
請使用選擇敘述撰寫一程式，根據使用者輸入的分數顯示對應的等級。標準如下表所示：
 留言
 建議修訂
分　數 等級
80 ~ 100 A
70 ~ 79 B
60 ~ 69 C
<= 59 F
```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')
```


## **207：折扣方案**
請使用選擇敘述撰寫一程式，要求使用者輸入購物金額，購物金額需大於8,000（含）以上，並顯示折扣優惠後的實付金額。購物金額折扣方案如下表所示：
金　　額 折　扣
8,000（含）以上 9.5折
18,000（含）以上 9折
28,000（含）以上 8折
38,000（含）以上 7折

```python
money = int(input())
result = 0
if money >= 38000:
    result = money * 0.7
elif money >= 28000:
    result = money * 0.8
elif money >= 18000:
    result = money * 0.9
elif money >- 8000:
    result = money * 0.95
print(result)
```

## **208：十進位換算**
請使用選擇敘述撰寫一程式，讓使用者輸入一個十進位整數num(0 ≤ num ≤ 15)，將num轉換成十六進位值。
提示：轉換規則 = 十進位09的十六進位值為其本身，十進位1015的十六進位值為A~F。

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



## **209：距離判斷**
請使用選擇敘述撰寫一程式，讓使用者輸入一個點的平面座標x和y值，判斷此點是否與點(5, 6)的距離小於或等於15，如距離小於或等於15顯示【Inside】，反之顯示【Outside】。
```python
import math
a = 5
b = 6
x = int(input())
y = int(input())
pos = math.pow(math.pow((x - a), 2) + math.pow((y - b), 2), 0.5)
if pos > 15:
    print("Outside")
else:
    print("Inside")
```

## **210：三角形判斷**
請使用選擇敘述撰寫一程式，讓使用者輸入三個邊長，檢查這三個邊長是否可以組成一個三角形。若可以，則輸出該三角形之周長；否則顯示【Invalid】。
- 檢查方法 = 任意兩個邊長之總和大於第三邊長
```python
x = eval(input())
y = eval(input())
z = eval(input())

if x+y > z and x+z > y and y+z > x:
    print(x+y+z)
else:
    print('Invalid')
```


# Python 第3類：迴圈敘述
## **301：迴圈整數連加**
請使用迴圈敘述撰寫一程式，讓使用者輸入兩個正整數a、b（a < b），利用迴圈計算從a開始連加到b的總和。例如：輸入a=1、b=100，則輸出結果為5050（1 + 2 + … + 100 = 5050）。

```python
a=int(input())
b=int(input())
sum=0
for i in range (a,b+1):
   sum+=i
print(sum)
```


## **302：迴圈偶數連加**
請使用迴圈敘述撰寫一程式，讓使用者輸入兩個正整數a、b（a < b），利用迴圈計算從a開始的偶數連加到b的總和。例如：輸入a=1、b=100，則輸出結果為2550（2 + 4 + … + 100 = 2550）。
```python
a=int(input())
b=int(input())
sum=0
for i in range (a,b+1):
  if(i%2==0): 
     sum+=i
print(sum)
```

## **303：迴圈數值相乘**
請使用迴圈敘述撰寫一程式，讓使用者輸入兩個正整數a、b（a < b），利用迴圈計算從a開始的偶數連加到b的總和。例如：輸入a=1、b=100，則輸出結果為2550（2 + 4 + … + 100 = 2550）。
```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()   #換行
```

## **304：迴圈倍數總和**
請使用迴圈敘述撰寫一程式，讓使用者輸入一個正整數a，利用迴圈計算從1到a之間，所有5之倍數數字總和。
```python
n=eval(input())
sum=0
for i in range(1,n+1):
  if(i%5==0):
    sum+=i
print(sum)
```

## **305：數字反轉**
請撰寫一程式，讓使用者輸入一個正整數，將此數值以反轉的順序輸出。

解法1
```python
a=int(input())
if(a==0):
    print(0)
while (a!=0) :
    print(int(a%10),end="")
    a=a//10
```

解法2
切片[起始值:終止值:增加值]，跟range()一樣，只到終止值-1，“如果增加值為-1”，則會往前移動
```python
text = input()
print(text[::-1])
```


## **306：迴圈階乘計算**
請使用迴圈敘述撰寫一程式，讓使用者輸入一個正整數n，利用迴圈計算並輸出n!的值。

- n!=1+2+3...+n (階層)
```python
n=eval(input())
sum=1
for i in range(1,n+1):
    sum*=i
print(sum)
```

## **307：乘法表**
(1) 請使用迴圈敘述撰寫一程式，要求使用者輸入一個正整數n（n<10），顯示n*n乘法表。
(2) 每項運算式需進行格式化排列整齊，每個運算子及運算元輸出的欄寬為2，而每項乘積輸出的欄寬為4，皆靠左對齊不跳行。

- 考試請注意“乘數與被乘數位置”
```python
num = eval(input())
for i in range(1, num+1):
    for j in range(1, num+1):
        print("%-2d* %-2d= %-4d"%(j, i, i*j), end="")
    print()
```

## **308：迴圈位數加總**
請使用迴圈敘述撰寫一程式，要求使用者輸入一個數字，此數字代表後面測試資料的數量。每一筆測試資料是一個正整數（由使用者輸入），將此正整數的每位數全部加總起來。

```python
a = int(input())

for i in range(a):
    ans = 0  
    n = str(input())

    for j in range(0, len(n)):
        ans += int(n[j])  
    print("Sum of all digits of " + str(n) + " is " + str(ans))

```


## **309：存款總額**
請使用迴圈敘述撰寫一程式，提示使用者輸入金額（如10,000）、年收益率（如5.75），以及經過的月份數（如5），接著顯示每個月的存款總額。
- 四捨五入，輸出浮點數到小數點後第二位。

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


## **310：迴圈公式計算**
請使用迴圈敘述撰寫一程式，讓使用者輸入正整數n (1 < n)，計算以下公式的總和並顯示結果：
![截圖 2024-05-04 17.35.32](https://hackmd.io/_uploads/HJZdZtmGC.png)
### for 迴圈解法

```python
# 讀取使用者輸入的數字並轉換為整數
x = eval(input())

# 初始化累加結果
tmp = 0

# 使用 for 迴圈計算累加和
for i in range(1, x):
    # 計算當前項目並累加到 tmp
    tmp += 1 / ((i ** 0.5) + ((i + 1) ** 0.5))

# 以四捨五入到小數點後四位的格式輸出結果
print('%.4f' % (tmp))

```
### while 迴圈解法
```python
# 讀取使用者輸入的數字並轉換為整數
x = eval(input())

# 初始化變數
i = 1    # 起始數值
tmp = 0  # 累加結果

# 使用 while 迴圈計算累加和，直到 i 等於 x
while i < x:
    # 累加到 tmp
    tmp += 1 / ((i ** 0.5) + ((i + 1) ** 0.5))
    # 將 i 增加 1，進入下一圈迴圈
    i += 1

# 以四捨五入到小數點後四位的格式輸出結果
print('%.4f' % (tmp))

```



# Python 第4類：進階控制流程

## **401：最小值**
請撰寫一程式，由使用者輸入十個數字，然後找出其最小值，最後輸出最小值。

```python
num = []
for i in range(10):
    num.append(eval(input()))
print(min(num))
```

## **402：不定迴圈**
請撰寫一程式，讓使用者輸入數字，輸入的動作直到輸入值為9999才結束，然後找出其最小值，並輸出最小值。

```python
n= []
while True:
        value = eval(input())
        if value == 9999:
            break
        n.append(value)
print(min(n))
```

## **403：倍數總和計算**
請撰寫一程式，讓使用者輸入兩個正整數a、b（a<=b），輸出從a到b（包含a和b）之間4或9的倍數（一列輸出十個數字、欄寬為4、靠左對齊）以及倍數之個數、總和。

- \n：換段落

```python
myList = []
temp = 0 # 計算一行輸出了多少
a = eval(input())
b = eval(input())

for i in range(a, b+1):
    if i % 4 == 0 or i % 9 == 0:
        temp += 1
        myList.append(i)
        print("%-4d"%(i), end = "") # 先印在換行
        if temp % 10 == 0:
            print()
        
        
print("\n%d"%len(myList)) # 換行
print("%d"%(sum(myList)))
```

## **404：數字反轉判斷**
請撰寫一程式，讓使用者輸入一個正整數，將此正整數以反轉的順序輸出，並判斷如輸入0，則輸出為0。

- 數值解法
```python
n=eval(input())

if n ==0:
    print(0)
else:
    for i in range(0,len(str(n))):
        print(n%10,end="")
        n=n//10
    print()

```

- 字串解法
```python
n=str(input())
s=''.join(reversed(n))
print(s)

```


## **405：不定數迴圈-分數等級**
請撰寫一程式，以不定數迴圈的方式輸入一個正整數（代表分數），之後根據以下分數與GPA的對照表，印出其所對應的GPA。假設此不定數迴圈輸入-9999則會結束此迴圈。標準如下表所示：

分　數 GPA
90 ~ 100 A
80 ~ 89 B
70 ~ 79 C
60 ~ 69 D
0 ~ 59 E

```python
num = eval(input()) # 一開始輸入
while num != -9999:
    if num >= 90:
        print("A")
    elif num >= 80:
        print("B")
    elif num >= 70:
        print("C")
    elif num >= 60:
        print("D")
    else:
        print("E")
    num = eval(input()) # 判斷完，再繼續輸入num
```

## **406：不定數迴圈-BMI計算**
請撰寫一程式，以不定數迴圈的方式輸入身高與體重，計算出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
```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")
```

## **407：不定數迴圈-閏年判斷**
(1) 請撰寫一程式，以不定數迴圈的方式讓使用者輸入西元年份，然後判斷它是否為閏年（leap year）或平年。其判斷規則如下：每四年一閏，每百年不閏，但每四百年也一閏。
(2) 假設此不定數迴圈輸入-9999則會結束此迴圈。

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


## **408：奇偶數個數計算**
請撰寫一程式，讓使用者輸入十個整數，計算並輸出偶數和奇數的個數。

```python
even = odd = 0
for i in range(10):
    number = int(input())
    if number % 2 == 0:
        even += 1
    else:
        odd += 1

print("Even numbers: %d"%even)
print("Odd numbers: %d"%odd)
```

## **409：得票數計算**
某次選舉有兩位候選人，分別是No.1: Nami、No.2: Chopper。請撰寫一程式，輸入五張選票，輸入值如為1即表示針對1號候選人投票；輸入值如為2即表示針對2號候選人投票，如輸入其他值則視為廢票。每次投完後需印出目前每位候選人的得票數，最後印出最高票者為當選人；如最終計算有相同的最高票數者或無法選出最高票者，顯示【=> No one won the election.】。

```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.")
```



## **410：繪製等腰三角形**
請撰寫一程式，依照使用者輸入的n，畫出對應的等腰三角形。
![截圖 2024-05-04 17.45.07](https://hackmd.io/_uploads/B1k2XF7fC.png)

### 解法(1 
```python

num = int(input())

for i in range(num, 0, -1):
    print(' ' * (i - 1) + '*' * (1 + 2 * (num - i)))

```
### 解法(2
``` python

num = int(input())

for i in range(1, num + 1):
    print(" " * (num - i), end="")
    print("*" * (2 * i - 1))

```




# Python 第5類：函式(Function)

## **501：訊息顯示**
請撰寫一程式，呼叫函式compute()，該函式功能為讓使用者輸入系別（Department）、學號（Student ID）和姓名（Name）並顯示這些訊息。

```python
def compute():
    department = input()
    studentid =  input()
    name = input()
    print('Department:',department)
    print('Student ID:',studentid)
    print('Name:',name)
compute()
```


## **502：乘積**
請撰寫一程式，將使用者輸入的兩個整數作為參數傳遞給一個名為compute(x, y)的函式，此函式將回傳x和y的乘積。

解法(1
```python
def compute(x,y):
    return x*y
x = eval(input())
y = eval(input())
print(compute(x,y))
```
解法(2

```python
def compute():
    x=eval(input())
    y=eval(input())
    print(x*y)
compute()
```


## **503：連加計算**
請撰寫一程式，讓使用者輸入兩個整數，接著呼叫函式compute()，此函式接收兩個參數a、b，並回傳從a連加到b的和。


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


## **504：次方計算**
![截圖 2024-05-04 17.49.32](https://hackmd.io/_uploads/Bks3VFmf0.png)

```python
def compute():
    x=eval(input())
    y=eval(input())
    print(x**y)
compute()
```


## **505：依參數格式化輸出**
請撰寫一程式，將使用者輸入的三個參數，變數名稱分別為a（代表字元character）、x（代表個數）、y（代表列數），作為參數傳遞給一個名為compute()的函式，該函式功能為：一列印出x個a字元，總共印出y列。
 留言
 建議修訂
- 輸出的每一個字元後方有一空格。

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



## **506：一元二次方程式**
![截圖 2024-05-04 17.51.18](https://hackmd.io/_uploads/rkbmrtQMC.png)
- 輸出有順序性，回傳方程式的解，無須考慮小數點位數
- 判別式 提醒一下ㄉ 雖然你們會考完 應該比我還熟
![截圖 2025-02-06 14.05.36](https://hackmd.io/_uploads/SJU33Evbxx.png)
![image](https://hackmd.io/_uploads/rkOlpEvbgl.png)

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



## **507：質數**
請撰寫一程式，讓使用者輸入一個整數x，並將x傳遞給名為compute()的函式，此函式將回傳x是否為質數（Prime number）的布林值，接著再將判斷結果輸出。如輸入值為質數顯示【Prime】，否則顯示【Not Prime】。

```python
def compute(x):
    # 如果 x 小於等於 1，不是質數
    if x <= 1:
        return False
    
    # 從 2 到 x-1 檢查是否有其他因數
    for i in range(2, x):
        # 如果能被 i 整除，則不是質數直接傳回 False
        if x % i == 0:
            return False

    # 如果沒有其他因數，則是質數
    return True


# 從這裡輸入要測試的數
x = eval(input())

if compute(x)==True:
    print('Prime')
else:
    print('Not Prime')

```

## **508：最大公因數**
請撰寫一程式，讓使用者輸入兩個正整數x、y，並將x與y傳遞給名為compute()的函式，此函式回傳x和y的最大公因數。

- 輸入以 “,” 區隔

- 解一
```python
def compute(x,y):
    gcd=1
    if x>y:
        for i in range(1,x+1):
            if x%i==0 and y%i==0:
                gcd = i
    else:
        for i in range(1,y+1):
            if x%i==0 and y%i==0:
                gcd = i
    return gcd

     
x,y=eval(input())
print(compute(x,y))


```
- 直接套入 math 函數解法
- 解二
```python
import math 
def compute(x,y):
  return math.gcd(x,y)
x,y=eval(input())
print(compute(x,y))
```

## **509：最簡分數**
請撰寫一程式，讓使用者輸入二個分數，分別是x/y和m/n（其中x、y、m、n皆為正整數），計算這兩個分數的和為p/q，接著將p和q傳遞給名為compute()函式，此函式回傳p和q的最大公因數（Greatest Common Divisor, GCD）。再將p和q各除以其最大公因數，最後輸出的結果必須以最簡分數表示

```python
import math

x, y= eval(input())
m, n = eval(input())


# 通分(將兩數分子乘以對方的分母)
p = x * n + m * y
# 通分(分母)
q = y * n

# 找出通分後分子分母的最大公因數
result_gcd = math.gcd(q, p)
# 將分子除以最大公因數
new_p = p/result_gcd
# 將分母除以最大公因數
new_q = q/result_gcd


print("%d/%d + %d/%d = %d/%d"%(x, y, m, n, new_p, new_q))
```

## **510：費氏數列**
請撰寫一程式，計算費氏數列（Fibonacci numbers），使用者輸入一正整數num (num>=2)，並將它傳遞給名為compute()的函式，此函式將輸出費氏數列前num個的數值。

![截圖 2024-05-04 17.54.03](https://hackmd.io/_uploads/SkPaBY7fR.png)


```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 = ' ') 
```