Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lesson8 #1809

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open

Lesson8 #1809

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
9 changes: 9 additions & 0 deletions Урок 4. Практическое задание/task_1.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,12 @@
Для выполнения расчета для конкретных значений
необходимо запускать скрипт с параметрами.
"""

def simple_calc():
hours = float(input('Введите количество отработанных часов : '))
rate_e = float(input('Введите суммы оплаты труда за 1 час : '))
premium = float(input('Укажите размер премии - '))
pay = hours * rate_e
salary = premium + pay
return pay + salary
print(f'Размер заработной платы составил: {simple_calc() }')
4 changes: 4 additions & 0 deletions Урок 4. Практическое задание/task_2.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,7 @@

Реализуйте вариант без и с генераторным выражением
"""

list_first = [300, 2, 12, 44, 1, 1, 4, 10, 7, 1, 78, 123, 55]
list_result = [k for i, j in enumerate(list_first) for k in list_first[i + 1:i + 2] if k > j]
print(list_result)
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
Необходимо решить задание в одну строку.
Подсказка: использовать функцию range() и генераторное выражение.
"""
print([i for i in range(20, 241) if i % 20 == 0 or i % 21 == 0])
15 changes: 15 additions & 0 deletions Урок 4. Практическое задание/task_4.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,18 @@
Пример исходного списка: [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11].
Результат: [23, 1, 3, 10, 4, 11]
"""

def my_counter(lst: list) -> dict:
result = {}
for key, val in enumerate(lst):
if result.get(val) is None:
result[val] = 1
else:
result[val] += 1
return result


list_src = [2, 2, 2, 7, 23, 1, 44, 44, 3, 2, 10, 7, 4, 11]
counter = my_counter(list_src)
list_res = [x for x, n in counter.items() if n == 1]
print(list_res)
9 changes: 9 additions & 0 deletions Урок 4. Практическое задание/task_5.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,12 @@
Необходимо получить результат вычисления произведения всех элементов списка.
Подсказка: использовать лямбда-функцию и функцию reduce().
"""

from functools import reduce

list_1 = [a for a in range(100, 1001)]

print(list_1)

results = reduce(lambda num, num2: num * num2, list_1)
print(f"Результат произведения всех элементов списка: {results}")
17 changes: 17 additions & 0 deletions Урок 4. Практическое задание/task_6.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,20 @@
Во втором также необходимо предусмотреть условие,
при котором повторение элементов списка будет прекращено.
"""

from itertools import count, cycle

print("Итератор, генерирующий целые числа, начиная с указанного:")
for item in count(3):
if item > 10:
break
else:
print(item)

print("Итератор, повторяющий элементы некоторого списка, определенного заранее:")
i = 0
for value in cycle([1, 2, 3]):
if i > 10:
break
print(value)
i += 1
9 changes: 9 additions & 0 deletions Урок 4. Практическое задание/task_7.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,12 @@
Подсказка: факториал числа n — произведение чисел от 1 до n.
Например, факториал четырёх 4! = 1 * 2 * 3 * 4 = 24.
"""

def fact(n):
result = 1
for i in range(1, n + 1):
result *= i
yield result

for el in fact(4):
print(el)
43 changes: 43 additions & 0 deletions Урок 8. Практическое задание/task_1.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,46 @@
Второй, с декоратором @staticmethod, должен проводить валидацию числа, месяца
и года (например, месяц — от 1 до 12). Проверить работу полученной структуры на реальных данных.
"""


class Data:
def __init__(self, day_month_year):
# self.day = day
# self.month = month
# self.year = year
self.day_month_year = str(day_month_year)

@classmethod
def extract(cls, day_month_year):
my_date = []

for i in day_month_year.split():
if i != '-': my_date.append(i)

return int(my_date[0]), int(my_date[1]), int(my_date[2])

@staticmethod
def valid(day, month, year):

if 1 <= day <= 31:
if 1 <= month <= 12:
if 2019 >= year >= 0:
return f'All right'
else:
return f'Неправильный год'
else:
return f'Неправильный месяц'
else:
return f'Неправильный день'

def __str__(self):
return f'Текущая дата {Data.extract(self.day_month_year)}'


today = Data('11 - 1 - 2001')
print(today)
print(Data.valid(11, 11, 2022))
print(today.valid(11, 13, 2011))
print(Data.extract('11 - 11 - 2011'))
print(today.extract('11 - 11 - 2020'))
print(Data.valid(1, 11, 2000))
Copy link
Owner

Choose a reason for hiding this comment

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

выполнено

