如何避免求三个整数最小值时打印输出重复相同数值?
问题解决:多数值相等时重复打印最小值的问题
我编写的代码在多数测试场景下能正常输出三个整数的最小值,但当两个或三个数值相等时,会重复打印相同的最小值(例如三个数均为7时,会连续打印三次7)。需求要求输入3个整数,打印最小整数,且需支持两个或三个数值相等的场景。
原代码如下:
x = int(input("Insert integer")) y = int(input("Insert integer")) z = int(input("Insert integer")) if x <= y and x <= z: print(x) if y <= x and y <= z: print(y) if z <= x and z <= y: print(z)
解决方案
方法1:使用elif替代后续if判断
将后面的两个if改为elif(else if的缩写),这样只要第一个满足条件的分支执行后,后续分支就不会再被判断,从根源避免重复打印:
x = int(input("Insert integer")) y = int(input("Insert integer")) z = int(input("Insert integer")) if x <= y and x <= z: print(x) elif y <= z: print(y) else: print(z)
说明:第一个if判断x是否为最小值,若不成立则说明x不是最小,此时只需比较y和z即可,最终只会执行一个分支,打印一次最小值。
方法2:直接调用Python内置min()函数
这是最简洁高效的方式,Python内置的min()函数可直接返回多个参数中的最小值,无论有多少个相等的最小值,都只会打印一次:
x = int(input("Insert integer")) y = int(input("Insert integer")) z = int(input("Insert integer")) print(min(x, y, z))
说明:min()函数会自动处理所有相等场景,完全符合需求,代码量最少。
方法3:先获取最小值再统一打印
先通过比较确定最小值,最后只打印一次,避免重复输出:
x = int(input("Insert integer")) y = int(input("Insert integer")) z = int(input("Insert integer")) min_val = x if y < min_val: min_val = y if z < min_val: min_val = z print(min_val)
说明:先假设x为最小值,依次与y、z比较并更新最小值,最后统一打印,确保只输出一次。
内容的提问来源于stack exchange,提问作者jjk
相关产品推荐
相关产品推荐

