2014-10-09 20 views
3

我還在學習Python和我不知道是否有以下一個「更Python」的方式:什麼是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是的,我想有時候我overthink的東西太多想成爲Python的:) – pepoluan 2014-10-09 07:51:36

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 

編輯:據最新quesiton

更新。

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

Ahahaha,是有意義的。我可能已經過分簡化了這個例子......'response'變量實際上在'if'語句之前使用。我將編輯我的帖子。 – pepoluan 2014-10-09 07:48:31

+1

@pepoluan然後你的代碼非常好:) – TerryA 2014-10-09 07:52:31

+1

@pepoluan然後我認爲只要用'xrange'來代替'range'就足夠了。在'=='之前寫入0是避免誤寫爲'='的推薦方法。順便說一句,我認爲PEP8將回答你的許多問題。 – 2014-10-09 07:56:34

相關問題