我在试python时发现抱错,显示十进制文字无效并且把0标红了,这种情况改怎么解决啊
问题如下
1,a==0,dt==0,dt>0之后为中文的冒号,请使用英文的冒号
2,dt应为dt=b ** 2 * 4 * a * c
3,x1中的print应改为print("x1 = %0.2f"%(x1)),x2为print("x2 = %0.2f"%(x2))
4,x1改为x1=(-b+math.sqrt(dt))/2/a,x2改为x2=(-b-math.sqrt(dt))/2/a
正确代码如下
import math
a = float(input("请输入a:"))
b = float(input("请输入b:"))
c = float(input("请输入c:"))
dt=b*b-4*a*c
if a == 0:
if b != 0:
print("x = %0.2f"%(-c/b));
else:
print("此方程无实根")
else:
if dt == 0:
print("x1 = x2 = %0.2f"%(-b/2/a))
else:
if dt > 0:
x1=(-b+math.sqrt(dt))/2/a
x2=(-b-math.sqrt(dt))/2/a
print("x1 = %0.2f"%(x1))
print("x2 = %0.2f"%(x2))
else:
print("此方程有虚根")
根据你提供的图片,你的报错应该是因为if b!=0 :这句下面那行代码print("x = %0.2f"%(-c/b));后面那个分号是中文的分号导致;然后代码其他地方还有些问题,如判别式dt那里,以及几个求根的表达式那里不对,需要修改,修改如下:
参考资料:
python中print()函数里的%_hhhaoyi815的博客-CSDN博客_python中print%
import math
a = float(input("请输入a:"))
b = float(input("请输入b:"))
c = float(input("请输入c:"))
dt = b**2-4*a*c
if a==0:
if b!=0:
print("x=%0.2f"%(-c/b))
else:
print("此方程无实数根")
else :
if dt==0:
#http://m.chusan.com/zhongkao/91799.html
print("x1= x2 = %0.2f"%(-b/(2*a)))
else :
if dt >0:
#https://baijiahao.baidu.com/s?id=1722370687157957463&wfr=spider&for=pc
#https://baike.baidu.com/item/%E4%B8%80%E5%85%83%E4%BA%8C%E6%AC%A1%E6%96%B9%E7%A8%8B%E6%B1%82%E6%A0%B9%E5%85%AC%E5%BC%8F/56066624?fr=aladdin
x1 = ( -b +math.sqrt(dt))/(2*a)
x2 = ( -b -math.sqrt(dt))/(2*a)
print("x1 = %0.2f"% x1)
print("x2 = %0.2f"% x2)
else :
print("此方程有虚根")