17 changes: 17 additions & 0 deletions Урок 8. Практическое задание/task_2.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,20 @@
Проверьте его работу на данных, вводимых пользователем. При вводе пользователем нуля
в качестве делителя программа должна корректно обработать эту ситуацию и не завершиться с ошибкой.
"""
class DivisionByNull:
def __init__(self, divider, denominator):
self.divider = divider
self.denominator = denominator

@staticmethod
def divide_by_null(divider, denominator):
try:
return (divider / denominator)
except:
return (f"Деление на ноль недопустимо")


div = DivisionByNull(10, 100)
print(DivisionByNull.divide_by_null(10, 0))
print(DivisionByNull.divide_by_null(10, 0.1))
print(div.divide_by_null(100, 0))
Copy link
Owner

Choose a reason for hiding this comment

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

не выполнено, в этом задании нужно
-) создать класс-исключение
-) сгенерировать это исключение
-) отловить его через try-except

30 changes: 30 additions & 0 deletions Урок 8. Практическое задание/task_3.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,33 @@

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


class Error:
def __init__(self, *args):
self.my_list = []

def my_input(self):

# self.my_list = [int(i) for i in input('Введите значения через пробел ').split()]
# val = int(input('Введите значения и нажимайте Enter - '))
# self.my_list.append(val)
while True:
try:
val = int(input('Введите значения и нажимайте Enter - '))
self.my_list.append(val)
print(f'Текущий список - {self.my_list} \n ')
except:
print(f"Недопустимое значение - строка и булево")
y_or_n = input(f'Попробовать еще раз? Y/N ')

if y_or_n == 'Y' or y_or_n == 'y':
print(try_except.my_input())
elif y_or_n == 'N' or y_or_n == 'n':
return f'Вы вышли'
else:
return f'Вы вышли'


try_except = Error(1)
print(try_except.my_input())
Copy link
Owner

Choose a reason for hiding this comment

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

не выполнено, в этом задании нужно
-) создать класс-исключение
-) сгенерировать это исключение
-) отловить его через try-except

63 changes: 63 additions & 0 deletions Урок 8. Практическое задание/task_4_5_6.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,66 @@
Подсказка: постарайтесь по возможности реализовать в проекте
«Склад оргтехники» максимум возможностей, изученных на уроках по ООП.
"""
class StoreMashines:

def __init__(self, name, price, quantity, number_of_lists, *args):
self.name = name
self.price = price
self.quantity = quantity
self.numb = number_of_lists
self.my_store_full = []
self.my_store = []
self.my_unit = {'Модель устройства': self.name, 'Цена за ед': self.price, 'Количество': self.quantity}

def __str__(self):
return f'{self.name} цена {self.price} количество {self.quantity}'

# @classmethod
# @staticmethod
def reception(self):
# print(f'Для выхода - Q, продолжение - Enter')
# while True:
try:
unit = input(f'Введите наименование ')
unit_p = int(input(f'Введите цену за ед '))
unit_q = int(input(f'Введите количество '))
unique = {'Модель устройства': unit, 'Цена за ед': unit_p, 'Количество': unit_q}
self.my_unit.update(unique)
self.my_store.append(self.my_unit)
print(f'Текущий список -\n {self.my_store}')
except:
return f'Ошибка ввода данных'

print(f'Для выхода - Q, продолжение - Enter')
q = input(f'---> ')
if q == 'Q' or q == 'q':
self.my_store_full.append(self.my_store)
print(f'Весь склад -\n {self.my_store_full}')
return f'Выход'
else:
return StoreMashines.reception(self)


class Printer(StoreMashines):
def to_print(self):
return f'to print smth {self.numb} times'


class Scanner(StoreMashines):
def to_scan(self):
return f'to scan smth {self.numb} times'


class Copier(StoreMashines):
def to_copier(self):
return f'to copier smth {self.numb} times'


unit_1 = Printer('hp', 2000, 5, 10)
unit_2 = Scanner('Canon', 1200, 5, 10)
unit_3 = Copier('Xerox', 1500, 1, 15)
print(unit_1.reception())
print(unit_2.reception())
print(unit_3.reception())
print(unit_1.to_print())
print(unit_3.to_copier())
Copy link
Owner

Choose a reason for hiding this comment

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

выполнено

23 changes: 23 additions & 0 deletions Урок 8. Практическое задание/task_7.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,26 @@
создав экземпляры класса (комплексные числа) и выполнив сложение и умножение созданных экземпляров.
Проверьте корректность полученного результата.
"""
class ComplexNumber:
def __init__(self, a, b, *args):
self.a = a
self.b = b
self.z = 'a + b * i'

def __add__(self, other):
print(f'Сумма z1 и z2 равна')
return f'z = {self.a + other.a} + {self.b + other.b} * i'

def __mul__(self, other):
print(f'Произведение z1 и z2 равно')
return f'z = {self.a * other.a - (self.b * other.b)} + {self.b * other.a} * i'

def __str__(self):
return f'z = {self.a} + {self.b} * i'


z_1 = ComplexNumber(1, -2)
z_2 = ComplexNumber(3, 4)
print(z_1)
print(z_1 + z_2)
print(z_1 * z_2)
Copy link
Owner

Choose a reason for hiding this comment

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

выполнено

Copy link
Owner

Choose a reason for hiding this comment

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

все представленные листинги я уже видел
они у кого-то скопированы