2014-07-04 38 views
-1

我正在做一個介紹類,他們要求我重複一個函數一定的時間,因爲我說這是一個介紹,所以大部分代碼都是這樣寫的功能已被定義。我必須重複tryConfiguration(floorplan,numLights)時間量numTries請求。任何幫助都會很棒:D謝謝。在python中重複函數一段時間

def runProgram(): 
    #Allow the user to open a floorplan picture (Assume the user will select a valid PNG floodplan) 
    myPlan = pickAFile() 
    floorplan = makePicture(myPlan) 
    show(floorplan) 

    #Display the floorplan picture 

    #In level 2, set the numLights value to 2 
    #In level 3, obtain a value for numLights from the user (see spec). 
    numLights= requestInteger("How many lights would you like to use?") 

    #In level 2, set the numTries to 10 
    #In level 3, obtain a value for numTries from the user. 
    numTries= requestInteger("How many times would you like to try?") 

    tryConfiguration(floorplan,numLights) 

    #Call and repeat the tryConfiguration() function numTries times. You will need to give it (pass as arguments or parameterS) 
    # the floorplan picture that the user provided and the value of the numLights variable. 
+2

使用'for'循環。 – rlms

+1

我們很樂意在StackOverflow上幫助您解決這些問題,但請發佈您迄今爲止所嘗試的內容。 –

回答

1

在numTries範圍內循環並每次調用該函數。

for i in range(numTries): 
     tryConfiguration(floorplan,numLights) 

如果使用python2使用xrange,以避免在內存中創建整個列表。

基本上你正在做的:

In [1]: numTries = 5 

In [2]: for i in range(numTries): 
    ...:   print("Calling function") 
    ...:  
Calling function 
Calling function 
Calling function 
Calling function 
Calling function 
+0

對於大數值'numTries',請使用['xrange()'](https://docs.python.org/2/library/functions.html#xrange)。不同之處在於'xrange()'在啓動循環之前不會在內存中創建一個非常大的列表。 –

+0

@JamieCockburn,我編輯爲xrange,xrange只需要python2 –

0

當我們談論重複的代碼多次某個塊,它通常是使用某種類型的循環是個好主意。

在這種情況下,你可以使用「for循環」:

for unused in range(numtries): 
    tryConfiguration(floorplan, numLights) 

更直觀的方式(雖然笨重)可能是使用while循環:

counter = 0 
while counter < numtries: 
    tryConfiguration(floorplan, numLights) 
    counter += 1 
+0

通常在python中,我們也使用'__'來指示一個未使用的值:'__ in range(numtries):...' –

1

首先讓我雙檢查我是否明白你需要什麼:你必須將numTries連續呼叫置於tryConfiguration(floorplan,numLights),並且每個呼叫與其他呼叫相同。

如果是這樣,如果tryConfiguration是同步的,你可以只使用一個for循環:

for _ in xrange(numTries): 
    tryConfiguration(floorplan,numLights) 

請讓我知道如果我失去了一些東西:可能有其他解決方案,如利用關閉和/或遞歸,如果你的要求不同。