利用Python求二次方程

        现利用Python求二次方程 ax^2 + bx + c = 0 得出x的值,把这个方程式变一下形就是(尼玛,打字打不出来只有用图片代替咯):, 其中根号下的b^2-4ac就是一个判别式,如果判别式的值为0则x只有一个值,如果判别式的值不为0,则x的值就有两个,大于0时是两个实数根,小于0时是两个复数根。现要设计一个程式来输入a、b、c三个参数,且a不能为0(因为它作为除数),算出x的值为多少。

        为了实现这一目的,我们首先要规划好程式的概要结构体,设计一个方法负责从键盘输入一个浮点数。还要设计一个程式的核心部分就是计算x的值,好了,说了这么多,该拿出代码来了,代码上每行代码都有相应注释。

源代码:

#Author Tandaly
#Date 2013-04-08
#File Quadratic.py

#引入相关包
import sys
import math
import cmath

#从键盘获取一个浮点数
def get_float(msg, allow_zero):
	x = None
	while x is None:
		try:
			x = float(input(msg))	#从键盘输入一个浮点数
			if not allow_zero and abs(x) < sys.float_info.epsilon:	#不能为零操作
				print("**不能为0**")
				x = None
		except ValueError:
			print("**请输入浮点数或者整数**")
			x = None
	return x

#计算二次方程
def cal_quadratic(a, b, c):
	x1 = None	#根1
	x2 = None	#根2
	d = b ** 2 - 4 * a * c 	#判别式 = b^2 - 4ac
	if d == 0:	#判别式为0,只有一个根
		x1 = -b/(2 * a)	
	else:	#判别式不为0,有两个根
		if d > 0:		#判别式大于0,利用math开方
			root = math.sqrt(d)
		else:	#判别式小于0,利用cmath开方
			root = cmath.sqrt(d)
		x1 = (-b + root)/(2 * a)	#得出根1
		x2 = (-b - root)/(2 * a)	#得出根2
	#利用str.format()格式化打印
	info = "{0}x^2 + {1}x + {2} = 0 -->".format(a, b, c)
	info += " x1 = {0}".format(x1)
	if x2 is not None:
		info += " or x2 = {0}".format(x2)
	print(info)

if __name__ == "__main__":
	#expression = "ax\N{SUPERSCRIPT TWO} + bx + c = 0" #此行在dos下无法输出 估计是编码问题
	expression = "ax^2 + bx + c = 0"	#二次方程表达式
	print(expression)
	a = get_float("请输入a:", False)	#输入a且不能为0
	b = get_float("请输入b:", True)	#输入b且可以为0
	c = get_float("请输入c:", True)		#输入c且可以为0

	cal_quadratic(a, b, c)	#调用计算二次方程方法


运行结果:

>>> 
ax^2 + bx + c = 0
请输入a:2.5
请输入b:0
请输入c:-7.25
2.5x^2 + 0.0x + -7.25 = 0 --> x1 = 1.7029386365926402 or x2 = -1.7029386365926402










作者:Tandaly

地址:http://blog.csdn.net/tandaly/article/details/8780943

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值