有人能帮我修复这个代码吗?我一直在犯这个错误,我很挣扎
对于我练习的每一个代码,我总是得到相同的错误
这是我们应该处理的这个问题的customers.txt文件
12345,Tom,Black,300.00,1998-01-30
23456,Alice,Smith,1200.50,1998-02-20
14567,Jane,White,900.00,1998-07-01
43564,Weilin,Zhao,450.25,1998-01-03
45432,Bina,Mehta,278.95,1998-03-21
def customer_first(fh):
record = None
lines = fh.readlines()
i = 0
while i < len(lines):
line = lines[i]
values = line.rstrip('\n').split(',')
if record == None or values[4] < record[4]:
record = values
i += 1
return record
样本测试:
查找最早登录的客户:
['43564','Weilin','Zhao','450.25','1998-01-03']
这就是我一直在下面记录的错误
测试对禁用Python函数的调用:“readlines”
错误:
函数不应调用“readlines”
以下是我在代码中测试的所有内容:
测试各种参数:“客户文件变量”
嗯
测试对禁用Python函数的调用:“输入”
嗯
测试对禁用Python函数的调用:“print”
嗯
测试对禁用Python函数的调用:“readlines”
错误:
函数不应调用“readlines”
测试对禁用Python函数的调用:“打开”
嗯
测试对禁用Python函数的调用:“close”
嗯
测试函数docstring文档:
嗯
多重回报测试:
嗯
测试函数是否未使用“for”:
嗯
测试函数是否不硬编码文件长度:
嗯
测试是否滥用函数名:
嗯
如果您确实不能使用readlines()或csv模块,那么您当然可以循环文件,例如:
由于这些是ISO 8601样式的日期,因此不需要从文本转换。您可以通过以下方式获得
min
:作为使用
.readlines
()的替代方案,您的评分系统可能会想到这一点:在这里,我们调用
.read()
一次读入整个文件,然后.split()
为每个换行将其读入单独的行。这基本上就是.readlines()
在引擎盖下可能做的事情,并且是不使用该方法的代码的最直接的替换您的评分系统可能也希望您这样做:
File.readline()
与File.readlines()
类似,只是它只返回一行,如果到达文件末尾,则返回空字符串另一种替代解决方案是使用
next()
遍历文件,并使用try
/except
块捕获StopIteration
(这就是for
循环在引擎盖下实际工作的方式)。不过,这是一种更复杂、更先进、更适合的方法,我认为你的老师不太可能期望你在这里使用,除非你刚刚学到:我想提醒您,在可能的情况下使用
for
循环通常是好的做法,当在for
循环中简单地迭代文件是不够的时,使用.readlines()
通常不是坏的做法,你也不应该把这项作业当作今后避免做这些事情的标志。如果作业没有告诉你应该使用什么工具,而你最近在课堂上的讲座也没有涵盖上述任何一项,目的是给你提供线索,那么我认为这是一项糟糕的作业此外,您的代码可能存在逻辑错误(请尝试
record == None and values[4] < record[4]
),但这不是您要问的问题,一旦评分系统开始实际运行您的代码,您将收到不同的错误消息,这些消息可能会引导您找到答案相关问题 更多 >
编程相关推荐