如何在Python中不使用sort或list找出序列中的三个最大数?
如何获取第二大和第三大的数
你的代码目前只实现了跟踪最大值,但要同时拿到第二、第三大的数,需要维护三个变量分别记录当前的最大、第二大、第三大值,同时注意初始值的设置(别用0,否则负数输入会出问题)。另外原代码里if c>b:下面的b=c没有缩进,会导致语法错误,得修正。
修改后的代码示例:
count = int(input()) # 初始化三个变量为负无穷,兼容负数输入 max1 = max2 = max3 = float('-inf') for _ in range(count): num = int(input()) if num > max1: # 新的最大值,原来的max1降级为max2,max2降级为max3 max3 = max2 max2 = max1 max1 = num elif num > max2: # 新的第二大值,原来的max2降级为max3 max3 = max2 max2 = num elif num > max3: # 新的第三大值 max3 = num print(f"最大数:{max1},第二大数:{max2},第三大数:{max3}")
代码说明:
- 用
float('-inf')初始化,确保任何输入的整数都能比初始值大,避免输入负数时出错 - 每次输入新数后,按从大到小的顺序依次判断,更新三个变量的层级
- 循环变量用
_代替i,因为这里不需要用到循环计数本身
内容的提问来源于stack exchange,提问作者邱靖岳
相关产品推荐
相关产品推荐

