尝试在运行中调用函数时出现类型错误
Posted
技术标签:
【中文标题】尝试在运行中调用函数时出现类型错误【英文标题】:TypeError when trying to call functions in run 【发布时间】:2022-01-11 08:03:03 【问题描述】:编辑;感谢大家!它现在可以工作了!
我正在尝试制作一个读取 csv 文件并使用该数据进行计算的程序。我的csv_reader
函数和average_temperature
函数独立工作,但我不明白如何在run()
函数中调用它们。
我理解错误的含义,但我完全不知道如何修复它,但这是我得到的最接近的。它以这个错误结束,然后下面是代码:
Traceback (most recent call last):
File "main.py", line 100, in <module>
run()
File "main.py", line 82, in run
avgfile = average_temperature("Temperatures.csv", input)
File "main.py", line 40, in average_temperature
if filter in row[date_index]:
TypeError: 'in <string>' requires string as left operand, not builtin_function_or_method
代码:
import csv
date_index = 0
temp_index = 2
def csv_reader(file):
lst = []
with open("Temperatures.csv", 'r') as weather_file:
weather_reader = csv.reader(weather_file)
first_row = True
for row in weather_reader:
if first_row:
first_row = False
continue
lst.append(row)
return lst
def average_temperature(weather, filter):
thefile = csv_reader("Temperatures.csv")
sum = 0
len = 0
for row in thefile:
if filter in row[date_index]:
sum += float(row[temp_index])
len += 1
avg = sum / len
return avg
def run():
thefile = csv_reader("Temperatures.csv")
avgfile = average_temperature("Temperatures.csv", input)
print("".format(avgfile))
return
if __name__ == '__main__':
run()
【问题讨论】:
avgfile = average_temperature("Temperatures.csv", input)
输入是内置函数。
【参考方案1】:
错误是因为input
是built-in function 的名称。我认为您需要做的是 call 它并获取一个值作为 filter
参数传递给您的 average_temperature()
函数,如下所示:
def run():
date_filter = input('What date? ') # Get value from user.
thefile = csv_reader("Temperatures.csv")
avgfile = average_temperature("Temperatures.csv", date_filter)
print("".format(avgfile))
return
【讨论】:
另外,鉴于从未使用过thefile
并且average_temperature
无论如何都会打开Temperatures.csv
,您可以放弃对csv_reader
的调用。或者更好的是,将thefile
传递给average_temperature
(重写函数以接受类似文件的对象或可迭代对象而不是文件名)。
@Breezy:如果它回答了您的问题并帮助您解决了问题,请接受我的回答。见How does accepting an answer work?以上是关于尝试在运行中调用函数时出现类型错误的主要内容,如果未能解决你的问题,请参考以下文章