如何实现可复用函数:移除最大值后比较剩余变量是否相等
解决方案
重构函数以支持任意参数
把原函数的固定参数改成*args,就能接收任意数量的输入参数,不管是3个还是更多。
完整实现代码
def check_after_remove_max(*args): # 处理参数太少的情况 if len(args) < 2: print("传入参数数量不够,没法做比较") return params = list(args) biggest_num = max(params) # 移除一个最大值实例 params.remove(biggest_num) # 检查剩余所有元素是否相等 all_equal = all(num == params[0] for num in params) leftover_str = ", ".join(map(str, params)) if all_equal: print(f"{biggest_num} 是最大数,剩余变量{leftover_str}相等") else: print(f"{biggest_num} 是最大数,剩余变量{leftover_str}不相等") # 测试用例 check_after_remove_max(8, 5, 5) # 输出:8 是最大数,剩余变量5, 5相等 check_after_remove_max(10, 7, 7, 7) # 输出:10 是最大数,剩余变量7, 7, 7相等 check_after_remove_max(9, 3, 6) # 输出:9 是最大数,剩余变量3, 6不相等 check_after_remove_max(4) # 输出:传入参数数量不够,没法做比较
关键细节说明
*args:用来接收任意数量的位置参数,传入的参数会被打包成元组,转成列表后才能修改(元组不可变)params.remove(biggest_num):只移除第一个出现的最大值,符合示例里的逻辑(比如传入多个最大值时,只会去掉一个)all(num == params[0] for num in params):不管剩余元素有多少个,都能判断是否全部相等,保证函数的通用性- 边界处理:提前判断参数数量,避免参数不足时出现索引错误
内容的提问来源于stack exchange,提问作者Mick Ihde
相关产品推荐
相关产品推荐

