【Python實作】求一元二次方程式的根

Python實作_求一元二次方程式的根

目的:練習if/else函數、數學運算子

題目:求一元二次方程式 ax2+bx+c=0 的根,讓使用者輸入abc

邏輯規劃:

1、使用 input() 讓使用者輸入 a, b, c,並轉成 float。然後因為是"一元二次方程式",所以a不能等於0,要寫一個if防呆。

 

2、計算判別式:D = b**2 - 4*a*c

其結果可以分三種情況:

D > 0:有兩個不相等的實數解

D == 0:有一個實數重根

D < 0:沒有「實數解」,可以提示使用者

 

3、實數的兩個解(數學知識),一個是(-b + D**0.5) / (2*a);另一個是(-b + D**0.5) / (2*a)

 

#程式開始

# 求一元二次方程式 ax^2 + bx + c = 0 的根

 

# 輸入係數

a = float(input("請輸入 a"))

b = float(input("請輸入 b"))

c = float(input("請輸入 c"))

 

# 判斷是否為一元二次方程式(防呆)

if a == 0:

    print("a 不能為 0,這就不是一元二次方程式了!")

else:

    # 計算判別式

    D = b**2 - 4*a*c

 

    # 根的情況判斷

    if D > 0:

        # 兩個不相等的實數解

        x1 = (-b + D**0.5) / (2*a)

        x2 = (-b - D**0.5) / (2*a)

        print(f"有兩個實數解:x1 = {x1}, x2 = {x2}")

    elif D == 0:

        # 一個實數重根

        x = -b / (2*a)

        print(f"有一個重根:x = {x}")

    else:

        # 無實數解

        print("沒有實數解(判別式小於 0)。")

 

#程式結束

 

程式執行結果:

(第一次)

請輸入 a1

請輸入 b3

請輸入 c-10

有兩個實數解:x1 = 2.0, x2 = -5.0

 

(第二次)

請輸入 a2

請輸入 b2

請輸入 c2

沒有實數解(判別式小於 0)。

 

(第三次)

請輸入 a1

請輸入 b0

請輸入 c0

有一個重根:x = -0.0

 

結論:「其實我覺得像這種"可以簡化成固定公式"的數學題目,用程式做都不會太難。畢竟有了公式之後,剩下的就只是計算而已,而那恰恰是程式最擅長的。」

 

 

留言

這個網誌中的熱門文章

常見的化痰粉愛克痰(小鳥粉)怎麼吃?|化痰粉成人及小孩的使用劑量|紅色與藍色比較

麻將教學懶人包|從規則到牌理的完整觀念整理(附實戰心得)

麻將新手必看!不知道聽什麼牌怎麼辦?超多種實戰聽牌範例,教你怎麼判斷胡牌機會