Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 11, 2021 15:21:03

Typical_beginer
Зарегистрирован: 2020-12-29
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Нулевая дата или нереализованный заказ

Добрый день!
По заданию нужно вывести количество людей,чьи заказы не были выданы(по задаче только фио заказчика,дата подачи заказа,дата выдачи заказа,больше нельзя)
Сначала вводим дату подачи заказа,а потом дату выдачи.

Я подумал что почему бы в дате выдачи не ввести такой формат даты 00.00.0000
То есть имея такую нулевую дату,можно предположить,что заказ не выполнен(так как не было даты выдачи)
Ниже реализована метод класса(отрывок из программы)

 #Сколько заказов не было удовлетворено(если в дате выдачи будет 0)
      def failorders(self):
            countord=0
            for bookorder in bookorders:
                  if self.datetakeorder=='00.00.00':
                        countord+=1
            print("Количество неудовлетворённых заказов = ", сountord)

Но к сожалению выскакивает ошибка,конечно же ругается на формат даты.
Как можно исправить такую ошибку и реализовать свою задачу?

Офлайн

#2 Янв. 11, 2021 15:51:42

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Нулевая дата или нереализованный заказ

Typical_beginer
Я подумал что почему бы в дате выдачи не ввести такой формат даты 00.00.0000
А почему бы не использовать специальный тип, предназначенный как раз для случаев, когда для переменной нет никаких данных?
https://pythonworld.ru/tipy-dannyx-v-python/none.html



Офлайн

#3 Янв. 11, 2021 18:19:28

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2751
Репутация: +  184  -
Профиль   Отправить e-mail  

Нулевая дата или нереализованный заказ

> Но к сожалению выскакивает ошибка,конечно же ругается на формат даты.

Он должен ругаться на переменную countord которую ты написал с ошибкой в последней строке.

> То есть имея такую нулевую дату,можно предположить,что заказ не выполнен(так как не было даты выдачи)

Это не правильно, дата не фиксирует факт выполнения заказа. Для этого нужен отдельный атрибут.

> Я подумал что почему бы в дате выдачи не ввести такой формат даты 00.00.0000

Так делать нельзя. Даты и строки представлены разными типами данных по этому их нельзя смешивать. Можно использовать date(1,1,1) или 0 в случае если даты находятся в timestamp. По этой же причине None тоже лучше не использовать.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#4 Янв. 12, 2021 01:01:54

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Нулевая дата или нереализованный заказ

Typical_beginer
Ниже реализована метод класса
  
#Сколько заказов не было удовлетворено(если в дате выдачи будет 0)
      def failorders(self):
            countord=0
            for bookorder in bookorders:
                  if self.datetakeorder=='00.00.00':
                        countord+=1
            print("Количество неудовлетворённых заказов = ", countord)
Алгоритмически похоже не ерунду какую-то.

Typical_beginer
Я подумал что почему бы в дате выдачи не ввести такой формат даты 00.00.0000
Для этого есть None. Он есть и в питоне, и в json'е, и в СУБД разных. Лучше задаться вопросом “как так получилось, что ты не можешь там None использовать?”, чем придумывать костыли, которые потом где-нибудь выплывут в отдалённом будущем.



Офлайн

#5 Янв. 12, 2021 15:23:22

Typical_beginer
Зарегистрирован: 2020-12-29
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Нулевая дата или нереализованный заказ

Всем спасибо за советы!
Rodegast прав,лучше создать отдельный атрибут,который и будет отвечать за выполнение заказа.
Следовательно я его уже создал,заполнил и буду работать по нему,как требует задание.

Также спасибо всем,кто объяснил что с датой делать так нельзя.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version