Python练习:一元二次方程计算

题目:输入三个数,求一元二次方程ax**2 + bx +c = 0的解

# 一元二次方程计算程序,接受a、b、c的值,输出二元一次方程结果。
import math

def calculate(a,b,c):
    #计算一元二次方程
    shi = b*b - 4*a*c
    if shi >= 0:
        shi = math.sqrt(shi)
        result1 = (-b+shi)/(2*a)
        result2 = (-b-shi)/(2*a)
        return print('x1={},x2={}。'.format(result1,result2))
    else:
        return print('这个式子无解。')

while True:
    abc = []
    for i in range(3):
        a = input("请依次输入abc的值(这是第{}次输入):".format(i+1))
        abc.append(a)
    a,b,c = map(int,abc)
    calculate(a,b,c)
    flag = input('输入‘q’退出,输入其他键继续:')
    if flag == 'q':
        break

第一版遭遇了“ValueError: math domain error”错误,原因是在判别式里直接计算了二次方根,出现了根号内小于零的数学错误。

shi = math.sqrt(b*b - 4*a*c)

将二次方根计算移到条件判断之后就解决了。

shi = b*b - 4*a*c
if shi >= 0:
        shi = math.sqrt(shi)

你可能感兴趣的:(Python练习实例)