gpt4 book ai didi

python - 我的 def 函数出了什么问题?如何修复它?

转载 作者:行者123 更新时间:2023-12-01 05:48:59 25 4
gpt4 key购买 nike

数据为:[('1985-08', '15.00'), ('1985-08', '14.88'), ('1985-08', '15.25'), ('1985-08', '15.25'), ( '1985-08', '15.13'), ('1985-08', '14.75'), ('1985-08', '14.88'), ('1985-08', '15.25'), ('1985 -08', '15.25'), ('1985-08', '15.00'), ('1985-08', '14.63'), ('1985-08', '14.50'), ('1985-08 ', '14.63'), ('1985-08', '15.25'), ('1985-08', '15.00'), ('1985-08', '15.25'), ('1985-08', '15.13'), ('1985-08', '14.88'), ('1985-08', '15.25'), ('1985-08', '15.38'), ('1985-08', '15.75 '), ('1985-08', '15.88'), ('1985-07', '15.88'), ('1985-07', '16.25'), ('1985-07', '16.00') , ('1985-07', '16.62'), ('1985-07', '16.62'), ('1985-07', '16.25'), ('1985-07', '16.50'), ( '1985-07', '16.87'), ('1985-07', '17.37'), ('1985-07', '17.25'), ('1985-07', '17.62'), ('1985 -07', '17.50'), ('1985-07', '17.75'), ('1985-07', '17.87'), ('1985-07', '18.00'), ('1985-07 ', '18.00'), ('1985-07', '17.62'), ('1985-07', '17.62'), ('1985-07', '17.62'), ('1985-07', '17.50'), ('1985-07', '17.25'), ('1985-07', '18.12')]

我的代码:

def average_data(list_of_tuples):
strMonth = []
counter = 0
addition = 0
while True:
if (strMonth[counter])[0] == (strMonth[counter+1])[0]: #line 31
addition += float(strMonth[counter][1])
result2 = addition
else:
continue
print(result2)
return result2
def main():
file_obj = get_input_descriptor()
column = int(input('What column:'))
get_data_list(file_obj, column)
result2 =get_data_list(file_obj, column)

average_data(result2)
file_obj.close()
main()

Python Shell 的错误代码:

  File "C:\Users\admin\Desktop\proj.py", line 31, in average_data
if (strMonth[counter])[0] == (strMonth[counter+1])[0]:
IndexError: list index out of range

这有什么问题吗?我想得到每个月的数字总和。还有其他方法可以解决这个问题吗?

最佳答案

strMonth 为空。它没有第 0 个元素,因此 strMonth[counter] 引发 IndexError:

In [29]: strMonth = []

In [30]: counter = 0

In [31]: strMonth[counter]
IndexError: list index out of range
<小时/>

您可以使用 dict (或 collections.defaultdict )将yearmonth 字符串映射到表示值总和的 float 。

import collections
def average_data(strMonth):
result = collections.defaultdict(float)
for yearmonth, val in strMonth:
result[yearmonth] += float(val)
return dict(result)

def main():
result2 = [('1985-08', '15.00'), ('1985-08', '14.88'), ('1985-08', '15.25'), ('1985-08', '15.25'), ('1985-08', '15.13'), ('1985-08', '14.75'), ('1985-08', '14.88'), ('1985-08', '15.25'), ('1985-08', '15.25'), ('1985-08', '15.00'), ('1985-08', '14.63'), ('1985-08', '14.50'), ('1985-08', '14.63'), ('1985-08', '15.25'), ('1985-08', '15.00'), ('1985-08', '15.25'), ('1985-08', '15.13'), ('1985-08', '14.88'), ('1985-08', '15.25'), ('1985-08', '15.38'), ('1985-08', '15.75'), ('1985-08', '15.88'), ('1985-07', '15.88'), ('1985-07', '16.25'), ('1985-07', '16.00'), ('1985-07', '16.62'), ('1985-07', '16.62'), ('1985-07', '16.25'), ('1985-07', '16.50'), ('1985-07', '16.87'), ('1985-07', '17.37'), ('1985-07', '17.25'), ('1985-07', '17.62'), ('1985-07', '17.50'), ('1985-07', '17.75'), ('1985-07', '17.87'), ('1985-07', '18.00'), ('1985-07', '18.00'), ('1985-07', '17.62'), ('1985-07', '17.62'), ('1985-07', '17.62'), ('1985-07', '17.50'), ('1985-07', '17.25'), ('1985-07', '18.12')]
print(average_data(result2))
main()

产量

{'1985-07': 378.08000000000004, '1985-08': 332.16999999999996}

关于python - 我的 def 函数出了什么问题?如何修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15079862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com