Python:每个项匹配问题的字典

Python:每个项匹配问题的字典,python,dictionary,if-statement,break,Python,Dictionary,If Statement,Break,我试图在Hackerank上的dictionary中查找与键对应的值 我试着打印出每一个要调试的进程,我发现这个进程运行得和我预期的完全一样,然而,结果真的很奇怪。我的输出结果显示,该语句确实读取了正确的名称“harry”,但在我的字典中找不到“harry”。有人能给我一些建议吗,谢谢 这是我的密码: if __name__=='__main__': n = int(input()) #input how many pairs of name-phone in this phoneboo

我试图在Hackerank上的dictionary中查找与键对应的值

我试着打印出每一个要调试的进程,我发现这个进程运行得和我预期的完全一样,然而,结果真的很奇怪。我的输出结果显示,该语句确实读取了正确的名称“harry”,但在我的字典中找不到“harry”。有人能给我一些建议吗,谢谢

这是我的密码:

if __name__=='__main__':
    n = int(input()) #input how many pairs of name-phone in this phonebook
    d = dict()

    for count in range(n):
        name, phone = input().split()
        d[name] = phone
    print(d)

    while True:
        search_phone = input() #input the name
        print('enter new name') #debug

        for name, phone in d.items():
            if search_phone == name :
                print(name + '=' + phone)
                print(search_phone + ' bingle, continue to enter another name')
                break

            elif search_phone != name:
                print('Not found')
                print(search_phone + ' no match, continue to enter another name')
                break
示例输入为:

3
sam 99912222
tom 11122222
harry 12299933
sam
edward
harry
预期产出:

sam=99912222
Not found
harry=1229993
我的输出是:

{'sam': '99912222', 'tom': '11122222', 'harry': '12299933'}    
enter new name
sam=99912222
sam bingle, continue to enter another name
enter new name
Not found
edward no match, continue to enter another name
enter new name
Not found
harry no match, continue to enter another name 
###my question is why it did read harry but goes to no match?

这是因为你把
break
放在你的else语句中。因此,代码将在第一个循环中中断,并且无法在
d
中获取下一项。所以,你必须删除break-in-else语句

但是我们有一个新问题,如果
search\u phone!=名称
。所以,我们必须解决这个问题。你可以试试这个(抱歉英语不好)


请提供预期的价格。我们不必手动输入数据:您可以对其进行硬编码并产生错误。您的程序包含dict输入、搜索输入和其他处理;以下哪项包含问题?你的任务是在发布之前缩小范围。你的问题不是很清楚。您提供的唯一解释是“我正在努力寻找字典中键的对应值”,而这似乎不是一个工作英语句子。我可以建议您编辑您的问题吗?@Prune Hi抱歉,我在问题中添加了预期的输出,我的主要问题是在代码的最后一个查询中,当它输入“harry”时,我的输出显示它成功读取了“harry”,但奇怪的是,它没有进入“search\u phone==name”条件,而是进入了“!=”条件,@NicolasGervais Hi,很抱歉不够清楚,我已经添加了预期的输出,我的问题是在最后一个查询中,当我输入“harry”时,它显示它确实像我预期的那样读“harry”,但是,它没有进入条件“search\u phone==name”,而是进入!=条件在最后一个查询中,它最后说“找不到”。所以我想知道我的dict.items()有什么问题?
 while True:
        search_phone = input() #input the name
        print('enter new name') #debug
        valid = False

        for name, phone in d.items():
            if search_phone == name :
                print(name + '=' + phone)
                print(search_phone + ' bingle, continue to enter another name')
                valid = True
                break

        if not valid:
            print('name:', name)
            print('Not found')
            print(search_phone + ' no match, continue to enter another name')