Python:解一元二次方程(带分数和根号结果!)

  • 利用Python解一元二次方程
  • 完善方程的系数
  • 定义函数开方后是否为整数(在试了n次后终于搞定如何判断开方为整数类型)
  • 定义函数取整开方后的数
  • 判断根的情况
  • 附上源代码
  • 打包后效果图
  • 打包指令(能用就用,就不上就算了)


利用Python解一元二次方程

完善方程的系数

from math import sqrt		# 调用开方的函数
print("解方程 aX^2 + bX +c = 0")
a = int(input("请输入 a 的值(自行转化为整数) : "))
b = int(input("请输入 b 的值(自行转化为整数) : "))
c = int(input("请输入 c 的值(自行转化为整数) : "))
d = b ** 2 - a * c * 4  # 判断δ情况
a0 = a * 2

定义函数开方后是否为整数(在试了n次后终于搞定如何判断开方为整数类型)

定义函数取整开方后的数

def is_sqr(x):  # 判断δ开方后是否为整数
    num1 = sqrt(x)
    return int(num1) == num1


def sqr(x):     # 将开方后的δ取整
    num2 = sqrt(x)
    return int(num2)

判断根的情况

自创强制分数形式 /酷

if d < 0:
    print("此方程无实数根")
elif d == 0:
    print("此方程仅有一个实数根")
    print("      ", -b, "\n", "X =-------", "\n", "      ", 2 * a, sep="")      # 强制转化为分数形式
elif d > 0:
    print("此方程有两个实数根")
    if is_sqr(d):   # 当δ为能开尽时
        s1 = -b + sqr(d)
        s2 = -b - sqr(d)
        x1 = s1 / a0    # 方程的根1
        x2 = s2 / a0    # 方程的根2
        if s1 % a0 == 0 and s2 % a0 == 0:   # 两根都是整数
            print("X1 = ", x1, "\n",)
            print("X2 = ", x2, "\n",)
        elif s1 % a0 == 0 and s2 % a0 != 0:     # 有一根为整数
            print("X1 = ", x1, "\n",)
            print("      ", -b - sqrt(d), "\n", "X2 =-------", "\n", "      ", a0, "\n", sep="")
        elif s1 % a0 != 0 and s2 % a0 == 0:     # 有一根为整数
            print("      ", -b + sqrt(d), "\n", "X1 =-------", "\n", "      ", a0, "\n", sep="")
            print("X2 = ", x2, "\n",)
        else:       # 两根都为浮点数时
            print("      ", -b + sqrt(d), "\n", "X1 =-------", "\n", "      ", a0, "\n", sep="")
            print("      ", -b - sqrt(d), "\n", "X2 =-------", "\n", "      ", a0, "\n", sep="")
    else:       # 当δ为开不尽时
        print("      ", -b, "+ √", d, "\n", "X1 =-------", "\n", "      ", a0, "\n", sep="")
        print("      ", -b, "- √", d, "\n", "X2 =-------", "\n", "      ", a0, "\n", sep="")
input("按Enter键退出")

网上大部分解一元二次方程的代码大多结果为浮点数
对于一般函数带根号结果没有什么用
我在此制作了可以带根号的结果

附上源代码

from math import sqrt
print("解方程 aX^2 + bX +c = 0")
a = int(input("请输入 a 的值(自行转化为整数) : "))
b = int(input("请输入 b 的值(自行转化为整数) : "))
c = int(input("请输入 c 的值(自行转化为整数) : "))
d = b ** 2 - a * c * 4  # 判断δ情况
a0 = a * 2


def is_sqr(x):  # 判断δ开方后是否为整数
    num1 = sqrt(x)
    return int(num1) == num1


def sqr(x):     # 将开方后的δ取整
    num2 = sqrt(x)
    return int(num2)


if d < 0:
    print("此方程无实数根")
elif d == 0:
    print("此方程仅有一个实数根")
    print("      ", -b, "\n", "X =-------", "\n", "      ", 2 * a, sep="")      # 强制转化为分数形式
elif d > 0:
    print("此方程有两个实数根")
    if is_sqr(d):   # 当δ为能开尽时
        s1 = -b + sqr(d)
        s2 = -b - sqr(d)
        x1 = s1 / a0    # 方程的根1
        x2 = s2 / a0    # 方程的根2
        if s1 % a0 == 0 and s2 % a0 == 0:   # 两根都是整数
            print("X1 = ", x1, "\n",)
            print("X2 = ", x2, "\n",)
        elif s1 % a0 == 0 and s2 % a0 != 0:     # 有一根为整数
            print("X1 = ", x1, "\n",)
            print("      ", -b - sqrt(d), "\n", "X2 =-------", "\n", "      ", a0, "\n", sep="")
        elif s1 % a0 != 0 and s2 % a0 == 0:     # 有一根为整数
            print("      ", -b + sqrt(d), "\n", "X1 =-------", "\n", "      ", a0, "\n", sep="")
            print("X2 = ", x2, "\n",)
        else:       # 两根都为浮点数时
            print("      ", -b + sqrt(d), "\n", "X1 =-------", "\n", "      ", a0, "\n", sep="")
            print("      ", -b - sqrt(d), "\n", "X2 =-------", "\n", "      ", a0, "\n", sep="")
    else:       # 当δ为开不尽时
        print("      ", -b, "+ √", d, "\n", "X1 =-------", "\n", "      ", a0, "\n", sep="")
        print("      ", -b, "- √", d, "\n", "X2 =-------", "\n", "      ", a0, "\n", sep="")
input("按Enter键退出")

打包后效果图

求解一元二次方程python编码 一元二次方程的解法python_取整


求解一元二次方程python编码 一元二次方程的解法python_数根_02


求解一元二次方程python编码 一元二次方程的解法python_数根_03


求解一元二次方程python编码 一元二次方程的解法python_浮点数_04


求解一元二次方程python编码 一元二次方程的解法python_python_05

打包指令(能用就用,就不上就算了)

pyinstaller -F -i ico图片名.ico py文件名.py

唯一有个缺点就是不能化为最简的分数有好方法欢迎评论
初次写博客,代码有问题或可以改进欢迎评论
希望以上的代码能对你有所帮助,谢谢观阅!