Stackoverflow, привет.
Мне нужно взять переменную (список) из моей функции. Однако я не могу этого сделать, и в результате получается пустой [], несмотря на то, что у меня точно такой же процесс для другой функции, и я МОГУ получить оттуда переменную.
Код:
cook_book={}
dishnumber=[]
dishnames_string = []
ingridient_names_final=[]
ingridient_quantity=[]
ingridient_measure=[]
ingridient_names = []
def dishnumbersearch():
with open ('recipes.txt') as f:
for line in f:
line = line.strip()
# print (line)
line2=line.split()
try:
a=int(list(line2[0])[0])
dishnumber.append(a)
except ValueError:
pass
except IndexError:
pass
except ValueError:
pass
dishnumbersearch()
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:
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('_')
from itertools import groupby
ingridient_names_final=[list(g) for k, g in groupby(ingridient_names, key=lambda i: i != '_') if k]
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(dishnames_string)
Я могу взять переменную из функции, во втором случае print (ingridient_names_final)
переменная может быть получена только ВНУТРИ функция.
PS Кстати, если я удаляю print (ingridient_names_final)
внутри функции - тоже пустые скобки.
'recipes.txt' здесь:
Omelette
3
Egg | 2 | PCS
Milk | 100 | ml
Tomato | 2 | PCS
Peking Duck
4
Duck | 1 | PCS
Water | 2 | l
Honey | 3 | tbsp
Soy sauce | 60 | ml
Baked potato
3
Potato | 1 | kg
Garlic | 3 | cog
Gouda cheese | 100 | g
Fajitos
5
Beef | 500 | g
Sweet pepper | 1 | PCS
Pita bread | 2 | PCS
Wine Vinegar | 1 | tbsp
Tomato | 2 | PCS