Python 3.X - 使用用户输入搜索列表并打印结果

时间:2018-03-05 02:57:27

标签: python python-3.x list search

with open("zipcodes.txt", "r") as ins:
   array = []
   for line in ins:
       array.append(line.split(","))

print(array)

userInput = input("Please enter the codes your looking for: ")

print(array.index(userInput))

首先,这是一个学校作业,所以我不是在寻找一个完整的答案,我正在寻找一个方向。我的任务是将文本文件加载到列表中,将每行分开。 (文本文件是每个美国邮政编码,邮政编码所在的城市,以及状态EX.93312,BAKERSFIELD,CA)。一旦创建了列表,程序需要做的下一件事就是接收用户邮政编码,然后打印出邮政编码,城市和州。这是我到目前为止的代码,我完全不知道该怎么做。我再次寻找一个完整的答案,只是一个方向。有时候我会想念简单的解决方案,只需要有人说出一些可以让我点击它的东西。感谢您的时间和任何信息或帮助。

3 个答案:

答案 0 :(得分:2)

array.index()不返回元素本身;它返回它的索引。例如,如果'93267'是列表中的第二个元素,并且您调用了array.index('93267'),那么您将获得'1'。尝试创建一个包含索引的变量,然后在索引处打印的任何内容:

o.SetValue(PlainTextProperty, text)

然而,您可能会遇到这样的问题,因为在您的代码中,您用逗号分隔每一行,并且在您的描述中,您的邮政编码,城市和州都用逗号分隔。我不完全确定你的原始文本文件是什么样的,所以我可能错了,但要注意它可能会导致一些问题。

希望这有帮助;如果你遇到更多问题,请随时说出来。祝你的学校项目好运!

答案 1 :(得分:0)

编辑:此版本不使用字典,而是使用列表。

此代码是您可以采用的一种快速示例。文件zipcodes.txt仅包含您在说明中提供的单个示例。

MATCH = """
Zipcode: {}
City:    {}
State:   {}
"""

with open('zipcodes.txt', 'r') as f:
    zipcodes = [line.rstrip().split(',') for line in f]

while True:
    user_zipcode = input("Enter zipcode (or (Q)uit): ")
    if user_zipcode.lower() == 'q':
        break
    for zipcode, city, state in zipcodes:
        if user_zipcode == zipcode:
            print(MATCH.format(zipcode, city, state))
            break
    else:
        print("\nNo match for zipcode: '{}'\n".format(user_zipcode))

控制台:

Enter zipcode (or (Q)uit): 12345

No match for zipcode: '12345'

Enter zipcode (or (Q)uit): 93312

Zipcode: 93312
City:    BAKERSFIELD
State:   CA

Enter zipcode (or (Q)uit): q

答案 2 :(得分:0)

如果我理解正确,array的结构最终会像这样结束:

[[' ZIPCODE',' CITY',' STATE'],[' ZIPCODE',' CITY' ;,' STATE'],...]

userInput将包含一个代表ZIPCODE的字符串。

鉴于array的结构,对于array(每个子列表)中的每个条目,条目中的第一个元素(条目[0])将是ZIPCODE。

您可以遍历array中的每个条目,并检查该条目的第一个元素是否与userInput匹配。

如果是,您可以打印该条目。

注意:要了解您从print语句中收到错误的原因,请查看list methods的说明,即index方法。