2013-06-14 2 views
-3

Я пытаюсь сделать петлю питона, где выход используется в качестве входа, до выхода и вход эквивалентно, это утверждение, что я пытаюсь решить:Python вход = выход контура

1 
----- = x 
1+x 

Результат будет на 1 меньше, чем золотой коэффициент (0.618034 ...), я сделал это на бумаге, и он занимает около 20 петель за несколько десятичных знаков точности. Скажите, пожалуйста, какой тип цикла python я бы использовал, чтобы решить эту проблему?

+6

Цикл 'while'. – shashwat

+0

@shashwat - Это именно то, что ** комментарий, который я собирался опубликовать ... – mgilson

+1

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

ответ

1

Итак, основываясь на том, что вы здесь описываете, вам нужен цикл while, так как вы хотите продолжать что-то делать, пока данное условие не станет истинным.

lastOutput = 0; # an arbitrary starting value: the last output value 
       # needs to be shared between loop cycles, so its 
       # scope must be outside the while loop 

startingValue = # whatever you start at for input 
finished = False # flag for tracking whether desired value has been reached 
while (!finished): 
    # body of loop: 
    # here, you need to take lastOutput, run it through the 
    # function again, and check if the new output value is the 
    # same as the input that created it. If so, you are done, 
    # so set the flag to True, and note that the correct value is now stored in lastOutput 
    # If not, set the new output as lastOutput, and go again! 

# ...and now finish up with whatever you want to do now that you've 
# found the value (print it, etc.)! 

Что касается логики для проверки того, что значения совпадают, вам нужно будет иметь какое-то пороговое значение для точных целей (в противном случае он будет работать вечно!), И я рекомендовал бы писать, что проверить свой собственный метод для модульности.

Надеюсь, что это поможет, и просто дайте мне знать, если вам нужно, чтобы я опубликовал более актуальный код (я старался не выдавать слишком много фактического кода).

+0

Я собирался использовать функцию округления как пороговое значение. –

Смежные вопросы