不使用Python内置max/min函数实现三数求最值,现有代码覆盖不全如何补全
三参数最值返回函数判断分支补全方案
问题原因
你现有的代码仅覆盖了3个参数满足链式连续非降序的3种场景,缺失了中间数值位置不连续的3种场景,例如2,1,2对应的num1 >= num3 >= num2场景没有对应判断分支,因此会出现无返回值的错误。
需补充的判断分支
你需要在现有判断后新增以下3个分支即可覆盖所有场景:
elif num1 >= num3 and num3 >= num2: return num1, num2 elif num2 >= num3 and num3 >= num1: return num2, num1 elif num3 >= num1 and num1 >= num2: return num3, num2
补全后的完整代码
def max_and_smallest(num1,num2,num3): if num1>=num2 and num2>=num3: return num1, num3 elif num2>=num1 and num1>=num3: return num2, num3 elif num3>=num2 and num2>=num1: return num3, num1 # 新增分支开始 elif num1 >= num3 and num3 >= num2: return num1, num2 elif num2 >= num3 and num3 >= num1: return num2, num1 elif num3 >= num1 and num1 >= num2: return num3, num2
更简洁的优化方案(可选)
如果不想写过多分支,可以用两两比较的逻辑分别计算最大值和最小值,逻辑更清晰不易漏场景:
def max_and_smallest(num1,num2,num3): # 计算最大值 max_val = num1 if num2 > max_val: max_val = num2 if num3 > max_val: max_val = num3 # 计算最小值 min_val = num1 if num2 < min_val: min_val = num2 if num3 < min_val: min_val = num3 return max_val, min_val
内容的提问来源于stack exchange,提问作者shrili
相关产品推荐
相关产品推荐

