python解一元二次方程

解一元二次方程(内含一元一次方程)

import math
def one_unknow(chengxu):
    x_index = chengxu.index('x')
    deng = chengxu.index('=')
    add = chengxu.index('+') 
    a_list = chengxu[deng+1:]
    a = ''
    b = ''
    for a_index in range(len(a_list)):
        if a_list[a_index] == '('or a_list[a_index] == ')':
            pass
        else:
            a = a+a_list[a_index]
    a = float(a)
    b_list = chengxu[add+1:deng]
    for b_index in range(len(b_list)):
        if b_list[b_index] == '('or b_list[b_index] == ')':
            pass
        else:
            b = b+b_list[b_index] 
    b = float(b)
    a = a-b
    if chengxu[x_index] != chengxu[0]:
        k = ''
        k_list = chengxu[:x_index]
        for k_index in range(len(k_list)):
                k = k+k_list[k_index]
        k = float(k)
        a = a/k
    print('方程'+fangcheng+'的解为'+str(a))



def one_unknow2(chengxu):
    a = '0'
    b = '0'
    c = '0'
    x_index2 = chengxu.index('x')
    add1 = chengxu.index('+')
    deng = chengxu.index('=')
    big_list = chengxu[add1+1:deng]
    x_index1 = big_list.index('x')
    if chengxu[x_index2] != chengxu[0]:
        a_list = chengxu[:x_index2]
        for a_index in range(len(a_list)):
                a = a+a_list[a_index]
        if '-' in a and a[0] == '0':
            a = a[1:]
        if a == '-':
            a = '-1'
        a = float(a)
    else:
        a = 1
    if chengxu[add1+1] != 'x':
        b_list = big_list[:x_index1]
        for b_index in range(len(b_list)):
                b = b+b_list[b_index]
        if '-' in b and b[0] == '0':
            b = b[1:]
        if b == '-':
            b = '-1'
        b = float(b)
    else:
        b = 1
    if '+' in big_list:
        add2 = big_list.index('+')
        c_list = big_list[add2+1:]
        for c_index in range(len(c_list)):
            if c_list[c_index] == '('or c_list[c_index] == ')':
                pass
            else:
                c = c+c_list[c_index]
        if '-' in c and c[0] == '0':
            c = c[1:]
        if c == '-':
            c = '-1'
        c = float(c)
    else:
        c = 0
    d = b*b - 4*a*c
    if d < 0:
        print(fangcheng+',此方程在实数范围内无解。')
    else:
        x1 = (-1*b+math.sqrt(d))/2*a
        x2 = (-1*b-math.sqrt(d))/2*a
        if x1 == x2:
            print(fangcheng+',此方程唯一解为'+str(x1))
        else:
            print(fangcheng+',此方程的第一个解为'+str(x1)+',第二个解为'+str(x2))
print('注1:一元一次务必为kx+b=a形式,一元二次为ax^2+bx+c=0形式。') 
question = input('解一元一次(1),一元二次(2)')
chengxu = []
fangcheng = input('请输入方程式: ')
for i in fangcheng:
    chengxu.append(i)
if question == '1':
    one_unknow(chengxu)
elif question =='2':
    one_unknow2(chengxu)

强调一点:减去一个数时要写成加它的相反数。如2 - 3要写成2 + (-3)(加不加括号都行)。

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值