2013-10-24 3 views
0

저는 파이썬에서 초보자입니다. 나는 다음과 같은 추악한 예제로 파이썬의 일부 구문을 워밍업하고있다.파이썬 이해할 수없는 흐름 제어

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)) 

당신은 내가 Ctrl + B이 때때로 발생하여 숭고한 콘솔에서 스크립트를 실행할 때 Network is Warid그러나를 초래한다는 것을 알고 ..

Network is Warid [Finished in 0.1s]

과 다른 시간 ..

Network not listed [Finished in 0.1s]

및 I myse 함수 인자에서 어떤 값도 변경하지 않았다는 것을 압니다. 처음 프로그래밍에서이 재미있는 문제에 직면했습니다.

+0

항상 내 네트워크에는 '네트워크가 Warid [0.0s 완료]'라고 표시됩니다. – thefourtheye

+2

@thefourtheye : 파이썬 3.3에서 해시 무작위 화를 사용하면 사전 순서가 실행간에 다를 수 있습니다. 따라서 완전히 무작위로, 'Ufone'이 먼저 나열되고 일치하지 않을 수 있습니다. –

+0

@thefourtheye 답변에 의견 줄을 추가하십시오. –

답변

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에 반환 할 때까지 .

+0

또한,'items()'/'iteritems()'를 사용하여 dict를 반복하는 것이 합리적 일 것입니다. – Esenti

+0

@Esenti : 물론 그렇습니다.하지만 여기에는 문제가 없습니다. OP는 파이썬 학습 3 일; 그들을 세부적으로 압도하는 것은 필연적으로 도움이되지 않을 것입니다. –