Найти - Пользователи
Полная версия: Нужна помощь! Решение задачи в Python срабатывает неверно
Начало » Python для новичков » Нужна помощь! Решение задачи в Python срабатывает неверно
1
Ana_st
Добрый день! Я начала изучать Python и никак не могу решить задачу( Помогите пожалуйста исправить код
Задание:
Пользователь может удалить существующую полку из данных (только если она пустая).
Введите номер полки:
3
Результат:
Полка удалена. Текущий перечень полок: 1, 2.

У меня же при попытке удалить пустую полку пишет, что на полке есть документы

Данно
   
documents = [
{'type': 'passport', 'number': '2207 876234', 'name': 'Василий Гупкин'},
{'type': 'invoice', 'number': '11-2', 'name': 'Геннадий Покемонов'},
{'type': 'insurance', 'number': '10006', 'name': 'Аристарх Павлов'}
]
directories = {
'1': ['2207 876234', '11-2'],
'2': ['10006'],
'3': []
}


Мое решение
   
def del_shelf(directories):
 for shelf, values in directories.items():
  shelf = input('Введите номер полки: ')
  if shelf not in directories:
       return 'Такой полки не существует. Текущий перечень полок: ',  ','.join("{}".format(key) for key in directories.keys())
  elif shelf in directories:
     #if values not in directories.values():
     if not values:
       del(directories[shelf])
       return 'Полка удалена. Текущий перечень полок: ', ','.join("{}".format(key) for key in directories.keys())
     else:
       return 'На полке есть документы, удалите их перед удалением полки. Текущий перечень полок:', ','.join("{}".format(key) for key in directories.keys())
 
del_shelf(directories)
FishHook
Ana_st
а вот объясните, почему у вас input('Введите номер полки: ') внутри цикла, который перебирает словарь полок?
py.user.next
Ana_st
Задание:
Пользователь может удалить существующую полку из данных (только если она пустая).

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

Вообще, алгоритм сначала записывается словесно, затем для этого словесного описания рисуется блок-схема, затем для этой блок-схемы пишется псевдокод, а уже потом для этого псевдокода пишется код (причём на любом языке, сегодня - на питоне, завтра - на си, послезавтра - на яве). Сначала ты это делаешь на бумаге всё, потом в компьютере, а потом в воображении. Так ты и придёшь к тому, чтобы сразу записывать правильно код. Вся программа будет разрабатываться в воображении, а записываться в исходник будет уже результат работы в воображении. Ты просто будешь из своей памяти переписывать это в память компьютера.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB