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

如何在Python列表中查找最大、最小值对应的位置?降雨量统计作业求解

降雨量统计程序实现需求

本次作业需要编写一个程序,依次询问每个月的降雨量,用户输入的数值会被追加到列表中。收集完所有月份的数据后,程序将计算并输出总降雨量、平均降雨量、降雨量最高的月份和降雨量最低的月份。
目前需要解决的核心问题是获取降雨量最高和最低值对应的月份,要求不使用sort方法,优先通过遍历降雨量列表找到最值的索引位置,再从预定义的月份列表中匹配对应月份,也可采用其他将降雨量与对应月份绑定返回的实现方式。

现有可运行代码(未完成最值对应月份功能)
# 功能说明:本程序支持用户输入12个月的总降雨量,之后计算并输出总降雨量、平均降雨量、最高和最低降雨量
months = ["一月", "二月", "三月", "四月",
          "五月", "六月", "七月", "八月",
          "九月", "十月", "十一月", "十二月"]

# 函数功能:获取每个月的降雨量,存入列表返回
def getRainFall():
    nums = []
    for i in range(len(months)):
        m = months[i]
        print(f"请输入{m}的降雨量:")
        x = input()
        x = float(x)
        nums.append(x)
    return nums

# 函数功能:计算并返回总降雨量
def totalRain(nums):
    total = 0
    for num in nums:
        total = total + num
    return total

# 函数功能:计算并返回平均降雨量
def mean(nums):
    total = 0.0
    for num in nums:
        total = total + num
    return total / len(nums)

# 原有最值函数存在问题:1. 遍历逻辑会触发索引越界 2. 仅返回最值,未返回对应索引
def maxRain(nums):
    for i in range(len(nums)):
        if nums[i] > nums[i+1]:
            x = nums[i]
        else:
            x = nums[i+1]
    return x

# 最低降雨量函数尚未实现
#def minRain(nums):

def main():
    rainList = getRainFall()
    rainAverage = mean(rainList)
    total = totalRain(rainList)
    highest = maxRain(rainList)
    #lowest = minRain(rainList)
    print("总降雨量:", total)
    print("平均降雨量:", rainAverage)
    print("最高降雨量:", highest)
    #print("最低降雨量:", lowest)

    # 程序结束等待
    input("按<Enter>键退出程序")

main()
修复后完整可运行代码

针对需求调整了最值函数逻辑,直接返回最值对应的索引,同时修复了原有遍历越界的问题:

# 功能说明:本程序支持用户输入12个月的总降雨量,之后计算并输出总降雨量、平均降雨量、最高和最低降雨量对应的月份与数值
months = ["一月", "二月", "三月", "四月",
          "五月", "六月", "七月", "八月",
          "九月", "十月", "十一月", "十二月"]

# 函数功能:获取每个月的降雨量,存入列表返回
def getRainFall():
    nums = []
    for i in range(len(months)):
        m = months[i]
        print(f"请输入{m}的降雨量:")
        x = input()
        x = float(x)
        nums.append(x)
    return nums

# 函数功能:计算并返回总降雨量
def totalRain(nums):
    total = 0
    for num in nums:
        total = total + num
    return total

# 函数功能:计算并返回平均降雨量
def mean(nums):
    total = 0.0
    for num in nums:
        total = total + num
    return total / len(nums)

# 函数功能:返回最高降雨量对应的索引
def maxRainIndex(nums):
    max_index = 0
    for i in range(1, len(nums)):
        if nums[i] > nums[max_index]:
            max_index = i
    return max_index

# 函数功能:返回最低降雨量对应的索引
def minRainIndex(nums):
    min_index = 0
    for i in range(1, len(nums)):
        if nums[i] < nums[min_index]:
            min_index = i
    return min_index

def main():
    rainList = getRainFall()
    rainAverage = mean(rainList)
    total = totalRain(rainList)
    max_index = maxRainIndex(rainList)
    min_index = minRainIndex(rainList)
    print("总降雨量:", total)
    print("平均降雨量:", round(rainAverage, 2))
    print(f"最高降雨量:{months[max_index]} {rainList[max_index]}")
    print(f"最低降雨量:{months[min_index]} {rainList[min_index]}")

    # 程序结束等待
    input("按<Enter>键退出程序")

main()
改动说明
  • 重写了最值计算函数,遍历过程中记录最值对应的索引而非仅记录数值,避免后续匹配月份的额外开销
  • 修复了原有maxRain函数的索引越界问题,遍历从第二个元素开始和当前最值比较,无需访问i+1位置
  • 主函数中通过返回的索引直接从months列表取对应月份,无需使用sort方法打乱原有列表顺序

内容的提问来源于stack exchange,提问作者Fat_Rat_800xl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:24:04