0

我是 Python 的新手,这是我的第 3 天。我只是用下面这个丑陋的例子来预热一些 python 的语法。

networks = {"Ufone": 333, "Mobilink": 300, "Warid": 321}

def get_network(n):
    for network in networks:
        if n == networks[network]:
            return "Network is " + str(network)
        else:
            return "Network not listed"

print(get_network(321))

你知道它应该会导致Network is Warid 但是当我在 Sublime Console 中运行脚本时Ctrl + B有时会导致..

Network is Warid [Finished in 0.1s]

和其他时候..

Network not listed [Finished in 0.1s]

而且我自己知道我没有更改函数参数中的任何值。这是我第一次在编程中遇到这个有趣的问题。

4

1 回答 1

6

你的循环没有做太多的循环。您仅在测试第一个条目后返回

将第二个return 移出循环:

def get_network(n):
    for network in networks:
        if n == networks[network]:
            return "Network is " + str(network)

    return "Network not listed"

现在你循环直到你找到一个匹配的网络,并且只有当你测试了所有条目并且没有找到匹配时你才会返回Network not listed.

于 2013-10-24T13:39:23.130 回答