Python 3.X - 使用用户输入搜索列表并打印结果
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 3.X - 使用用户输入搜索列表并打印结果相关的知识,希望对你有一定的参考价值。
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)。一旦创建了列表,程序需要做的下一件事就是接收用户邮政编码,然后打印出邮政编码,城市和州。这是我到目前为止的代码,我完全不知道该怎么做。我再次寻找一个完整的答案,只是一个方向。有时候我会想念简单的解决方案,只需要有人说出一些可以让我点击它的东西。感谢您的时间和任何信息或帮助。
编辑:此版本不使用字典,而是使用列表。
此代码是您可以这样做的一种快速示例。文件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("
No match for zipcode: '{}'
".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
array.index()不返回元素本身;它返回它的索引。例如,如果'93267'是列表中的第二个元素,并且您调用了array.index('93267'),那么您将获得'1'。尝试创建一个包含索引的变量,然后打印该索引处的任何内容:
index1 = array.index(userInput)
print(array[index1))
然而,您可能会遇到这样的问题,因为在您的代码中,您用逗号分隔每一行,并且在您的描述中,您的邮政编码,城市和州由逗号分隔。我不完全确定你的原始文本文件是什么样的,所以我可能错了,但要注意它可能会导致一些问题。
希望这有帮助;如果你遇到更多问题,请随时说出来。祝你学校的项目顺利!
如果我理解正确的话,array
的结构会像这样结束:
[['ZIPCODE','CITY','STATE'],['ZIPCODE','CITY','STATE'],...]
和userInput
将持有代表ZIP代码的字符串。
给定array
的结构,对于array
(每个子列表)中的每个条目,条目中的第一个元素(条目[0])将是ZIPCODE。
你可以遍历array
中的每个条目,并检查该条目的第一个元素是否与userInput
匹配。
如果是,您可以打印该条目。
注意:要了解为什么从print语句中获得错误,请查看list methods的描述,即index
方法。
以上是关于Python 3.X - 使用用户输入搜索列表并打印结果的主要内容,如果未能解决你的问题,请参考以下文章
使用 React Hooks 根据搜索输入值重新加载对象数组