2015-02-10 5 views
-2

Я не совсем уверен, пока цикл while создает бесконечный цикл.Бесконечный цикл в то время как

def read_m_by_rating(first_year,last_year,top_number): 
current_index=1 
final_list=[] 
while current_index <=top_number: 
    url="http://www.imdb.com/search/title?at=0&sort=user_rating&start="+str(current_index)+"&title_type=feature&year=2005,2014" 
    print url 
    if top_number==55: 
     lis=read_m_from_url(url,top_number-current_index+1) 
    else: 
    lis=read_m_from_url(url,50) 
final_list=lis 
current_index +=50 
return final_list 
read_m_by_rating(2005,2015,55) 
+0

Откат назад: _I исправлена ​​проблема с отступом, с которой у меня была раньше, и она работает сейчас. –

ответ

2

Вот ваш цикл:

while current_index <=top_number: 
    url="http://www.imdb.com/search/title?at=0&sort=user_rating&start="+str(current_index)+"&title_type=feature&year=2005,2014" 
    print url 
    if top_number==55: 
     lis=read_m_from_url(url,top_number-current_index+1) 
    else: 
    lis=read_m_from_url(url,50) 

Вот операторы внутри этого цикла, которые изменяют current_index:

  

Вот операторы внутри этого цикла, которые изменяют top_number:

  

Обратите внимание, что нет строк, которые изменяют одну из этих переменных. Может быть, должно быть?

+0

@ Bill Lynch, текущий индекс увеличивается на 50 на каждой итерации, а top_number равен 55. – Alph

+3

@ Phil2014: Код вы опубликовали очень четко, это не делает. Обратите внимание, что python использует отступ для обозначения, когда начинается и заканчивается блок кода. Строка 'current_index + = 50' имеет тот же отступ, что и' while current_index <= top_number: 'поэтому он явно не находится внутри цикла. Возможно, код, который вы отправили в своем вопросе, нужно исправлять, чтобы он выглядел как код, который вы на самом деле запускаете? –