TQC題庫-第五大類_函式

這篇文章是個程式挑戰指南!文章中分別探討了五個有趣的問題解法:從費氏數列的簡單計算、不拘一格找最大公因數,到國中數學中的二次方程式解法,最後則介紹了如何用自訂函式進行數字運算。透過Python,這些問題都能用簡潔的程式碼來解決,這可是個絕佳練習機會!

解題重點

此類可以不用使用函式(Function),不過還是會用502與504來進行介紹,不然這兩題太污辱人了

510

費氏數列會固定起始的a0a1 ,接者每個下一項都是前兩項的和,比如a2 = a0 + a1

Image

可以重複使用a0a1

1
2
3
4
5
6
7
8
a0=0
a1=1
a2=a0+a1
a0=a1
a1=a2
a3=a0+a1
...

1
2
3
4
5
6
7
8
9
num = int(input())
a0=0
a1=1
for i in range(num):
print(a0,end=' ')
a2=a0+a1
a0=a1
a1=a2

更簡單的解法,利用Python的特性將交換這件事情簡化:

1
2
3
4
5
6
num = int(input())
a0, a1 = 0, 1

for _ in range(num):
print(a0, end=' ')
a0, a1 = a1, a0 + a1

508

共同公因數從哪個數字開始找都可以,

由後面開始找:由後面開始找,找到可以共同被整除的值就是GCD最大公因數,立即跳出迴圈

由前面開始找:從頭開始找所有共同因數,最後一個是GCD最大公因數

Image

從後面開始找:

1
2
3
4
5
6
7
a, b = eval(input())
gcd = 1
for i in range(b,0,-1):
if a % i == 0 and b % i == 0:
gcd = i
break
print(gcd)

從前面開始找:

1
2
3
4
5
6
a, b = eval(input())
gcd = 1
for i in range(1, b + 1):
if a % i == 0 and b % i == 0:
gcd = i
print(gcd)

更簡單的方式用內建的math函式

1
2
3
import math
a, b = eval(input())
print(math.gcd(a,b))

506

就是國中數學

1
2
3
4
5
6
7
8
9
10
a, b, c = eval(input()), eval(input()), eval(input())
r = b**2 - 4 * a * c
if r > 0:
ans1 = (-b + r**0.5) / (2 * a)
ans2 = (-b - r**0.5) / (2 * a)
print(f'{ans1}, {ans2})'
elif r == 0:
print(f'{-b/(2*a)})'
else:
print('Your equation has no root.')

502, 504

print(), input(), int()…都是函式,本題組最大用意是要會「自訂函式」。

下圖為自訂一個函式compute() 的方式,compute() 內參數放幾個也是可以自定義的。

Image

1
2
3
4
5
6
7
8
def compute(a, b):
return a * b


x = eval(input())
y = eval(input())
a = compute(x, y)
print(a)
1
2
3
4
5
6
7
def compute(x, y):
return x**y

a = eval(input())
b = eval(input())
z = compute(a, b)
print(z)

只是為了檢定的話可以寫成

1
2
3
a = eval(input())
b = eval(input())
print(a**b)

TQC題庫-第五大類_函式
https://codinglu.tw/2025/03/tqc-question-bank-fifth-category-functions-tqc-certification/
作者
阿盧
發布於
2025年3月17日
許可協議
📌 本文瀏覽量: 0