【问题标题】:Search function issues搜索功能问题
【发布时间】:2018-05-11 08:53:26
【问题描述】:

我正在尝试创建一个程序,允许用户搜索南卡罗来纳州特定县的贫困数据。该程序使用附加到列表counties 的字典county。问题出现在这里:

def search_counties(counties):
search = input('Search: ')
search = search.lower()
while search != 'q' or search != 'quit':
    if search == 'q' or search == 'quit':
        sys.exit()
    elif search != 'q' or search != 'quit':
        for i in counties:
            if search in counties:
                print_county(county)
            elif search not in counties:
                search = input("Search: ")
                search = search.lower()

但是,当前的问题是它根本不会评估搜索。相反,它会不断提示进行新搜索,即使输入“退出”或“q”也不会结束搜索:

Search: 
Search:
Search:

我只是在搜索了几个小时能找到的所有来源后才提出这个问题。如何让它正确评估搜索?

【问题讨论】:

  • 你的缩进是错误的,它不能那样工作。而是粘贴您的真实代码。
  • @staz 你已经尝试过我的解决方案了吗?如果有帮助,您可以将其标记为已解决????
  • 它仍然不断提示搜索,我用.values、.items和.keys实现了它
  • 您尝试将什么作为搜索查询传递?假设county = {'some1': 'a', 'some2': 'b'}。如果只是search in county(等于search in county.keys()),您可以通过some1some2。如果是search in county.values(),您应该通过ab
  • 我尝试过使用 HorryCobbGeorgetown。县看起来像这样county = {"count":int(child_count),"poverty":float(percent),"median":int(median),"county":county_name},如果它有更多帮助的话。

标签: python python-3.x function input


【解决方案1】:

您正在尝试在字典列表中搜索输入字符串:

if search in counties:
    print_county(county)

它将始终返回 false,因此将被要求输入下一个输入。在我看来,你想要这样的东西:

def search_counties(counties):
    county_names = [c.county.lower() for c in counties]

    while True:
        search = input('Search: ').lower()
        if search in ('q' ,'quit'):
            sys.exit()

        if search in county_names:
            print_county(county)

更新:

更新代码考虑你county结构为:

{
    "count": int(child_count),
    "poverty": float(percent),
    "median": int(median),
    "county": county_name
}

【讨论】:

    猜你喜欢
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 2023-03-05
    • 2023-01-20
    • 2011-07-02
    • 2012-01-04
    相关资源
    最近更新 更多