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日
  • 展开全部

悬赏问题

  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 Macbookpro 连接热点正常上网,连接不了Wi-Fi。
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app