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 visionmaster启动失败,提示为“机器不满足授权而被禁用”
  • ¥50 用logisim设计16位单时钟周期cpu
  • ¥15 IDEA中圈复杂度如何具体设置
  • ¥50 labview采集不了数据
  • ¥15 请上面代码做什么处理或什么混淆
  • ¥15 英雄联盟自定义房间置顶
  • ¥15 W5500网线插上无反应
  • ¥15 如何用字典的Key,显示在WPF的xaml中
  • ¥15 weautomate读取Excel表格信息然后填写到网页一直报错,如何解决?
  • ¥15 C#如何在Webview2中获取网页验证码