Как иметь новый список для каждого входа

Я пытаюсь отредактировать ввод, введенный для каждого дня. Я создал функцию input_sales_day, которая содержит количество продуктов для ввода в течение дня, функцию input_sales, которая принимает количество продуктов и дней в качестве параметров, где, как мне кажется, кроется проблема, и последнюю функцию, которая просто печатает. Я пытался использовать split, но всегда получаю сообщение об ошибке или вместо этого просто печатаю каждое слово.

Вот код, он печатает:

Product name: z1
quantity sold : 1
Product Name: z1
quantity sold : 1
Product name : z2
quantity sold : 2
Product Name: z2
quantity sold : 2
Product name : z3
quantity sold : 3
Product Name: z3
quantity sold: 3
Day 1 : ['1 z1', '1 z1']
Day 2 : ['1 z1', '1 z1', '2 z2', '2 z2']
Day 3: ['1 z1', '1 z1', '2 z2', '2 z2', '3 z3', '3 z3']

Я пытаюсь напечатать:

Day 1: ['1 z1', '1 z1']
Day 2 : ['2 z2', '2 z2']
Day 3 : ['3 z3', '3 z3']
p = []
def input_sales_day(nbp):
    for i in range(nbp):
        np = input("Product Name: ")
        qv = input("quantity sold : ")
        p.append('{} {}'.format(qv, np))
    return p

def input_sales(nbp, d):
    sl = []
    for j in range(d):
        n = input_sales_day(nbp)
        sl.append('day {} : {}'.format(j+1, n))
    return sl

def print_sales(sl):
    return '\n'.join(sl)

print(print_sales(input_sales(2, 3)))

Если вы хотите, чтобы каждый день был отдельным, переместите строку p = [] ВНУТРИ функции input_sales_day. Затем каждый вызов функции создает новый список.

Tim Roberts 23.11.2022 01:39

о, я потратил около часа, задаваясь вопросом, что не так, пытался что-то изменить и получил всевозможные ошибки с разделением, а также проверил старый вопрос, который немного похож, но не сработал: / спасибо, это отмечено.

Yao Min 23.11.2022 01:51
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
55
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Все, что вам нужно сделать, это сделать p локальной переменной функции input_sales_day. Если вы сделаете это, то p будет сбрасываться при каждом вызове. Так:

def input_sales_day(nbp):
    p = []
    for i in range(nbp):
        np = input("Product Name: ")
        qv = input("quantity sold : ")
        p.append('{} {}'.format(qv, np))
    return p


def input_sales(nbp, d):
    sl = []
    for j in range(d):
        n = input_sales_day(nbp)
        sl.append('day {} : {}'.format(j+1, n))
    return sl


def print_sales(sl):
    return '\n'.join(sl)


print(print_sales(input_sales(2, 3)))

Вы не удаляете старые значения из списка p, поэтому, когда вы переходите на следующий день, данные предыдущего дня все еще находятся в списке, вам нужно менять способ их печати или удалять их каждый день.

Другие вопросы по теме