2016-09-04 3 views
-1

Я новичок в питоне или кодировании в целом. И столкнулся с некоторым вопросом цикла в следующем коде.Когда python во время перерыва цикла?


a = int(input('input a number here: ')) 

def largest_factor(x): 
    factor = x - 1 
    while factor > 0: 
     if x % factor == 0: 
      return factor 
     factor -= 1 
     print(factor) 

largest_factor(a) 

Я использую Python 3.5, и в моем понимании, цикл не будет ломаться до 0> 0, так что я не поставил печать (фактор) для экзамена, который, тем не менее, это остановился на самом большом коэффициенте (например, когда x = 100, коэффициент печати от 99 до 50 и остановился), и не достиг 0. 0. Оператор return убил цикл while? Спасибо за ваше время.

+2

Да, потому что возврат завершает функцию, вы можете «выдать коэффициент», затем либо «print (list (most_factor (a))), либо перебрать функцию генератора' for f в файле large_factor (a): print (f) 'http://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do-in-python –

+0

Оператор' return' не влияет на цикл 'while' напрямую; скорее он выходит из функции 'most_factor (x)'. Вы можете сохранить цикл живым, используя 'yield' вместо этого, если ваша цель состояла в том, чтобы многократно называть' most_factor', и цикл должен сохранять значения. – Jeff

+0

Подозрительный вопрос. Слишком хорошо разработан, чтобы привлечь внимание многих хороших разработчиков. – jgomo3

ответ

0

Есть два способа оставить этот цикл, ожидая, пока оператор while не завершится или не вернет коэффициент.

0

Ваше предположение верно. Как только петля ударит оператор return, функция завершится. Поскольку 100 делится на 50, цикл заканчивается завершением функции.

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