mong mọi người giúp mình với.vừa rồi mình có viết code trên python nhưng không hiểu sao lại gặp lỗi này. mình có chạy thử trên trang web python online nhưng không vấn đề gì. Hiện tại mình đang chạy trên sublime text 4 và code lỗi nhưng thế này:
from math import sqrt
f1 = open("PTB2.INP","r")
f2 = open("PTB2.OUT","w")
n = f1.readline()
def fd(k):
dot = k.find(".")
if len(k[dot:]) <= 2:
return k + "0"
for i in range(int(n)):
t = f1.readline()
t = t.replace("\n","")
t = t.split(" ")
a = float(t[0])
b = float(t[1])
c = float(t[2])
if a == b == c == 0 or a == b ==0:
f2.write("Vo so nghiem\n")
elif a == c == 0 or b == c == 0:
f2.write("0 0\n")
elif c == 0:
kq = str(round((-b)/a,2))
f2.write("0 " + fd(kq) + "\n")
elif a == 0:
kq = str(round((-c)/b,2))
f2.write(fd(kq)+" "+fd(kq)+"\n")
else:
dt = b*b-4*a*c
if dt < 0:
f2.write("Vo nghiem\n")
elif dt == 0:
kq = str((round((-b)/(2*a),2)))
f2.write(fd(kq)+" "+fd(kq)+"\n")
else:
dt = round(sqrt(dt),2)
kq1 = str(round((-b+dt)/(2*a),2))
kq2 = str(round((-b-dt)/(2*a),2))
f2.write(fd(kq1)+" "+fd(kq2)+"\n") # dòng này bị lỗi
f1.close()
f2.close()
dòng “f2.write(fd(kq1)+” “+fd(kq2)+”\n")" bị máy báo lỗi “TypeError: unsupported operand type(s) for +: ‘NoneType’ and ‘str’ “, bỏ fd() đi thì không sao, thêm vào là bị như vậy, mặc dù ở phía trên có thêm nhưng vẫn bị lỗi ( chẳng hạn như dòng này f2.write(fd(kq)+” “+fd(kq)+”\n”))
bộ text của mình
7
10.00 0.67 6.00
3.00 1.14 0.33
0.60 6.00 4.00
0.30 1.80 0.67
0.60 0.90 0.83
0.29 2.50 0.433
5.00 0.33 1.25
còn đề thì bảo “tìm nghiệm của phương trình bậc hai, lấy hai chữ số thập phân”
đáp án bộ text trên
Vo nghiem
Vo nghiem
-0.72 -9.28
-0.4 -5.6
Vo nghiem
-0.17 -8.45
Vo nghiem