Добавление товаров в список покупок Python

Я изучаю Python и пытаюсь составить список покупок где вы можете добавлять предметы

сначала он попросит вас добавить товары, если список покупок пуст он будет добавлен автоматически, если нет, он спросит вас, где вы хотите поставить товар (индекс)

но также я пытаюсь выйти из программы в определенном состоянии, например DONE или ПОМОЩЬ или ПОКАЗАТЬ, но даже то, что я поставил условие для этого, но оно не работает, может ли кто-нибудь помочь мне с этим

надеюсь, я достаточно объяснил

import os 
shopping_list =[]

# Function for clearing the screen 
def clear_screen():
    os.system("cls" if os.name == "nt" else "clear")

def show_help():
    print("Enter 'Done' if you finish adding item \n Enter 'Show' to show your items \n Enter 'Help' toshow this help ")

# Function to show the items that you've entered to the list
def show_item():
    clear_screen()
    index = 1
    for item in shopping_list:
        print("{} {}.".format(index,item))
        index += 1

# Function to add items to the list    
def add_to_list():
    while True:
        new_item = input("Please enter the item that you would like to add to your shopping list ")
        if shopping_list and ((new_item.upper() != "DONE") or (new_item.upper() != "HELP") or (new_item.upper() != "SHOW")):
            position = input("Where you would like to add {} to the list \n press 'Enter' if you want to add to the end of the list".format(new_item))
            position = abs(int(position))
            shopping_list.insert(position - 1 , new_item)
            show_item()
        else:

            if new_item.upper() == "DONE":
                break    
            elif new_item.upper() == "SHOW":
                show_item()
                continue
            elif new_item.upper() == "HELP":
                show_help()
                continue
            else:
                shopping_list.append(new_item)
            show_item()

show_help()
add_to_list()
Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
0
491
1

Ответы 1

Добро пожаловать в stackoverflow. Думаю, ваше логическое утверждение неверно, вам нужен and вместо or. Прямо сейчас все, что вам нужно для того, чтобы утверждение в скобках было верным, - это то, что new_item.upper() не входит по крайней мере в одно из этих трех слов. На самом деле это не может приравниваться к False, поскольку два из трех всегда истинны.

((new_item.upper() != "DONE") or (new_item.upper() != "HELP") or (new_item.upper() != "SHOW"))

Если у вас есть, например, done, первый оператор - это Ложь, а два других - Правда, добавляя к Правда в операторах or.

>>> new_item = 'done'
>>> print((new_item.upper() != "DONE") or (new_item.upper() != "HELP") or (new_item.upper() != "SHOW"))
True

Спасибо, чувак, это сработало для меня, я очень ценю это :)

Khaled Khanfar 09.11.2018 14:07

Тогда вы можете отметить ответ как accepted, чтобы было ясно, что вопрос, так сказать, закрыт. Повеселись!

Bernhard 09.11.2018 14:22

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