【发布时间】:2015-10-28 03:19:19
【问题描述】:
我的代码正在返回:
Traceback (most recent call last):
File "/Users/Justin/Desktop/Program 5/Weather_Program#5.py", line 111, in <module>
month = sum(january)/10
TypeError: unsupported operand type(s) for +: 'int' and 'str'
我确切地知道此错误发生的位置和原因,但我不知道如何修复它。任何想法将不胜感激。
我在csv 中读取的数据是左栏中的日期和右栏中的降水。 20000101 是 2001 年 1 月 1 日,0 是 0 英寸的雨。 Na 将被排除在外,它在第二个 while 循环中正常工作。一旦我将数字转换为浮点数,我就会遇到错误
20000101 0
20000102 NA
20000103 12.2
20000104 0.3
代码:
import csv
january = []
february = []
march = []
april = []
may = []
june = []
july = []
august = []
september = []
october = []
november = []
december = []
def read_cell(column, row):
"""Input x & y coordinate for CSV file: Returns information in cell"""
with open('precipitation.csv', 'r') as f:
reader = csv.reader(f)
y_count = 0
for n in reader:
if y_count == row:
cell = n[column]
return cell
y_count += 1
stormy = 0
row_number = 0
while stormy < 1:
with open('precipitation.csv', 'r') as f:
date = read_cell(0,row_number)
rain = read_cell(1,row_number)
if date == None:
stormy += 1
break
elif date[4:6] == "01":
january.append(read_cell(1,row_number))
row_number += 1
elif date[4:6] == "02":
february.append(read_cell(1,row_number))
row_number += 1
elif date[4:6] == "03":
march.append(read_cell(1,row_number))
row_number += 1
elif date[4:6] == "04":
april.append(read_cell(1,row_number))
row_number += 1
elif date[4:6] == "05":
may.append(read_cell(1,row_number))
row_number += 1
elif date[4:6] == "06":
june.append(read_cell(1,row_number))
row_number += 1
elif date[4:6] == "07":
july.append(read_cell(1,row_number))
row_number += 1
elif date[4:6] == "08":
august.append(read_cell(1,row_number))
row_number += 1
elif date[4:6] == '09':
september.append(read_cell(1,row_number))
row_number += 1
elif date[4:6] == '10':
october.append(read_cell(1,row_number))
row_number += 1
elif date[4:6] == '11':
november.append(read_cell(1,row_number))
row_number += 1
elif date[4:6] == '12':
december.append(read_cell(1,row_number))
row_number += 1
while "NA" in january:
january.remove("NA")
while "NA" in february:
february.remove("NA")
while "NA" in march:
march.remove("NA")
while "NA" in april:
april.remove("NA")
while "NA" in may:
may.remove("NA")
while "NA" in june:
june.remove("NA")
while "NA" in july:
july.remove("NA")
while "NA" in august:
august.remove("NA")
while "NA" in september:
september.remove("NA")
while "NA" in october:
october.remove("NA")
while "NA" in november:
november.remove("NA")
while "NA" in december:
december.remove("NA")
january = [float(i) for i in january]
january = sum(float(january))/10
print(january)
【问题讨论】:
标签: python string list csv type-conversion