首页 > 解决方案 > 使用用户输入搜索文件

问题描述

我在尝试使用用户输入从文本文件中打印出某些元素时遇到了一些困难。

我有一个文本文件,其中显示 ID 号、目的地名称、票价和可用座位数,分别如下所示:

我想要的是用户输入 ID 号或目的地名称,程序将显示 (1) 相应目的地(如果使用 ID 号)或重复 (2) 目的地名称(如果使用了目的地的名称)。

因此,即用户输入Z6,程序将显示New York,或者如果用户输入New York,则将再次打印New York。

下面的代码可以打印出ID号对应的目的地;但是,如果用户输入目的地的名称,我似乎无法打印出目的地的名称,因为我得到一个列表索引超出范围错误。

search = str (input ('Please enter the name or ID number of the destination:\n'))  
info = open ('destinations.txt', 'r').readlines()
for I in info:
    data = I.split (',')
    if search == data[0]:
     print (data[1])
    elif search == data[1]:
     print ([data[1])

标签: pythonlistfilesearchtext

解决方案


我复制了您的代码,唯一需要修复的是最后一行的语法错误:print([data[1])data. 以下代码正常工作:

search = str (input ('Please enter the name or ID number of the destination:\n'))  
info = open ('destinations.txt', 'r').readlines()
for I in info:
    data = I.split (',')
    if search == data[0]:
        print (data[1])
    elif search == data[1]:
        print (data[1])

or您还可以通过语句将这两个条件合二为一:

if search == data[0] or search == data[1]:
    print(data[1])

确保你destinations.txt看起来像这样:

Z5,Melbourne,150,30
Z6,New York,120,60
Z9,Seoul,100,50
Z2,Tokyo,170,40

因为这是您的代码所期望的格式。


推荐阅读