2013-03-30 3 views
2

. Следуя онлайн-курсу о Python, нам было предложено написать определенную программу самостоятельно. Это было не для отметки, а только для практики. Мне не нужна помощь в решении этой проблемы, но мне нужна помощь в том, почему мой код не делает то, что я думал, что он будет делать.Python: цикл for не перебирает все элементы в списке.

The (соответствующая) часть кода заключается в следующем:

raw_restaurants = file.readlines() 

print(raw_restaurants) 

restaurants = [] 
information = [] 
for i in raw_restaurants: 
    if len(information) < 5: 
     information.append(i.strip()) 
    if len(information) == 5: 
     restaurants.append(information) 
     information = [] 

И это список используется. Исходный список - это файл, созданный с помощью файла file.readlines().

['Georgie Porgie\n', '87%\n', '$$$\n', 'Canadian,Pub Food\n', '\n', 
'Queen St. Cafe\n', '82%\n', '$\n', 'Malaysian,Thai\n', '\n', 
'Dumplings R Us\n', '71%\n', '$\n', 'Chinese\n', '\n', 
'Mexican Grill\n', '85%\n', '$$\n', 'Mexican\n', '\n', 
'Deep Fried Everything\n', '52%\n', '$\n', 'Pub Food\n'] 

Проблема заключается в том, что моя функция дает в качестве вывода:

[['Georgie Porgie', '87%', '$$$', 'Canadian,Pub Food', ''], 
['Queen St. Cafe', '82%', '$', 'Malaysian,Thai', ''], 
['Dumplings R Us', '71%', '$', 'Chinese', ''], 
['Mexican Grill', '85%', '$$', 'Mexican', '']] 

Это означает, что вся часть о Deep Fried Все еще disseapeared. Кто-нибудь знает, что я делаю неправильно?

+1

Обратите внимание, что после редактирования вашего вопроса немного для большей удобочитаемости, ошибка становится очевидной ... – Floris

ответ

5

Вы только Прошлые пустой строке Mexican Grill записи, так что тест if len(information) == 5: никогда не станет True.

Просто добавьте information еще один раз, если есть элементы в нем:

for i in raw_restaurants: 
    if len(information) < 5: 
     information.append(i.strip()) 
    if len(information) == 5: 
     restaurants.append(information) 
     information = [] 
if information: 
    restaurants.append(information) 
+0

+1 не только для выявление проблемы, но предоставление обходного пути (даже если входной файл неисправен, он интерпретируется правильно). – Floris

+0

Спасибо, сейчас работает! – Reinier