一元二次方程求解(包括复数各种情况)

/*无聊时候写的,我想每个入门的编程都会拿着个练手把,多的不说,我们来谈谈正经的——此功能实现一元二次方程求解,复数情况,输入字符处理判断是否为数字*/

import os
import math
import cmath

/*自定义mx函数,求解,*/

def mx(a,b,c):

mm = (b ** 2) - (4 * a * c)
if mm > 0:
print('此函数有两个解')
x1=(-b+math.sqrt(mm))/(2*a)
x2 = (-b - math.sqrt(mm)) / (2 * a)
print("{:.0f}x**2+{:.0f}x+{:.0f}的结果为:x={:.0f} 和 x={:.0f}".format(a,b,c,x1,x2))
elif mm ==0:
print('此方程只有一个解')
print("{:.0f}x**2+{:.0f}x+{:.0f}的结果为:x={:.0f}".format(a, b, c, (-b+math.sqrt(mm))/(2*a)))
elif mm <0:
x1=(-b+cmath.sqrt(mm))/(2*a)
x2 = (-b - cmath.sqrt(mm)) / (2 * a)
print("{:.0f}x**2+{:.0f}x+{:.0f}的结果为:x={:.0f} 和 x={:.0f}".format(a, b, c, x1, x2))
else :
print('无解')

/*自定义is_number函数,判断用户输入的字符类型是否为数字,是为true不是为false。*/

def is_number(s):

try:
float(s)
return True
except ValueError:
pass
try:
import unicodedata
unicodedata.numeric(s)
return True
except (TypeError, ValueError):
pass
return False

/*自定义panduan函数,如果用户输入的字符类型为数字,返回数字,如果不是数字,则提示要求重新输入知道输入的为字符为止,(提示这里用while来实现循环,如果用户输入的一直不是数字,将会一直走不出while,最好用or一下用户输入的最大次数,即是用户输入的最大次数)。*/

def panduan(xx):
if is_number(xx)==True:
return xx
else:
while is_number(xx)==False:
print('不是数字,请再次输入')
cc =input("请输入一个数:")
if is_number(cc)==True:
break
return cc

/*主程序——input输入数字,先用is_number判断是否为数字,如果不是,返回false,再用panduan来再次依靠is_number的值,来进行判断为false则要求用户重新输入,为true则返回用户输入的数字,其中在python中input的数字为字符型,需要用float来转换成数字。 */
print('此程序用于计算一元二次方程解,请依次输入三个数')
zz=input("是否要开始计算:yes/任意退出:")
while zz =='yes':
a=float(panduan(input("请输入第一个数:")))
b=float(panduan(input("请输入第二个数:")))
c=float(panduan(input("请输入第三个数:")))
mx(a,b,c)
zz = input("是否还要继续计算:yes/no——:")
if zz!='yes':
qq =input('确认退出计算界面?yes/任意键继续')
if qq == 'yes':
print('感谢使用。' ,end="")
else:
zz=input("是否要开始计算:yes/任意退出:")
else:
zz = input("是否继续计算:yes/no——:")

猜你喜欢

转载自www.cnblogs.com/gujianjian/p/12367359.html
今日推荐