Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
177 changes: 177 additions & 0 deletions .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

65 changes: 64 additions & 1 deletion Урок 8. Практическое задание/task_1.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,68 @@
год, преобразовывать их тип к типу «Число» и делать атрибутами класса.

Второй, с декоратором @staticmethod, должен проводить валидацию числа, месяца
и года (например, месяц — от 1 до 12). Проверить работу полученной структуры на реальных данных.
и года (например, месяц — от 1 до 12). Проверить работу полученной структуры
на реальных данных.
"""


class Date:
day_month_year = ""

@classmethod
def get_int_values(cls):
try:
print(Date.day_month_year.split('-'))
except BaseException as e:
print(f"Errors: {e}")

@staticmethod
def validate_data():
try:
__errors = []
__year = int(Date.day_month_year.split('-')[2])
__month = int(Date.day_month_year.split('-')[1])
__day = int(Date.day_month_year.split('-')[0])
_days = -1

if __year < 1000:
__errors.append(f"Некорректный формат года: [{__year}]")

if __month < 1 or __month > 12:
__errors.append(f"Некорректный формат месяца: [{__month}]")

if __month == 1 \
or __month == 3 \
or __month == 5 \
or __month == 7 \
or __month == 8 \
or __month == 10 \
or __month == 12:
_days = 31
elif __month == 4 \
or __month == 6 \
or __month == 9 \
or __month == 11:
_days = 30
elif __year % 4 == 0 and __year % 100 != 0 or __year % 400 == 0:
_days = 29
else:
__days = 28

if (__day > _days or __day < 1) and len(__errors) == 0:
print(f"Некорретное число дней в месяце: [{__day}]")

if len(__errors) > 0:
print("Ошибки при проверке даты:")
for el in __errors:
print(el)
else:
print(f"Формат даты корректный: {Date.day_month_year}")

except BaseException as e:
print(f"Error: {e}")


Date.day_month_year = "31-11-2022"
Date.validate_data()
Date.get_int_values()
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

31 changes: 28 additions & 3 deletions Урок 8. Практическое задание/task_2.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,32 @@
"""
Задание 2.

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


class ZeroDivOwn(Exception):
def __init__(self, text):
self.text = text


try:
base_value = 10
input_value = int(input("Введите число: "))

if input_value == 0:
raise ZeroDivOwn("Деление на ноль невозможно")
else:
out_value = base_value / input_value

except ZeroDivOwn as e:
print(e)

except ValueError as e:
print(f"В делении участвует не число: {e}")
else:
print(f"Результат деления: {out_value}")
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

28 changes: 26 additions & 2 deletions Урок 8. Практическое задание/task_3.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,32 @@
Создайте собственный класс-исключение,
который должен проверять содержимое списка на наличие только чисел.

Проверить работу исключения на реальном примере. Необходимо запрашивать у пользователя данные и заполнять
список только числами.
Проверить работу исключения на реальном примере. Необходимо запрашивать у
пользователя данные и заполнять список только числами.

Класс-исключение должен контролировать типы данных элементов списка.
"""


class NotNumbersOwn(Exception):
def __init__(self, text):
self.text = text


my_list = []

while True:
line = input("Введите число: ")
if line == "stop":
break
else:
try:
if line.isnumeric():
my_list.append(int(line))
else:
raise NotNumbersOwn("Переданное значение не является числом")
except NotNumbersOwn as e:
print(e)

if len(my_list) > 0:
print(my_list)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

выполнено

Loading