Повторение функции заданное количество раз в python

#python #function #loops #jython #repeat

#python #функция #циклы #jython #повторить

Вопрос:

Я делаю вводный класс, и меня просят повторить функцию определенное количество раз, как я уже сказал, это вводная часть, поэтому большая часть кода написана, поэтому предположим, что функции были определены. Я должен повторять tryConfiguration(floorplan,numLights) количество запросов времени numTries . любая помощь была бы потрясающей: D спасибо.

 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.
  

Комментарии:

1. Мы рады помочь вам с этими проблемами в StackOverflow, но, пожалуйста, опубликуйте то, что вы уже пробовали.

Ответ №1:

Сначала позвольте мне дважды проверить, правильно ли я понял, что вам нужно: вы должны выполнять numTries последовательные вызовы tryConfiguration(floorplan,numLights) , и каждый вызов такой же, как и другие.

Если это так, и tryConfiguration является синхронным, вы можете просто использовать цикл for:

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

Пожалуйста, дайте мне знать, если я что-то упускаю: могут быть другие решения, такие как использование замыканий и / или рекурсии, если ваши требования отличаются.

Ответ №2:

Выполняйте цикл в диапазоне 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
  

Комментарии:

1. Для большого значения numTries используйте xrange() вместо. Разница в том, что xrange() перед запуском цикла не будет создан очень большой список в памяти.

2. @JamieCockburn, я отредактировал для xrange, xrange нужен только для python2

Ответ №3:

Когда мы говорим о многократном повторении определенного блока кода, обычно хорошей идеей является использование какого-либо цикла.

В этом случае вы могли бы использовать «цикл for»:

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

Более интуитивным способом (хотя и более неуклюжим) может быть использование цикла while:

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

Комментарии:

1. Обычно в python мы также используем __ для указания неиспользуемого значения: for __ in range(numtries): ...