You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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,提问作者邱靖岳

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 13:25:31