iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
Python

一起來用 Snakify 練練手系列 第 19

【一起來用 Snakify 練練手】Day19 Lesson 8 練習題參考解答

  • 分享至 

  • xImage
  •  
  • The length of the segment
    😈 最基本的算距離,然後要定義一個函數去呼叫
def distance(x1, y1, x2, y2):
    return ((x1-x2)**2 + (y1-y2)**2)**0.5

x1 = float(input())
y1 = float(input())
x2 = float(input())
y2 = float(input())

print(distance(x1, y1, x2, y2))
from math import sqrt

def distance(x1, y1, x2, y2):
    return sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2)

x1 = float(input())
y1 = float(input())
x2 = float(input())
y2 = float(input())
print(distance(x1, y1, x2, y2))
  • Negative exponent
    😈 找索引值為偶數的項目
def power(a, n):
    res = 1
    for i in range(abs(n)):
        res *= a
    if n >= 0:
        return res
    else:
        return 1 / res

print(power(float(input()), int(input())))
  • Uppercase
    😈 把每個字的一個字母變大寫
def capitalize(lower_case_word):
    return lower_case_word.capitalize()
    
a = [i for i in input().split()]

for i in range(0, len(a)):
    a[i] = capitalize(a[i])
    
print(' '.join([str(i) for i in a]))
  • Exponentiation
    😈 次方
def power(a, n):
    return a**n
    
print(power(float(input()), int(input())))
  • Reverse the sequence
    😈 這一題會用到遞迴,所以我解釋一下
def f():
    a = int(input())  # 讀取輸入,轉換為整數並賦值給變數 a
    if (a != 0):      # 檢查 a 是否不等於 0
        f()           # 如果 a 不等於 0,遞迴調用函數 f()
    print(a)          # 輸出當前的 a

f()  # 初次調用函數 f()
  • 初次調用 f():
    使用者輸入一個整數值給 a。例如,假設輸入的是 3。
    程式會檢查 a != 0 是否成立,因為 3 不等於 0,所以程式會進行遞迴,再次調用 f()。

  • 第二次調用 f():
    再次要求使用者輸入一個數字,例如 2。
    因為 2 也不等於 0,因此程式再次調用自己,進行下一層遞迴。

  • 第三次調用 f():
    使用者輸入 1。
    由於 1 仍不等於 0,再次遞迴。

  • 第四次調用 f():
    假設這次輸入 0。
    因為 a == 0,這次不會再遞迴,而是直接進入 print(a),輸出 0,然後結束這次函數調用。

  • 返回遞迴的每一層:
    因為遞迴結束後程式會回到前一層調用,接著會執行前一層的 print(a)。
    第三層的 a 是 1,所以輸出 1。
    然後返回第二層,輸出 2。
    最後返回第一層,輸出 3。

  • Fibonacci numbers
    😈 這一題是最經典的題目

def fib(n):
    if (n == 1):  # 基本情況:如果 n 是 1,直接返回 1,因為 F(1) = 1
        return 1
    elif (n == 0):  # 基本情況:如果 n 是 0,直接返回 0,因為 F(0) = 0
        return 0
    # 遞迴計算:如果 n 大於 1,返回 F(n-1) + F(n-2)
    return fib(n - 1) + fib(n - 2)

# 程式會讀取一個使用者輸入的整數,並計算對應的斐波那契數
print(fib(int(input())))
  • 初始條件:
    使用者輸入一個整數 n,這是要計算的斐波那契數列的第 n 個數。

  • 基本情況:
    如果 n == 0,函數直接返回 0。
    如果 n == 1,函數直接返回 1。
    這是 遞迴的終止條件,也稱為「基底情況」,它防止遞迴無限進行。

  • 遞迴情況:
    如果 n > 1,函數會以遞迴方式調用自己兩次,分別計算 fib(n-1) 和 fib(n-2),然後將兩者相加來得到結果。
    這就是斐波那契數列的遞迴公式:F(n) = F(n-1) + F(n-2)。

  • 輸出結果:
    最後,程式將遞迴結果輸出,顯示第 n 個斐波那契數。


上一篇
【一起來用 Snakify 練練手】Day18 Lesson 8 概念
下一篇
【一起來用 Snakify 練練手】Day20 Lesson 9 概念
系列文
一起來用 Snakify 練練手30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言