Python 3中if-elif语句异常:第三个变量为最大值时未被识别
问题分析与解决
你的代码条件判断逻辑存在错误,导致第三个变量为最大值时无法被正确识别。
错误根源
原代码里的if n1 > n2 and n3这类写法逻辑不对:and n3并不是判断n1大于n3,而是检查n3是否为非零整数(只要n3不等于0,这个子条件就会判定为真)。同理,elif n2 > n1 and n3、elif n3 > n1 and n2都是同样的错误,这就导致当n3是最大值时,要么前面的条件误判成立,要么n3自身的判断条件根本不满足。
修正后的代码
n1 = int(input("1st Number:\n")) n2 = int(input("2nd Number:\n")) n3 = int(input("3rd Number:\n")) if n1 > n2 and n1 > n3: print(f'\033[1;31m{n1}\033[m') elif n2 > n1 and n2 > n3: print(f'\033[4;32m{n2}\033[m') elif n3 > n1 and n3 > n2: print(f'\033[33m{n3}\033[m')
额外补充(处理数值相等场景)
如果需要支持多个数值同为最大值的情况(比如两个数都是最大),可以把判断符号改成>=,或者用else兜底处理,示例如下:
n1 = int(input("1st Number:\n")) n2 = int(input("2nd Number:\n")) n3 = int(input("3rd Number:\n")) if n1 >= n2 and n1 >= n3: print(f'\033[1;31m{n1}\033[m') elif n2 >= n1 and n2 >= n3: print(f'\033[4;32m{n2}\033[m') else: print(f'\033[33m{n3}\033[m')
内容的提问来源于stack exchange,提问作者Matemática Programada
相关产品推荐
相关产品推荐

