def ruh(q, dic ): if q == "выход" : return 'выход' elif q not in dic: print('Ошибка ввода. Попробуйте снова.') elif q in dic: a = dic[q] grosi.append(a[1]) #________________________________________________________________ def rut(q, dic ): if q not in dic: print('Ошибка ввода. Попробуйте снова.') elif q in dic: a = dic[q] grosi.append(a[1]) list.append(a[0]) return 1 #______________________________________________________________________ def zak(list, grosi): print('Ваш заказ:') for n in list2: print(n) p = sum(grosi) print('С вас:' + str(p)+'грн') #_________________________________________________________________________ def nap(dic): for ky, n in dic.items(): str(n[1]) print('\t' + ky + ' : ' + n[0] + ' - ' + str(n[1])+'грн.' ) #_________________________________________________________________ list = [] flag = True grosi = [ ] dic = {'1' : ['Маленькая' , 20] , '2' : ['Стандарт', 25] , '3' : ['Большая', 30]} dic2 = {'1' : ['Обычный', 0], '2' : ['Сырный', 3]} dic3 = {'1' : ['Грибы' , 3] , '2' : ['Сыр' , 2] , '3' : ['Картошка', 2] , '4' : ['Маслины' , 2] } #___________________________________________________________________ print("---------------------------------") print("Заказ шавухи") print("---------------------------------") print("Выбирете размер шавухи:") nap(dic) while True: q = str(input(" ")) rut(q, dic ) if rut(q, dic) == 1: break print (list) print("\nВыбирете лаваш:") nap(dic2) while True: q = str(input(" ")) rut(q, dic2) if rut(q, dic) == 1: break print (list) while True: s = str(input('\nС острым соусом?' + '\n\t1 : да ' + '\n\t2 : нет' + '\n')) if s == '1': list.append("Острая") break elif s != '2': print('Ошибка ввода. Попробуйте снова.') print (list) 

That's what happens. What have I done wrong?

    1 answer 1

    Because you call the function 2 times. Try this

     .... while True: q = str(input(" ")) if rut(q, dic) == 1: break print(list) print("\nВыбирете лаваш:") nap(dic2) while True: q = str(input(" ")) if rut(q, dic) == 1: break print(list) ....