Python不可理解的流控制

问题描述 投票:0回答:1

我是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 但是,当我使用Ctrl + B在Sublime Console中运行脚本时,有时会导致..

Network is Warid [Finished in 0.1s]

和其他时间..

Network not listed [Finished in 0.1s]

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

python python-3.3 control-flow
1个回答
6
投票

您的循环没有太多循环。您仅在测试first条目后返回。

移动循环的第二个return out

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

    return "Network not listed"

现在循环搜索,直到找到匹配的网络,并且只有在测试了所有条目并且没有找到匹配的情况下,您才返回Network not listed

© www.soinside.com 2019 - 2024. All rights reserved.