2014-10-09 5 views
3

는 여전히 파이썬을 배우고, 나는 다음에 대해 "더 파이썬"방법이 궁금 :"조건 충족 또는 최대 달성까지이 작업을 반복하는 Pythonic 방법은 무엇입니까?

MAX_ATTEMPTS = 5 
for i in range(MAX_ATTEMPTS): 
    response = do_something() 
    do_something_based_on(response) 
    do_another_thing_based_on(response) 
    if response == 0: 
     do_something_if_success() 
     break 

편집 : 사건을 단순화를 통해 사과, 내가있을 수 있습니다. 최종 검사 전에 response을 사용해야하므로 변수로 캡처해야합니다.

답변

2

이것은 원하는대로 구현할 수있는 완벽한 방법입니다.

아마도 이중 반복 생성기를 포함하여 다양한 기능적 방식으로이 작업을 수행 할 수 있지만 이처럼 간단하지는 않습니다.

+0

소리가 복잡하다 : D 그래, 내가 때때로 Pythonic이 되려 노력하는 것을 너무 많이 생각해 보았다. :) – pepoluan

3

나는이 방법은 당신보다 더 많은 메모리를 절약 할 생각 :

#!/usr/bin/env python 
#-*- coding:utf-8 -*- 

MAX_ATTEMPTS = 5 
for i in xrange(MAX_ATTEMPTS): 
    if 0 == do_something(): 
     do_something_if_success() 
     break 

편집 :

업데이트가 최신 후 질문에 따라.

+0

Ahahaha, 이해가가. 나는 사건을 지나치게 단순화했을 수도있다.'response' 변수는 실제로'if' 문 앞에 사용된다. 나는 내 글을 편집 할 것이다. – pepoluan

+1

@pepoluan 그렇다면 코드가 완벽합니다. – TerryA

+1

@pepoluan 그렇다면 '범위'를 'xrange'로 바꾸면 충분합니다. '=='앞에 0을 쓰는 것은 실수로 '='로 쓰지 않는 것이 좋습니다. BTW, PEP8이 많은 질문에 답할 것이라고 생각합니다. –