首页 > 解决方案 > 根据用户调用的行从 .txt 文件中的行打印结果

问题描述

我正在开发一个程序,该程序打开一个 .txt 文件,然后提示用户查看单个学生。文件看起来像这样

Bronson 90 85 75 76 
Conor 90 90 90 90
Austyn 50 55 32 75
Mark 96 95 85 85
Anthony 85 85 85 85 

程序首先打印出每个学生的姓名(每列的第一个单词)

with open(argv[1]) as f:
    names=[]
    for line in f:
        names.append(line.split()[0])
    print('\nNames of students:')
    print(*sorted(names),sep=' ')

然后询问您要查看哪个学生:

    name = input('Enter name of student whos marks you want to view: '

我正在尝试编写一段代码,它将打印出用户键入的任何名称的内容。例如,如果用户键入“Conor”,程序会打印出 90 90 90 90。

我尝试使用 if 语句,但我似乎无法让它工作。有人能指出我正确的方向吗?这是我目前拥有的:

for line in f:
    if names.append(line.split()[0]) == name:
         print(line)

谢谢!

标签: python

解决方案


你的 if 语句可以工作,但你不应该在循环时修改列表(不要追加)

实际上,您会使用按名称键入的字典

names=dict() 
with open(argv[1]) as f:
    for line in f:
        parts = line.split()
        names[parts[0]] = parts[1:]

name = input("enter a name") 
print(names[name]) 

如果您不需要存储每一行​​,那么看起来像

name = input("enter a name") 
with open(argv[1]) as f:
    for line in f:
        parts = line.split()
        if parts[0] == name:
            print(parts[1:]) 


推荐阅读