bilibili_xiaosi 2023-03-26 17:03 采纳率: 100%
浏览 24
已结题

练习python两天半遇到的小问题

想练习一下if语句但是用法好像有点错误。注:代码的意思大概是通过判断二次方程(公式法)的根来判定判别式的情况

a = float(input("输入a的值"))
b = float(input("输入b的值"))
c = float(input("输入c的值"))
x_f = (-b + (b**2 - 4*a*c)**(1/2)) / 2*a
x_s = (-b - (b**2 - 4*a*c)**(1/2)) / 2*a


if x_f > x_s:
    print("判别式大于0")

if x_f < x_s:
    print("判别式大于0")

elif x_f == x_s:
    print("判别式等于0")

else:
    print("此方程无实根")


给出的错误提示是:TypeError: '>' not supported between instances of 'complex' and 'complex'
在经历了无(没)数(有)次的头脑风暴后还是来问了,如果不能带入具体事例那这个应该怎么写

  • 写回答

2条回答 默认 最新

  • Leodong. 2023-03-26 17:39
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:

      这个错误提示说明了你的代码中出现了复数(complex)的比较,而Python中默认不支持复数之间的比较。在二次方程中,当判别式小于0时会出现复数根。
    
      为了避免这个错误,你可以使用if语句的isinstance()函数来判断x_f和x_s是否为实数(float)类型。同时,你的代码中在判断x_f和x_s大小时,应该使用ifelif语句的嵌套结构,具体修改后如下代码。
    

    具体代码修改后如下:

    a = float(input("输入a的值"))
    b = float(input("输入b的值"))
    c = float(input("输入c的值"))
    
    delta = b**2 - 4*a*c
    
    if isinstance(delta, complex):
        print("此方程无实根")
    else:
        x_f = (-b + delta**(1/2)) / (2*a)
        x_s = (-b - delta**(1/2)) / (2*a)
        if x_f > x_s:
            print("判别式大于0")
        elif x_f < x_s:
            print("判别式大于0")
        else:
            print("判别式等于0")
    

    在上面的代码中,我们首先计算出判别式delta,然后使用isinstance()函数判断delta是否为复数类型。如果是,则输出“此方程无实根”,否则再根据x_f和x_s的大小关系判断判别式的情况。注意要将2*a写在括号内,避免运算顺序错误导致计算错误。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月3日
  • 已采纳回答 3月26日
  • 创建了问题 3月26日

悬赏问题

  • ¥15 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。