解一元二次方程(内含一元一次方程)
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)(加不加括号都行)。