我是python新手,正在爲功能customer_state
努力工作。 我有另一個從csv文件中獲取數據的函數。我想要得到的總和從該文件中的列,也得到sm1
(這使我增長速度在時間t(天) 這是我迄今所做的:如何按範圍(366)劃分常量?
def del_pass():
reader = csv.DictReader(open("data.csv", "rb"))
all_rows = list()
for row in reader:
all_rows.append(row)
return all rows
def get_one_column(name):
column_list= list()
rows = del_pass()
for row in rows:
value = row(name)
if value =='':
value = 0
else:
value = int(value)
column_list.append(value)
return column_list
def customer_state(x):
sm = sum(x)
t = range(366)
sm1 = sm + (0.07 * (t/365) * sm)
return sm, sm1
def example_use1():
column_name ="totcust"
column = get_one_column(column_name)
column_stats = customer_state(column)
print column_stats
每個功能似乎工作正常,除了customer_state(x)
,這給了我下面的錯誤。
sm1 = (sm + ((0.07/t) * sm))
TypeError: unsupported operand type(s) for /: 'float' and 'list'
你認爲'0.07/range(366)'的結果是什麼?我無法想象你會在那裏得到什麼結果。 –
你能舉一個更小的例子嗎? –
正如消息所示,範圍(366)不是一個數字,而是一個列表。嘗試打印(範圍(366)),看看它在說什麼。 – gcandal