ackeee
@ackeee

Почему функция возвращает только первую итерацию?

Исходник - файл, в котором более 10 строк, но при вызове функция возвращает только первую итерацию, то есть первую строку исходного файла. Как вывести все исходные данные для дальнейшей работы с ними?
def f_readlist():
    with open('flats_list') as file_flats:
        consetsen = file_flats
        s = list()
        for s in consetsen:
            s = s.split()
            return s
print(f_readlist())
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
@o5a
Не нужно использовать одинаковые переменные для разных по сути объектов, как минимум будете путаться, как максимум получите подобные ошибки (речь в данном случае про s, которую используете как список, но потом ее же используете как переменную для чтения строки из файла).

Если цель была прочитать все строки с разбитием по пробелам во вложенный список, то сделайте так (consetsen в данном случае вообще лишний):

def f_readlist():
    with open('flats_list') as file_flats:
        s = list()
        for row in file_flats:
            s.append(row.split())
    return s
print(f_readlist())
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ternick
@Ternick
В вашем коде чёрт ногу сломит :)
А вообще проблема в табуляции, return находиться в цикле и по этому происходит, только первая итерация.
FIX
def f_readlist():
    with open('flats_list') as file_flats:
        consetsen = file_flats
        s = list()# s список
        for s in consetsen:#s строка
            s = s.split()# s список
        return s
print(f_readlist())

Но что-то мне подсказывает ваш код всё ещё не будет работать, так как вы хотите, из-за непонятных манипуляций с переменной s.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы