Member 13554627 Ответов: 2

Потеря переменных списка в цикле while


Я пытаюсь составить список покупок с указанием в нем товара, цены и суммы. когда я выполняю код, список заполняется переменными, после чего я могу нажать q, чтобы продолжить/остановить или любую другую клавишу, чтобы добавить переменные снова, но затем предыдущие переменные исчезают.

кто-нибудь может мне помочь? ps Я новичок в программировании

Что я уже пробовал:

producten = {'appel': 2, "banaan": 3, 'peer': 4}

stop = False

for product, prijs in producten.items():
    print(" de Prijs voor een %(n)s is %(s)s" % {'n': product, 's': prijs})

while not stop:
    winkelwagen = input("Vul hier het gewenste product in: ")
    aantalproducten = int(input("Vul het aantal in: "))
    lijstboodschappen = []

    for product, price in producten.items():
        if winkelwagen in product:
            lijstboodschappen.append(product)
            lijstboodschappen.append(price)
            lijstboodschappen.append(aantalproducten)
            print(lijstboodschappen)

    response = input("druk op q om door te gaan: ")
    if response == 'q':
        stop = True

2 Ответов

Рейтинг:
14

OriginalGriff

Посмотрите на свой код: вы устанавливаете свою коллекцию на новый, пустой набор каждый раз, когда вы идете вокруг цикла:

while not stop:
    ...
    lijstboodschappen = []
Переместите эту линию за пределы петли, и ваша проблема исчезнет.

Вам нужно научиться пользоваться отладчиком: pdb — отладчик Python — документация Python 3.8.6rc1[^] - вы бы заметили эту проблему в считанные минуты самостоятельно, если бы это было так, и гораздо проще научиться правильно отлаживать небольшие приложения, подобные этому, чем оставлять их до тех пор, пока ваш код не станет намного сложнее! Дайте ему попробовать, это не трудно, как только вы получите повесить его.


Рейтинг:
0

Patrice T

Цитата:
или любой другой ключ, чтобы добавить переменные снова, но тогда предыдущие переменные исчезнут.

Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

27.3. ПДБ — отладчика Python — питон 3.6.1 документации[^]
Отладка в Python | Python покоряет Вселенную[^]
pdb – интерактивный отладчик - Python модуль недели[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.