Python三角形判断代码第2行能否更简洁/更Pythonic?
优化三角形判断的条件语句
你可以通过排序后仅判断最大边的方式,让第二行的判断逻辑更简洁、更符合Python风格。
原代码中重复写了三次类似的判断,其实只需要把三边排序,检查最大的边是否大于等于另外两边之和即可——因为只要最大的边满足这个条件,就肯定构不成三角形;反之如果最大的边都小于另外两边之和,那其他边必然也满足三角形的三边关系。
优化后的完整代码如下:
def triangle(side1, side2, side3): sides = sorted([side1, side2, side3]) if sides[-1] >= sides[0] + sides[1]: return 'Not a triangle' elif side1 == side2 == side3: return 'Equilateral' elif len(set(sides)) == 3: return 'Scalene' return 'Isosceles'
另外补充个小细节:原代码里的elif side1 != side2 != side3判断逻辑有漏洞——比如当三边是1、2、1时,这个条件会返回True,但实际这是等腰三角形。用len(set(sides)) == 3可以准确判断三边是否都不相等,更可靠。
内容的提问来源于stack exchange,提问作者Philip Chen
相关产品推荐
相关产品推荐

