用原生python写一个求解一元二次方程的类并在app进行测试(用户输入的内容都要讨论)

方法阐述,前提铺垫


实现了一元二次方程的求解,并且包含了用户输入的一切情况,将求解一元二次方法的方法的放在一个模块中以便于在应用程序中更好的调用。用户输入二次方程可求解,输入一次方程的形式会求解一次方程并给出解,输入汉字等非数字和空可给出提示。本篇只是测试方法。【小主用的python版本是python3.7,编译器是pycharm.电脑是Windows操作系统。】

功能实现模块:附上以下代码:


1、方法模块

# -*- coding: utf-8 -*-#

#-------------------------------------------------------------------------------
# Name:         testClass
# Description:  
# Author:       魔法师的魔法书
# Date:         2019/12/14
#-------------------------------------------------------------------------------
import math
class appClassT:
    #def __init__(self,a,b,c):

        # self.a = a
        # self.b = b
        # self.c = c
#computer( a, b, c)是一元二次方程的实现主方法, isFloat(x)主要是尝试是否可以字符串转化成float型数据
#computer( a, b, c)有一个含有三个元素组成的一个列表的返回值,列表的第三个元素存储数据处理的判断结果
    def computer( a, b, c):
        a = str(a)
        b = str(b)
        c = str(c)
        if not (a and b and c):
            jie = [0, 0, 'none']#输入了空
            return jie

        a = appClassT.isFloat(a)
        b = appClassT.isFloat(b)
        c = appClassT.isFloat(c)

        if a=='False' or b=='False'or c=='False':
           jie = [0, 0, 'error']#非法输入了不能转化为float的数据
           return jie
        if a != 0:
            # if b==False or c==False:
            #     jie = [0, 0, 'error']
            #     return jie
            delta = b ** 2 - 4 * a * c
            if delta < 0:#虚根求解

                rel = str(-b / (2 * a))
                imag = str(math.sqrt(-delta) / 2) + "i"
                x1 = rel + "-" + imag
                x2 = rel + "+" + imag
            elif delta == 0:
                s = -b / (2 * a)
                x1 = s
                x2 = s
            else:#实根求解
                root = math.sqrt(delta)
                x1 = (-b + root) / (2 * a)
                x2 = (-b - root) / (2 * a)
                x1 = str(x1)
                x2 = str(x2)

                print(x1)
            jie = [x1, x2, 'two']
            return jie
        elif a == 0 and b and c:
            if b == 0:
                jie = [0, 0, 'error']
                return jie
            else:
                jie = -c / b
                jie = [jie, 0, 'one']
                return jie
        else:
            jie = [0, 0, 'error']
            return jie

    def isFloat(x):#数据类型转化
        try:
            x = float(x)
            return x
        except:
            return 'False'


2、测试模块

# -*- coding: utf-8 -*-#

#-------------------------------------------------------------------------------
# Name:         app
# Description:  
# Author:       魔法师的魔法书
# Date:         2019/12/14
#-------------------------------------------------------------------------------
from test.def_toapp.app.testClass import appClassT
 def main()
 #一元二次方程方法测试
 	a=1,b=1,c=1
 	a1=0,b1=1,c1=1
 	a2='',b2=1,c2=1
	list0=[]
	list1=[]
	list2=[]
        list0=appClassT.computer(a,b,c)
        list1=appClassT.computer(a1,b1,c1)
        list2=appClassT.computer(a2,b2,c2)
        print(list0)
        print(list1)
        print(list3[2])
if __name__ == '__main__':
   main()

忘记了,我的结构是这个样子的,主要是测试模块有一个导入的书写,我是直接写在一个包下的。
注意:computer( a, b, c)是一元二次方程的实现主方法, isFloat(x)主要是尝试是否可以字符串转化成float型数据,因为该实现类主要是获取从页面中抓取的数据,传入方法中的a,b,c都是字符型,小主是从实现窗体页面中剔出的方法。另外代码不够精简,列位有建议希望为我指出!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值