Hỗ trợ: xuất hoá đơn GTGT 8%.
Móc khóa mica Tại Xưởng
2.100+ Đã đặt hàng

Móc Khóa Mica & Standee

In Anime, Logo Trường, Lớp Học
MUA 1 TẶNG 1 HÔM NAY
Free Thiết Kế Freeship từ 10c

Viết chương trình con giải phương trình bậc 2 tổng quát bằng Python (thêm câu lệ…

Viết chương trình con giải phương trình bậc 2 tổng quát bằng Python (thêm câu lệ…

Viết chương trình con giải phương trình bậc 2 tổng quát bằng Python (thêm câu lệnh lặp lại chương trình)
Hỏi bởi: Vũ Huy
3 câu trả lời
▲ 4✔
Chào các em học sinh thân mến! Hôm nay, thầy trò chúng ta sẽ cùng nhau giải một bài tập rất thú vị trong chương trình Tin học lớp 10, đó là viết chương trình con giải phương trình bậc hai tổng quát bằng Python.

Các em còn nhớ phương trình bậc hai tổng quát có dạng như thế nào không? Đó là:
ax^2 + bx + c = 0

Trong đó, a, b, c là các hệ số, và a khác 0.

Chúng ta sẽ cùng nhau đi từng bước để xây dựng chương trình này nhé.

Bước 1: Nhập dữ liệu đầu vào
Đầu tiên, chương trình cần phải nhận được các hệ số a, b, c từ người dùng. Chúng ta sẽ sử dụng hàm \(input()\) để thực hiện việc này. Vì các hệ số này có thể là số thập phân, nên chúng ta sẽ chuyển đổi chúng sang kiểu dữ liệu \(float\).

python
a = float(input(“Nhập hệ số a: “))
b = float(input(“Nhập hệ số b: “))
c = float(input(“Nhập hệ số c: “))

Bước 2: Kiểm tra trường hợp đặc biệt khi a = 0
Theo định nghĩa, phương trình bậc hai yêu cầu hệ số a phải khác 0. Nếu a = 0, thì phương trình trở thành bx + c = 0, đây là phương trình bậc nhất. Chúng ta cần xử lý trường hợp này.

Nếu a = 0 và b cũng bằng 0:
– Nếu c = 0, thì phương trình có vô số nghiệm.
– Nếu c khác 0, thì phương trình vô nghiệm.
Nếu a = 0 và b khác 0:
– Phương trình có một nghiệm duy nhất là \(x = -c/b\).

Bước 3: Tính Delta (Δ)
Đây là bước quan trọng nhất để xác định số nghiệm của phương trình bậc hai. Delta được tính theo công thức:
\[ \Delta = b^2 – 4ac \]

Chúng ta sẽ lưu giá trị này vào một biến tên là \(delta\).

python
delta = b**2 – 4*a*c

Bước 4: Xét các trường hợp dựa vào giá trị của Delta
Dựa vào giá trị của Delta, chúng ta sẽ có các trường hợp sau:

Trường hợp 1: Delta > 0
Phương trình có hai nghiệm phân biệt được tính theo công thức:
\[ x_1 = \frac{-b + \sqrt{\Delta}}{2a} \]
\[ x_2 = \frac{-b – \sqrt{\Delta}}{2a} \]
Để tính căn bậc hai của Delta, chúng ta sẽ sử dụng hàm \(math.sqrt()\). Vì vậy, chúng ta cần nhập thư viện \(math\) ở đầu chương trình.

Trường hợp 2: Delta = 0
Phương trình có nghiệm kép (hai nghiệm bằng nhau):
\[ x = \frac{-b}{2a} \]

Trường hợp 3: Delta < 0 Phương trình vô nghiệm thực. Tuy nhiên, nếu chúng ta học sâu hơn về số phức, phương trình sẽ có hai nghiệm phức liên hợp. Trong phạm vi chương trình lớp 10, chúng ta sẽ thông báo là phương trình vô nghiệm thực. Bước 5: Xây dựng chương trình con (Hàm)
Để chương trình được gọn gàng và dễ tái sử dụng, chúng ta sẽ đóng gói các bước trên vào một hàm. Tên hàm có thể là \(giai_phuong_trinh_bac_hai\). Hàm này sẽ nhận vào ba tham số là \(a\), \(b\), \(c\).

python
import math

def giai_phuong_trinh_bac_hai(a, b, c):
if a == 0:
# Xử lý trường hợp phương trình bậc nhất
if b == 0:
if c == 0:
print(“Phương trình có vô số nghiệm.”)
else:
print(“Phương trình vô nghiệm.”)
else:
x = -c / b
print(f”Đây là phương trình bậc nhất. Nghiệm là x = {x}”)
else:
delta = b**2 – 4*a*c
print(f”Delta = {delta}”)

if delta > 0:
x1 = (-b + math.sqrt(delta)) / (2*a)
x2 = (-b – math.sqrt(delta)) / (2*a)
print(f”Phương trình có hai nghiệm phân biệt:”)
print(f”x1 = {x1}”)
print(f”x2 = {x2}”)
elif delta == 0:
x = -b / (2*a)
print(f”Phương trình có nghiệm kép:”)
print(f”x = {x}”)
else:
print(“Phương trình vô nghiệm thực.”)

Bước 6: Thêm câu lệnh lặp lại chương trình
Để người dùng có thể giải nhiều phương trình liên tiếp mà không cần chạy lại toàn bộ chương trình, chúng ta sẽ sử dụng câu lệnh lặp \(while\). Chúng ta sẽ sử dụng một biến cờ (ví dụ: \(tiep_tuc\)) để kiểm soát vòng lặp.

python
import math

def giai_phuong_trinh_bac_hai(a, b, c):
if a == 0:
# Xử lý trường hợp phương trình bậc nhất
if b == 0:
if c == 0:
print(“Phương trình có vô số nghiệm.”)
else:
print(“Phương trình vô nghiệm.”)
else:
x = -c / b
print(f”Đây là phương trình bậc nhất. Nghiệm là x = {x}”)
else:
delta = b**2 – 4*a*c
print(f”Delta = {delta}”)

if delta > 0:
x1 = (-b + math.sqrt(delta)) / (2*a)
x2 = (-b – math.sqrt(delta)) / (2*a)
print(f”Phương trình có hai nghiệm phân biệt:”)
print(f”x1 = {x1}”)
print(f”x2 = {x2}”)
elif delta == 0:
x = -b / (2*a)
print(f”Phương trình có nghiệm kép:”)
print(f”x = {x}”)
else:
print(“Phương trình vô nghiệm thực.”)

# Vòng lặp chính của chương trình
tiep_tuc = “yes”
while tiep_tuc.lower() == “yes”:
print(“\n— Giải Phương Trình Bậc Hai —“)
try:
a = float(input(“Nhập hệ số a: “))
b = float(input(“Nhập hệ số b: “))
c = float(input(“Nhập hệ số c: “))

giai_phuong_trinh_bac_hai(a, b, c)

except ValueError:
print(“Lỗi nhập liệu. Vui lòng chỉ nhập số.”)

tiep_tuc = input(“Bạn có muốn giải phương trình khác không? (yes/no): “)

print(“Cảm ơn bạn đã sử dụng chương trình!”)

Trong đoạn mã trên:
– Chúng ta sử dụng \(while tiep_tuc.lower() == “yes”:\) để lặp lại. \(tiep_tuc.lower()\) đảm bảo rằng dù người dùng nhập “Yes”, “YES”, hay “yes” thì chương trình vẫn hiểu.
– Phần \(try…except ValueError\) được thêm vào để bắt lỗi nếu người dùng nhập không phải là số, giúp chương trình không bị dừng đột ngột.

Vậy là chúng ta đã hoàn thành chương trình giải phương trình bậc hai tổng quát bằng Python, có bao gồm cả chức năng lặp lại chương trình. Các em về nhà thực hành và thử với nhiều bộ hệ số khác nhau nhé! Có bất kỳ câu hỏi nào, các em cứ mạnh dạn hỏi thầy.

Trả lời bởi: Giáo viên Chuyên Môn
▲ 1
from math import *
def gpt(a,b,c):
    if a == 0 and b == 0 and c == 0:
        return 'Phương trình vô số nghiệm'
    elif a!=0:
        delta = b*b - 4*a*c
        if delta == 0:
            return f'Phương trình có nghiệm:x =  {-b/(2*a)}'
        if delta > 0:
            return f'Phương trình có hai nghiệm phân biệt:\n x1 = {(-b+sqrt(delta) )/(2*a)}; x2 = { (-b-sqrt(delta) )/(2*a) }'
        if delta < 0:
            return f'Phương trình vô nghiệm'
    elif a == 0 and b == 0:
            return 'Phương trình vô nghiệm'
    else:
        return f'Phương trình có nghiệm duy nhất:\n x = {-c/b}'
while True:
    a = float(input('Nhập a='))
    b = float(input('Nhập b='))
    c = float(input('Nhập c='))
    print(gpt(a,b,c))

 

Trả lời bởi:
▲ 0
import math
def tinh(a,b,c):
    if a==0: 
        return "Vo nghiem!" if b==0 else f"Nghiem: x={-c/b:.2f}"
    d=b**2-4*a*c
    if d<0: return "Vo nghiem!"
    if d==0: return f"Nghiem kep: x={-b/(2*a):.2f}"
    x1,x2=(-b+math.sqrt(d))/(2*a),(-b-math.sqrt(d))/(2*a)
    return f"Nghiem: x1={x1:.2f}, x2={x2:.2f}"
while True:
    a,b,c=map(float,input().split())
    print(tinh(a,b,c))
Trả lời bởi:

Viết một bình luận

Cam kết từ xưởng
Cam kết giải quyết 100% sự cố và có test màu, test mẫu
Test màu Test mẫu
Đơn hàng gặp vấn đề (tracking, hàng lỗi, in sai, thiếu sót)? Chúng tôi sẵn sàng hỗ trợ bạn!
Hỗ trợ qua Zalo ngay
Test màu
Kiểm tra màu trước khi in hàng loạt, tránh lệch so với thiết kế.
Test mẫu
Duyệt mẫu thực tế trước khi sản xuất số lượng lớn.
Đổi trả & hoàn tiền
Hàng lỗi hoặc in sai được xử lý theo chính sách rõ ràng.
Hỗ trợ tracking
Đơn chậm hoặc thiếu mã vận đơn, nhắn Zalo để được kiểm tra ngay.
WhatsApp
Facebook
Chat Zalo
Zalo
097.538.4646
Zalo
Giới Thiệu Xưởng In