编写一个函数,将一个文件名和一个字母作为输入,如果一个播放器的姓氏以该字母开头,则返回True

2024-09-24 10:28:03 发布

您现在位置:Python中文网/ 问答频道 /正文

“编写一个函数,playerHasLastInitial(filename,char)接受一个文件名和一个字母作为输入 如果花名册上的球员的姓氏以该字符开头,则返回True,否则返回False。 我们希望避免将整个文件加载到内存中,因此请使用while循环和file readline()方法,而不是readlines()或read()方法

我需要使用while循环,但不能使用dict

所以第一列中的名称是first和last,所以当我尝试将它们拆分为两个单独的项时,会得到“IndexError:string index out of range”

def playerHasLastInitial(filename, char):
    f = open(filename, "r")
    while True:
        lines = f.readline()
        for v in lines:
            name = v.split(" ")[0]
            lastName = name[1]

            if char in lastName:
                return True
            else:
                return False

所以我应该:

playerHasLastInitial('C:\Users\wpqx1\Documents\hw5\cubsRoster.csv', 'A') True

我得到"IndexError: string index out of range"


Tags: of方法falsetruereadlinestringindexrange
1条回答
网友
1楼 · 发布于 2024-09-24 10:28:03

当您这样做时:

lines = f.readline()

你只有一行。所以当你下一步做的时候:

for v in lines:

lines是一个长字符串,所以v一次只有1个字符,所以name也是1个字符。所以当你下一步做的时候:

lastName = name[1]

出现错误,因为name没有索引“1”,只有索引“0”

你需要放下循环,然后做:

name = lines.split(" ")[0]

并建议更改一些变量的名称(例如line而不是lines,因为一次只有一行)

相关问题 更多 >