猿问

需要在 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()


心有法竹
浏览 172回答 3
3回答

临摹微笑

您可以设置一个字典来记录与相应月份的雨,然后您可以使用字典找到min和max使用相关的月份 valueskeysdef enter_rainfall():    months_list = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']    rain_fall = {i: 0 for i in months_list}    for k in rain_fall:        rain_fall[k] += float(input('Please enter the amount of rain for {}: '.format(k)))    return rain_falldef low_High(dicta):    all_rain = [v for v in dicta.values()]    low = ([k for k in dicta if dicta[k] == min(all_rain)], min(all_rain))    high = ([k for k in dicta if dicta[k] == max(all_rain)], max(all_rain))    return low, highx = enter_rainfall()low, high = low_High(x)print(low, high)Please enter the amount of rain for January: 10Please enter the amount of rain for February: 11Please enter the amount of rain for March: 12Please enter the amount of rain for April: 10Please enter the amount of rain for May: 22Please enter the amount of rain for June: 18Please enter the amount of rain for July: 1Please enter the amount of rain for August: 9Please enter the amount of rain for September: 2 Please enter the amount of rain for October: 22Please enter the amount of rain for November: 8Please enter the amount of rain for December: 10(['July'], 1.0) (['May', 'October'], 22.0)如果两个或更多个月的降雨量与max或min所有相应月份的降雨量相同,则返回列表中

蓝山帝景

当您调用 时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)    ...

拉丁的传说

该print和return可以接受多回报和打印字符串。您不需要限制数量。你只需要main像那样改变。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)        print(months_list,rain_amount)        # it will print corresponding month and its rain amount.    return(rain_fall)
随时随地看视频慕课网APP

相关分类

Python
我要回答