Trang chủ Tin Học Lớp 10 Tìm lỗi và sửa lại: def gptb2(x,y,z): d=y*y-4*x*z if(d<0): print('Pt...

Tìm lỗi và sửa lại: def gptb2(x,y,z): d=y*y-4*x*z if(d<0): print('Pt vô nghiệm') else: print(' Pt có 2 nghiệm') gptb2(7,8,9) gptb2(1,2,9) a=input('a=') b

Câu hỏi :

Tìm lỗi và sửa lại: def gptb2(x,y,z): d=y*y-4*x*z if(d<0): print('Pt vô nghiệm') else: print(' Pt có 2 nghiệm') gptb2(7,8,9) gptb2(1,2,9) a=input('a=') b=input('b=') c=input('c=') print(gptb2(a,b,c))

Lời giải 1 :

`***` Code của bạn có tác dụng đánh giá xem phương trình `a^2 x + bx + c` vô nghiệm hay có nghiệm.

`*` Về mặt lỗi do code: 

`-` Hàm gptb2 là 1 hàm thủ tục. Hàm này không trả về bất kì giá trị nào. Thay vào đó nó sẽ thực hiện 1 đoạn code đã được cài đặt trong nó. 

Như code trên, nó sẽ in ra Pt vô nghiệm hoặc Pt có 2 nghiệm.

Vì nó không trả về bất kì giá trị nào, nên ta không thể in ra hàm đó, mà gọi nó ra như gptb2(7,8,9), gptb2(1,2,9).

`+` Fix: Thay print(gptb2(a,b,c)) bằng gptb2(a,b,c)

`-` Tham số nhập vào hàm gptb2 là kiểu dữ liệu số nguyên. Nhưng hàm input() lại chỉ trả về kiểu dữ liệu xâu nên ta không thể đưa tham số vào hàm gptb2.

`+` Fix: Thay a=input('a=') thành a=int(input('a=')). Tương tự với b, c

`*` Về mặt logic:

`-` Ta vẫn còn 1 trường hợp nữa chưa xét là phương trình có nghiệm kép.

Phương trình có nghiệm kép khi `d = 0`

`*` Đây là code sau khi sửa tất cả các lỗi trên

def gptb2(x, y, z):
    d = y * y - 4 * x * z
    if d < 0:
        print('Pt vo nghiem')
    elif d == 0:
        print('Pt co 1 nghiem kep')
    else:
        print('Pt co 2 nghiem')

gptb2(7, 8, 9)
gptb2(1, 2, 9)
a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
gptb2(a, b, c)

Lời giải 2 :

`\color{red}{\text{@hoangduy67}}`

Hàm gptb2 không trả về giá trị nào cả chỉ in ra kết quả mình nghĩ nên sửa hàm này để trả về kết quả thay vì in ra còn hàm input trả về một chuỗi không phải một số mình nghĩ nên chuyển đổi kiểu dữ liệu của biến a, b, c sang kiểu số trước khi truyền chúng vào hàm gptb2 và muốn in ra kết quả của hàm gptb2 nên cần sử dụng lệnh print để in ra giá trị trả về của hàm

Code đã sửa:

def gptb2(x,y,z):
    d=y*y-4*x*z
    if(d<0): return 'Pt vô nghiệm'
    else: return ' Pt có 2 nghiệm'

a=float(input('a='))
b=float(input('b='))
c=float(input('c='))
print(gptb2(a,b,c))

Bạn có biết?

Tin học là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng. Tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin. Hãy tận dụng sức mạnh của tin học để giải quyết các vấn đề và sáng tạo ra những giải pháp mới!

Nguồn :

Wikipedia - Bách khoa toàn thư

Tâm sự lớp 10

Lớp 10 - Năm đầu tiên ở cấp trung học phổ thông, chúng ta sẽ có nhiều bạn bè mới đến từ những nơi khác nhau. Ngôi trường mới, xa nhà hơn, mở ra một thế giới mới với nhiều điều thú vị. Hãy mở lòng đón nhận và tận hưởng những trải nghiệm mới!

Nguồn :

sưu tập

Liên hệ hợp tác hoặc quảng cáo: gmail

Điều khoản dịch vụ

Copyright © 2021 HOCTAPSGK