首页 > 解决方案 > 需要在 Python 中关联两个列表

问题描述

我正在用 Python 完成一项任务,需要将降雨量与每个月关联起来。我需要打印降雨的低月和高月,但是我的代码当前编写的方式只能打印实际数量,而不能打印与数量相对应的月份。我想我会在 enter_rainfall 函数下将两者关联起来,但我不确定如何将两者关联起来。任何建议表示赞赏。

def main():

    months_list = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
    rain = enter_rainfall()
    average = avg_rainfall(rain)
    lowhigh = low_High(rain)
    print(format(average, '.2f'))

def enter_rainfall():
    rain_fall = []
    months = 12

    for months_list in range(months):
        rain_amount = float(input('Please enter the amount of rain:',))
        rain_fall.append(rain_amount)



    return(rain_fall)


def avg_rainfall(rain):
    total = 0

    for value in rain:
        total += value
    average = total / len(rain)
    return(average)

def low_High(rain, months_list):
    low = min(rain)
    month = months_list[rain.index(low)]
    print(month)
    high = max(rain)
    print(high)





main()

标签: python

解决方案


当你打电话时low_High,你实际上并没有传递你的月份列表(month_list)。相反,您应该这样称呼它:low_High(rain, months_list). 当您打印最小值和最大值时,您可能希望同时打印月份和值——现在,您打印具有最小值和最大值的月份。

def low_High(rain, months_list):
    low_val = min(rain)
    low_month = months_list[rain.index(low_val)]
    high_val = max(rain)
    high_month = months_list[rain.index(high_val)]
    print('{month} had the least amount of rain with {val}'.format(month=low_month, val=low_val))
    print('{month} had the most amount of rain with {val}'.format(month=high_month, val=high_val))

如果您想在提示用户时跟踪月份,您可以在循环访问数组时通过修改enter_rainfall

def main():
...        
    rain = enter_rainfall(month_list)
...

def enter_rainfall(month_list)
    for month in month_list:
        rain_amount = float(input('Please enter the amount of rain for {month}:'.format(month=month),))
        rain_fall.append(rain_amount)
    ...

推荐阅读