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 孟德尔随机化结果不一致
  • ¥20 求用stm32f103c6t6在lcd1206上显示Door is open和password:
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法