由用户随意给定一元二次方程系数a、b、c,计算一元二次方程的解
import cmath #包含复数运算 import math import sys 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: #sys.float_info.epsilon是浮点数0 print("zero is not allowed") x = None except ValueError as err: print(err) return x print("ax\N{SUPERSCRIPT TWO} + bx + c = 0") #\N{name}给指定的Unicode字符 a = get_float("enter a: ", False) b = get_float("enter b: ", True) c = get_float("enter c: ", True) x1 = None x2 = None discriminant = (b ** 2) - (4 * a * c) if discriminant == 0: x1 = -(b / (2 * a)) else: if discriminant > 0: root = math.sqrt(discriminant) else: # discriminant < 0 root = cmath.sqrt(discriminant) x1 = (-b + root) / (2 * a) x2 = (-b - root) / (2 * a) equation = ("{0}x\N{SUPERSCRIPT TWO} + {1}x + {2} = 0" " \N{RIGHTWARDS ARROW} x = {3}").format(a, b, c, x1) if x2 is not None: equation += " or x = {0}".format(x2) print(equation)
原文地址:http://blog.csdn.net/a359680405/article/details/42846605