Python判断三角形类型时如何同时触发if和elif的对应输出逻辑
问题原因
if...elif...else属于互斥分支结构,只要任意一个前置条件判断为真,后续所有分支都会直接跳过不执行。等边三角形天然满足普通三角形的构成条件,所以只会触发第一个if分支,永远走不到后面的等边判断逻辑。- 等边三角形的判断逻辑层级错误:它是「可以构成三角形」前提下的特殊场景,不应该和普通三角形判定放在同级的分支下。
修正后的代码
r1 = int(input('输入第一条边长度:')) r2 = int(input('输入第二条边长度:')) r3 = int(input('输入第三条边长度:')) # 先判断是否满足三角形构成条件 if (r1 + r2) > r3 and (r2 + r3) > r1 and (r1 + r3) > r2: print('可以构成三角形') # 满足三角形条件后,再嵌套判断是否为等边三角形 if r1 == r2 == r3: print('该三角形为等边三角形') else: print('无法构成三角形')
如果需要保留原英文提示,可使用以下版本:
r1 = int(input('Determine a length: ')) r2 = int(input('Determine another length: ')) r3 = int(input('Determine one more length: ')) if (r1 + r2) > r3 and (r2 + r3) > r1 and (r1 + r3) > r2: print('You can form a triangle.') if r1 == r2 == r3: print("You can form an equilateral triangle.") else: print("You can't form a triangle.")
逻辑说明
先执行通用的三角形构成校验,校验不通过直接走else提示无法构成三角形;校验通过后先打印普通三角形提示,再追加等边三角形的判断,符合条件就额外打印对应提示,两个判断逻辑不会互相冲突。
另外修正了原有代码里的两处拼写错误:triangule改为正确拼写triangle,a equilateral改为an equilateral(元音音素开头的单词前不定冠词用an)。
内容的提问来源于stack exchange,提问作者Corviel
相关产品推荐
相关产品推荐

