Python计算一元二次方程的根

任务要求

任务描述

本关任务:编写Python程序,计算二次方程 ( ax^2 + bx + c = 0 ) 的根。如果方程有实根,则输出实根;如果方程有虚根,则输出共轭的虚根。

测试例子说明

平台会对你编写的代码进行测试:

测试输入:1 -3 2 预期输出: 方程有两个不同的实根: 2.0 和 1.0


相关知识

为了完成本关任务,你需要掌握:

  1. 如何使用Python的math和cmath库
  2. 二次方程的求根公式
使用Python的math库

Python的math库提供了一系列数学函数,其中sqrt函数可以用来计算平方根。

 
  1. import math
  2. result = math.sqrt(16) # result will be 4.0
使用Python的cmath库

对于负数的平方根,我们需要使用Python的cmath库,它可以处理复数。

 
  1. import cmath
  2. result = cmath.sqrt(-1) # result will be 1j, which represents the imaginary unit

最终代码

import cmath

#hint: 把your_case换成需要判断的对象!

a, b, c = map(float, input().split())

########input your code here#########

# 判断a是否为0

if a == 0:

    if b!=0:

        print(f"方程有一个实根: {-c/b}")

    else:

        if  c==0: #这个if是在上一级if b!=0的else情况逻辑下的,相当于在b等于0条件下,不需要在控制b==0 一次。

            print("方程有无数个解")

        else:

            print("方程无解")

else:

    # 计算判别式

    d=b**2-4*a*c #d表示了delta

   

    # 计算根

    if d > 0:

       dr = cmath.sqrt(d) #注意检查最开始import了什么,虽然此处用math就能解决,但开头import cmath,故应用cmath.sqrt.

       root1 = (-b+dr)/(2*a) 

       root2 = (-b-dr))/(2*a)

        print(f"方程有两个不同的实根:" .root1.real ,"和" ,root2.real)

    elif d==0:

        print(f"方程有一个实根: {-b/(2*a)}")

    else:

        df = cmath.sqrt(d) 

        root1 = (-b+df)/(2*a)

        root2 = (-b-df)/(2*a)

        print(f"方程有两个虚根: {root1} 和 {root2}")


 

########end of your code #########


易错细节

  • 错因及修正:四则运算未清晰表达,补充乘号及括号

      print(f"方程有一个实根: {-b/2a}") 改为 print(f"方程有一个实根: {-b/(2*a)}")

  • 错因及修正:混入了用中文输入法输入的符号,改为英文输入法

    print(f"方程有两个不同的实根: {root1.real},和{root2.real})
          ^
SyntaxError: unterminated string literal 
  • 错因及修正:错误理解名称及表达,不能用root1.real, 应先定义root1。root2同理。

    root1.real = (-b+dr)/(2*a) 改为 root1= (-b+dr)/(2*a)

    相关知识:real 为Python里的一个函数,有取实部的功能。用法:xxx.real #xxx为被取实部对象。

    

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值