玉石布分 2022-05-20 15:17 采纳率: 33.3%
浏览 882
已结题

R7-2 输入三角形三边长,求三角形面积(高教社,《Python编程基础及应用》习题3-8)

问题遇到的现象和发生背景
运行结果及报错内容
我的解答思路和尝试过的方法

帮看看吧
R7-2 输入三角形三边长,求三角形面积(高教社,《Python编程基础及应用》习题3-8)
分数 10

编程序实现功能:输入三角形的三条边边长,求三角形面积,其中面积计算使用用户自定义函数实现。
输出的面积保留两位小数。

输入格式:
边长1

边长2

边长3

输出格式:
当三条边可能构成合法的三角形时,输出应为:

面积
当三条边无法构成合法的三角形时,输出:

数据错误
输入样例:
3
4
5
输出样例:
6.00
提示:面积计算可使用海伦公式;两边之和大于第3边;两边之差小于第3边。

我写的不能全对
import math
a = float(input(""))
b = float(input(""))
c = float(input(""))
if a+b>c or a+c>b or b+c>a:
length = a + b + c
p = length/2
area = math.sqrt(p*(p-a)(p-b)(p-c))
print(format(area,'.2f'))
else:
print("数据错误")

  • 写回答

2条回答 默认 最新

  • 二九筒 2022-05-20 15:43
    关注

    两点地方,判断这儿你应该用and,因为两边之和大于第三边的是所有两边加起来都大于第三边才能组合成三角形,所以要用and,还有就是计算哪儿两个括号之间没有运算符*,这不是数学里面直接放在一起就是乘,还是的用运算符

    
    import math
    a = float(input(""))
    b = float(input(""))
    c = float(input(""))
    if a+b>c and a+c>b and b+c>a:
        length = a + b + c
        p = length/2
        area = math.sqrt(p*(p-a)*(p-b)*(p-c))
        print(format(area,'.2f'))
    else:
        print("数据错误")
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • Hann Yang 全栈领域优质创作者 2022-05-20 16:33
    关注

    a+b>c and a+c>b and b+c>a 三个条件要同时成立,要用and不是or

    以下代码比较精练, 周长>2倍的最长边,只要一个条件即可判断,不必判断三个条件
    另外 开平方也不用导入math库 , sqrt(n) == n**0.5即可

    a,b,c = s = eval(input('输入三角形三边长,有逗号隔开:'))
    p = sum(s)/2.0
    if p > max(s):
        S = (p*(p-a)*(p-b)*(p-c))**0.5
        print(f'{S:.2f}')
    else:
        print("数据错误")
    
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月28日
  • 已采纳回答 5月20日
  • 创建了问题 5月20日

悬赏问题

  • ¥15 相同型号电脑与配置,发现主板有一台貌似缺少了好多元器件似的,会影响稳定性和使用寿命吗?
  • ¥15 要求编写稀疏矩阵A的转置矩阵的算法
  • ¥15 编写满足以下要求的停车场管理程序,设停车场只有一个可停放n辆车的狭窄通道且只有一个大门可供车辆进出。
  • ¥20 powerbulider 导入excel文件,显示不完整
  • ¥15 用keil调试程序保证结果进行led相关闪烁
  • ¥15 paddle训练自己的数据loss降不下去
  • ¥20 用matlab的pdetool解决以下三个问题
  • ¥15 单个福来轮的平衡与侧向滑动是如何做到的?
  • ¥15 嵌入式Linux固件,能直接告诉我crc32校验的区域在哪不,内核的校验我已经找到了,uboot没有
  • ¥20 h3c静态路要求有详细过程