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

2024-04-26 23:56:06 发布

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

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)。一旦创建了列表,程序接下来要做的就是接收用户的zipcode,然后打印出zipcode、城市和州。这是我到目前为止的代码,我完全不知所措。再一次,我不是在寻找一个完整的答案,只是一个方向。有时我会错过一些简单的解决方案,只需要有人说些能让我头脑中闪现的话。感谢您的时间和任何信息或帮助。在


Tags: 答案列表forwithlineopen方向array
3条回答

如果我理解正确,array的结构将如下所示:

[['ZIPCODE','CITY','STATE'],['ZIPCODE','CITY','STATE',…]

并且userInput将包含一个表示ZIPCODE的字符串。在

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

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

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

注意:要了解print语句为什么会出错,请检查list methods的描述,即index方法。在

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

这段代码是一个快速的例子,说明了一种方法。文件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))

控制台:

^{pr2}$

在数组.索引()不返回元素本身;它返回它所在的索引。例如,如果“93267”是列表中的第二个元素数组.索引('93267'),你会得到'1'。尝试创建一个保存索引的变量,然后打印该索引处的

index1 = array.index(userInput)
print(array[index1))

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

希望这对你有帮助;如果你遇到更多的问题,尽管说吧。祝你的学校项目好运!在

相关问题 更多 >