#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): ...