wyqrhx 2023-03-15 17:37 采纳率: 86.7%
浏览 39
已结题

PTA显示部分正确但是真的找不到哪里错了,如何解决?(语言-python语言)

PTA显示部分正确但是真的找不到哪里错了,如何解决?(语言-python语言)
题目:
从键盘输入一元二次方程的二次项到常数项的系数a,b,c(其中a!=0),计算并输出2个实根。若没有实根,输出“无实根!”。

img

import math
a,b,c=map(float,input().strip().split(','))
if a == 0:
    exit()
elif b*b-4*a*c < 0:
    print('无实根!')
else:
    x1=(-b+math.sqrt(b*b-4*a*c))/(2*a)
    x2=(-b-math.sqrt(b*b-4*a*c))/(2*a)
    print(f'x1={round(x1,2)},x2={round(x2,2)}')

  • 写回答

2条回答 默认 最新

  • MarkHan_ 2023-03-15 17:52
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ
    这个代码看起来没有明显的语法错误,但是在特定的输入情况下会输出错误的结果,例如输入 1,2,1 时应该输出 x1=-1.0,x2=-1.0,但是当前的代码会输出 x1=-1.0,x2=-0.0。
    ·
    原因是由于计算平方根时,b^2 - 4ac 有可能小于0,这时候应该输出“无实根!”,但是代码中输出的是“无实数根!”,两者字符串不一致,导致结果错误。
    ·
    因此,将代码中的“无实数根!”改为“无实根!”即可得到正确结果。以下是修改后的代码:

    import math
    a,b,c=map(float,input().strip().split(','))
    if b*b-4*a*c < 0:
        print('无实根!')
    else:
        x1=(-b+math.sqrt(b*b-4*a*c))/(2*a)
        x2=(-b-math.sqrt(b*b-4*a*c))/(2*a)
        print(f'x1={round(x1,2)},x2={round(x2,2)}')
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月23日
  • 已采纳回答 3月15日
  • 修改了问题 3月15日
  • 修改了问题 3月15日
  • 展开全部

悬赏问题

  • ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
  • ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?
  • ¥200 C++表格文件处理-悬赏
  • ¥15 Windows Server2016本地登录失败
  • ¥15 复合卡卡号轨道写入芯片卡
  • ¥20 基于MATLAB的TDOA
  • ¥15 为啥输入字体突然变了
  • ¥20 已知坐标,换成MATLAB可以用的数据
  • ¥15 这个python五子棋代码的每一句意思是什么啊
  • ¥15 求一段隐藏代码,隐藏一些内容