所以我有一个文件 名字(空格)姓氏(标签)等级。
实施例
万达巴伯96
我无法以列表形式阅读此内容,然后编辑该号码。
我目前的代码是,
def TopStudents(n):
original = open(n)
contents = original.readlines()
x = contents.split('/t')
for y in x[::2]:
y - 100
if y > 0: (????)
这是我感到困惑的地方。我只是想获得得分超过100%的学生的名字和姓氏。我想为符合此资格的学生创建一个新列表,但我不确定如何编写相应的名字和姓氏。我知道我需要采取列表中每个其他位置的步伐,因为奇数将永远是名字和姓氏。提前感谢您的帮助!
答案 0 :(得分:1)
您的代码有几处出问题:
- 必须关闭打开的文件(#1)
- 必须使用调用它来进行函数调用(#2)
- 使用的拆分使用forwardslash(/)而不是反斜杠()(#3)
- 如果您希望访问所有成员(#4),那么您决定循环使用for循环的方式并不是最佳选择
- for循环以:
(#5)为结尾
- 您必须将计算结果存储在某处(#6)
def TopStudents(n):
original = open(n) #1
contents = original.readlines #2
x = contents.split('/t') #3
for y in x[::2] #4, #5
y - 100 #6
if y > 0:
那就是说,固定版本可以是:
original = open(n, 'r')
for line in original:
name, score = line.split('\t')
# If needed, you could split the name into first and last name:
# first_name, last_name = name.split(' ')
# 'score' is a string, we must convert it to an int before comparing to one, so...
score = int(score)
if score > 100:
print("The student " + name + " has the score " + str(score))
original.close() #1 - Closed the file
注意:我专注于可读性,并附有几条评论,以帮助您理解代码。
答案 1 :(得分:0)
我总是喜欢使用'with open()',因为它会自动关闭文件。为了简单起见,我使用逗号分隔的txt,但你可以用\ t替换逗号。
def TopStudents():
with open('temp.txt', 'r') as original:
contents = list(filter(None, (line.strip().strip('\n') for line in original)))
x = list(part.split(',') for part in contents)
for y in x:
if int(y[1]) > 100:
print(y[0], y[1])
TopStudents()
这将打开并将所有行作为列表加载到内容中,删除空白行和换行符。然后它分成一个列表列表。
然后遍历x中的每个列表,查找第二个值(y [1]),这是您的等级。如果int()大于100,则打印y的每个段。