Как экспортировать результат из функции? (обновлено с большим количеством кода) - PullRequest
0 голосов
/ 07 апреля 2020

Stackoverflow, привет. Я не нашел никакой информации об экспорте данных (список в моем случае) из «функции»

Конец моего кода:

def namesearch():
    with open ('recipes.txt') as f:
        dishnames = []
        for line in f:
            line = line.strip()
            # print (line)
            line2=line.split()
            if len(line2) <= 3:
                pass
                try:
                    a=(int(line2[0])/1)
                except IndexError:
                    pass
                except ValueError:
                    dishnames.append(line2)
        for i in dishnames:
            if len(i) > 1:
                j=' '.join(i)
            else:
                j = str(i[0])
            dishnames_string.append(j)

namesearch()

def search_ingridientsnames():
    with open('recipes.txt') as f:
        ingridient_names = []
        for line in f:
            line = line.strip()
            # print (line)
            line2 = line.split()
            try:
                i=0
                if len(line2) > 3 or len(line2)<1:
                    ingridient_names.append(line2[0])
            except IndexError:
                ingridient_names.append('_')
        # print(ingridient_names)
    ingridient_names_final=[i.split(',') for i in ','.join(ingridient_names).split(',_,')]
print(ingridient_names_final)
search_ingridientsnames()

print (dishnames_string)
print (ingridient_names_final)

Результат -

>> [['Egg', 'Milk', 'Tomato'], ['Duck', 'Water', 'Honey', 'Soy'], ['Potato', 'Garlic', 'Gouda'], ['Beef', 'Sweet', 'Pita', 'Wine', 'Tomato']]
>> ['Omelette', 'Peking Duck', 'Baked potato', 'Fajitos']
[]

Вы это видите? Первый print(ingridient_names_final) в конце функции - запись списка из функции и все в порядке. Как видите, у меня есть другое значение из функции, print (dishnames_string), которое также является частью функции - результатом работы является список. Однако, когда я снова печатаю значение из функции print (search_ingridientsnames) - результат равен []. И я даже не могу написать print (list (search_ingridientsnames)) - результат - ошибка. Как я могу получить тот же результат при запуске функции?

Результат должен быть:

>> [['Egg', 'Milk', 'Tomato'], ['Duck', 'Water', 'Honey', 'Soy'], ['Potato', 'Garlic', 'Gouda'], ['Beef', 'Sweet', 'Pita', 'Wine', 'Tomato']]
>> ['Omelette', 'Peking Duck', 'Baked potato', 'Fajitos']
>> [['Egg', 'Milk', 'Tomato'], ['Duck', 'Water', 'Honey', 'Soy'], ['Potato', 'Garlic', 'Gouda'], ['Beef', 'Sweet', 'Pita', 'Wine', 'Tomato']]

UPD

However, if I try to enter print (search_ingridientsnames()) as everybody helps, the result is the required list and

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Из первых рук я могу сказать, что python интерпретирует результат оператора print как объект и, следовательно, печатает то, что вы видите на консоли. Вам нужно написать это как print (search_ingredientsname ()).

0 голосов
/ 07 апреля 2020

Код печатает именно то, что вы просили. Для распечатки результата функции нужно использовать:

print (search_ingridientsnames())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...