为了账号安全,请及时绑定邮箱和手机立即绑定

需要在 Python 中关联两个列表

需要在 Python 中关联两个列表

心有法竹 2021-06-30 18:58:30
我正在用 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()
查看完整描述

3 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

您可以设置一个字典来记录与相应月份的雨,然后您可以使用字典找到min和max使用相关的月份 valueskeys


def 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_fall


def 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, high


x = enter_rainfall()

low, high = low_High(x)

print(low, high)

Please enter the amount of rain for January: 10

Please enter the amount of rain for February: 11

Please enter the amount of rain for March: 12

Please enter the amount of rain for April: 10

Please enter the amount of rain for May: 22

Please enter the amount of rain for June: 18

Please enter the amount of rain for July: 1

Please enter the amount of rain for August: 9

Please enter the amount of rain for September: 2 

Please enter the amount of rain for October: 22

Please enter the amount of rain for November: 8

Please enter the amount of rain for December: 10

(['July'], 1.0) (['May', 'October'], 22.0)

如果两个或更多个月的降雨量与max或min所有相应月份的降雨量相同,则返回列表中


查看完整回答
反对 回复 2021-07-06
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

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

    ...


查看完整回答
反对 回复 2021-07-06
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

该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)


查看完整回答
反对 回复 2021-07-06
  • 3 回答
  • 0 关注
  • 171 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号