# TQC Python3 參考解答 #### 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 == 0: 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(80<= n<=100) : print('A') elif(70 <= n<80) : print('B') elif(60<= 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 = int(input()) # 數字的原始樣貌 temp = n # 做一個數字的複製品 while temp > 0: ans += temp % 10 # 取出最後一位數字 temp //= 10 # 去掉最後一位 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('BMI: %.2f'%(BMI)) 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) 解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 n = int(input()) a, b = 0, 1 for i in range(n): print(a, end=' ') temp = a + b a = b b = temp ```