【发布时间】:2019-06-15 08:29:50
【问题描述】:
我有一个作业问题,我们必须按第 3 列以降序对特定的 csv 文件进行排序。然后我们必须返回第 3 列中具有最大值的所有行,我们不能使用 pandas,因为我们还没有学会如何使用它们。我们必须为它编写一个函数,这样教授就可以将我们的函数调用到他的代码中并看到它的执行。
def bigRow():
new_row = []
with open('assignment2Data.csv', 'rU', newline='') as f:
reader = csv.reader(f, delimiter='^')
data = [x for x in reader]
max_thirdcol_val = max([x[2] for x in data])
for row in data:
if row[2] == max_thirdcol_val:
new_row.append(row)
return new_row
我提交它时出错,因为:
File "UNITTEST.py", line 21, in test_unit
assert(bigRow('assignment2Data.csv', 3)==answer or bigRow('assignment2Data.csv', 3)==answer2)
TypeError: bigRow() takes 0 positional arguments but 2 were given
【问题讨论】:
-
你的函数应该有两个参数:一个是文件名,一个是列号。然后,您将不得不在函数中使用这些参数,而不是硬编码的值。
-
所以我需要更新函数来读取 def bigRow('assignment2Data.csv', 3) ?
-
否 - 函数参数就像变量名。测试将通过实际值。
-
他说的是函数头。您将函数定义为具有零参数,并在函数调用中为其提供了两个参数。看看这个tutorial。
-
抱歉,我正在尝试为我的孩子做晚餐并同时处理这件事。如果我理解正确,我需要让函数say.... defbigRow(max_thirdcol_val, row)?