Как заставить инструкцию else выводить результат только после того, как весь файл будет повторен?

#python

Вопрос:

Я должен написать программу на python для решения следующей проблемы

Напишите полную и синтаксически правильную программу на Python для решения следующей проблемы: Напишите программу для владельца местной кофейни, который хочет иметь возможность контролировать свой инвентарь. Программа должна быть написана в соответствии со следующими спецификациями:

  1. Запишите следующие данные во внешний файл, назовите файл coffeeInventory.txt Описание Фунты Светлого Жаркого 15 Среднего Жаркого 21 Ароматизированное Жаркое 10 Темное Жаркое 12 Коста-Рика Тарразу 18
  2. Вам не нужно писать таблицу, только данные
  3. Прочтите в записях, которые вы только что написали coffeeInventory.txt и выведите их на экран и подсчитайте общее количество фунтов кофе
  4. Добавьте эти записи в файл Гватемала Антигуа 22 Смесь для дома 25 Смесь для дома без кофеина 16
  5. Измените файл, разрешив владельцу удалить данные из файла: a. Попросите владельца ввести описание для удаления b. Если описание существует, удалите название кофе и количество. Если описание не найдено, отобразите сообщение: Этот элемент не был найден в файле.
  6. Измените файл, разрешив владельцу удалить данные из файла: a. Попросите владельца ввести описание для удаления b. Если описание существует, удалите название кофе и количество c. Замените название и количество кофе, удаленные на шаге b, попросив пользователя ввести новое название кофе и количество d. Если описание не найдено, отобразите сообщение: Этот элемент не был найден в файле.

это то, что у меня есть до сих пор

 cof= open('coffeeInventory.txt', 'w')
cof.write('Blonde Roast: 15 poundsn')
cof.write('Medium Roast: 21 poundsn')
cof.write('Flavored Roast: 10 poundsn')
cof.write('Dark Roast: 12 poundsn')
cof.write('Costa Rica Tarrazu: 18 poundsn')
cof.close()
cof=open('coffeeInventory.txt', 'r')
cof_read=cof.read()
cof.close()

sum_lb=15 21 10 12 18


cof=open('coffeeInventory.txt', 'a')
cof.write('Guatemala Antigua: 22 poundsn')
cof.write('House Blend: 25 poundsn')
cof.write('Decaf House Blend: 16 poundsn')
cof.close()
sum_lb=sum_lb 22 25 16
cof=open('coffeeInventory.txt', 'r')
cof_read=cof.read()
cof.close()
print(cof_read)
print('Sum of pounds of coffee: ', sum_lb)


delete=input('Enter a coffee description to delete it: ')
cof=open('coffeeInventory.txt', 'r')
cof_read=cof.readlines()
cof.close()
new_cof=open('coffeeInventory.txt', 'w')
for line in cof_read:
    if delete.lower().replace(' ','') not in line.lower().replace(' ',''):
        new_cof.write(line)
    else:
        print("That coffee does not exist")
        
cof.close()

new_description=input("Enter a new coffee description and its weight in pounds.")

new_cof=open('coffeeInventory.txt', 'a')
new_cof.write(new_description)
new_cof.close()


new_cof=open('coffeeInventory.txt', 'r')
print(new_cof.read())
new_cof.close()
 

Проблема, с которой я сталкиваюсь, заключается в том, что строка That coffee does not exist выводится для каждой повторенной строки, а не только один раз. Как мне сделать так, чтобы он распечатывался только после того, как весь файл будет повторен?

Комментарии:

1. Вы распечатали delete.lower().replace(' ','') и проверили, то же ли это

Ответ №1:

Все, что вам нужно, — это флажок, чтобы сохранить, был ли найден кофе.

 found = False
for line in cof_read:
    if delete.lower().replace(' ','') not in line.lower().replace(' ',''):
        new_cof.write(line)
    else:
        found = True

if not found: 
    print("That coffee does not exist")
 

Более оптимизированный способ заключается в следующем. Это предполагает, что в файле нет дублирующего описания кофе.

 key = delete.lower().replace(' ','')
for line in cof_read:
    if found or (key not in line.lower().replace(' ','')):
 

Комментарии:

1. Большое Вам спасибо!