鱼C论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 40|回复: 2

[见证历程] 开始征途

[复制链接]
最佳答案
0 
发表于 2019-8-8 07:52:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
一元二次方程的求解。排除非二次方可能
import math
#求解方程ax^2+bx+c=0
'''常规二次一元方程的解为
x1=(b+sqrt(b^2-4ac))/2a
x2=(b-sqrt(b^2-4ac))/2a
'''
def trans_int(num):
    try :
        num=int(num)
       # x=1/num
        return num
    except (ValueError,ZeroDivisionError):  #如果加上x=1/num,排除系数为0的可能
        print(num+'是非法参数,非数字')
        num=input('请重新输入合法数字:')
        return trans_int(num)
    #return num
a = input('输入二次项系数a:')
a = trans_int(a)
if a==0:
    print('非二次方程')
    exit()
b = input('输入一次项系数b:')
b = trans_int(b)
c = input('输入常数项c:')
c = trans_int(c)
#print('二次项系数是:'+str(a),'一次项系数是:'+str(b),'常数项是:'+str(c))
'''====================================================================================
#使用判断方法
temp=b**2-4*a*c
m=-b/2*a
if temp == 0:
    print('方程有两个相同的解:'+str(m))
else:
    if temp >= 0:
        temp=math.sqrt(temp)
        temp=temp/2*a
        x1=m+temp
        x2=m-temp
    else:
        temp=abs(temp)
        temp=math.sqrt(temp)
        temp=temp/a*2
        x1=complex(m,temp)
        x2=complex(m,-temp)
    #temp=math.sqrt(temp)
    print('方程的第一个解:'+str(x1),'方程的第二个解:'+str(x2))
======================================================================================='''
#使用try方式
m=-b/2*a
try:
    temp=b**2-4*a*c
    1/temp
    temp=math.sqrt(temp)
    temp=temp/2*a
    x1=m+temp
    x2=m-temp
    print('方程的第一个解:'+str(x1),'方程的第二个解:'+str(x2))
except ZeroDivisionError:
    print('方程有两个相同的解:'+str(m))
except ValueError:
    temp=abs(temp)
    temp=math.sqrt(temp)
    temp=temp/a*2
    x1=complex(m,temp)
    x2=complex(m,-temp)
    print('方程的第一个解:'+str(x1),'方程的第二个解:'+str(x2))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
232 
发表于 2019-8-8 08:09:18 | 显示全部楼层
原谅我是小学生,看不懂

  1. 输入二次项系数a:5
  2. 输入一次项系数b:6
  3. 输入常数项c:7
  4. 方程的第一个解:(-15+4.079215610874227j) 方程的第二个解:(-15-4.079215610874227j)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
 楼主| 发表于 2019-8-8 08:21:02 | 显示全部楼层
刚刚想到,如果将int改为float,那么输入系数就可以是小数了
def trans_int(num):
    try :
        num=float(num)
       # x=1/num
        return num
    except (ValueError,ZeroDivisionError):  #如果加上x=1/num,排除系数为0的可能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号

GMT+8, 2019-8-21 09:10

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表