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コンソールでスクリプトを実行すると、Ctrl + B時々それが発生します..

Network is Warid [Finished in 0.1s]

そして他の時..

Network not listed [Finished in 0.1s]

私自身、関数の引数の値を変更していないことを知っています。プログラミングでこの面白い問題に直面したのは初めてです。

4

1 に答える 1

6

あなたのループはあまりループしません。最初のエントリのみをテストしてから戻ります。

2 番目をループの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 に答える