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
5 changes: 5 additions & 0 deletions Урок 1. Практическое задание/task_1.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,8 @@
Введите ваш возраст: 45
Ваши данные для входа в аккаунт: имя - Василий, пароль - vas, возраст - 45
"""
name = input('Введите ваше имя: ')
age = int(input('Введите ваш возраст: '))
job = input('Введите вашу должность: ')
status_mar = input('Введите ваше семейное положение: ')
print(f"Это {name}. Ему(ей) {age}. Он(а) работает на позиции {job} и неплохо зарабатывает. И, кстати, {status_mar}.")
5 changes: 5 additions & 0 deletions Урок 1. Практическое задание/task_2.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,8 @@
Введите время в секундах: 3600
Время в формате ч:м:с - 1.0 : 60.0 : 3600
"""
user_sec_input = int(input('Введите количество секунд: '))
hour = user_sec_input//(60*60)
minute = (user_sec_input - hour*(60*60))//60
second = user_sec_input - hour*(60*60) - minute*60
print(f" {hour}:{minute}:{second}")
5 changes: 5 additions & 0 deletions Урок 1. Практическое задание/task_3.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,8 @@
Введите число n: 3
n + nn + nnn = 369
"""
n = int(input('Введите число n: '))
if n >10:
print("Введите однозначное число")
else:
print(n+(n*11)+(n*111))
8 changes: 8 additions & 0 deletions Урок 1. Практическое задание/task_4.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,11 @@
Ведите целое положительное число: 123456789
Самая большая цифра в числе: 9
"""
a = int(input('Введите число: '))
b = a%10
a = a//10
while a > 0:
if a%10 > b:
b = a%10
a = a//10
print(b)
11 changes: 11 additions & 0 deletions Урок 1. Практическое задание/task_5.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,14 @@
Введите численность сотрудников фирмы: 10
Прибыль фирмы в расчете на одного сотрудника = 50.0
"""
revenue = int(input('Введите выручку фирмы: '))
costs = int(input('Введите издержки фирмы: '))
if revenue > costs:
profitability = ((revenue - costs)/revenue)*100
emp_number = int(input('Введите число сотрудников компании: '))
profit_per_person = (revenue - costs)/emp_number
print(f"Рентабельность компании равна {profitability}%. Прибыль в расчёте на каждого сотрудника равна {profit_per_person} рублей.")
elif revenue < costs:
print('Компания работает в убыток')
else:
print('Компания работает в ноль')
7 changes: 7 additions & 0 deletions Урок 1. Практическое задание/task_6.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,10 @@
6-й день: 3,22
Ответ: на 6-й день спортсмен достиг результата — не менее 3 км.
"""
fact_result = int(input('Введите результат спортсмена в 1 день: ')) #результат спортсмена в 1-й день
plan_result = int(input('Введите планируемый результат спортсмена: ')) #результат спортсмена в n-ый день
n = 1
while fact_result < plan_result:
fact_result = fact_result * 1.1
n += 1
print (f"Спортсмену понадобится {n} дней")
10 changes: 1 addition & 9 deletions Урок 2. Практическое задание/task_1.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,6 @@
Использовать функцию type() для проверки типа.
Элементы списка можно не запрашивать у пользователя,
а указать явно, в программе.
"""

Пример:
для списка [5, "string", 0.15, True, None]
результат

<class 'int'>
<class 'str'>
<class 'float'>
<class 'bool'>
<class 'NoneType'>
"""
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@
Набор натуральных чисел можно задать непосредственно в коде,
например, my_list = [7, 5, 3, 3, 2].
"""

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

Process finished with exit code 0
"""
def calc_1():
try:
arg1 = int(input('Введите первое число: '))
arg2 = int(input('Введите второе число: '))
except ZeroDivisionError:
return print('Делить на 0 нельзя')
res_1: int = arg1 // arg2
return res_1
print (calc_1())
11 changes: 11 additions & 0 deletions Урок 3. Практическое задание/task_2.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,14 @@
Иван Иванов 1846 года рождения, проживает в городе Москва,
email: [email protected], телефон: 01005321456
"""

# f_name = input('Введите имя: ')
# l_name = input('Введите фамилию: ')
# city = input('Введите город: ')
# def second_func(f_name, l_name, city):
# print = f_name, l_name, " из города", city

def func_2(name, l_name, city):
print(f"{name} {l_name} из города {city}")
func_2(name = input('Введите имя: '), l_name = input('Введите фамилию: '), city = input('Введите город: '))

14 changes: 14 additions & 0 deletions Урок 3. Практическое задание/task_3.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,17 @@
1) используя функцию sort()
2) без функции sort()
"""
# def my_func(arg1, arg2, arg3):
# if arg1 >= arg3 and arg2 >= arg3:
# return arg1 + arg2
# elif arg1 > arg2 and arg1 < arg3:
# return arg1 + arg3
# else:
# return arg2 + arg3
# print(my_func(int(input('Введите число 1: ')), int(input('Введите число 2: ')), int(input('Введите число 3: '))))

def my_func(arg1, arg2, arg3):
a = [arg1,arg2,arg3]
a.sort(reverse = True)
return a[0]+a[1]
print(my_func(int(input('Введите число 1: ')), int(input('Введите число 2: ')), int(input('Введите число 3: '))))
9 changes: 9 additions & 0 deletions Урок 3. Практическое задание/task_4.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,13 @@
При решении задания необходимо обойтись без встроенной функции возведения числа в степень!
ВНИМАНИЕ: использование встроенной функции = задание не принято
Постараться придумать свой алгоритм без **

"""
def my_func(x, y):
a = x
y = abs(y)
while y >= 0:
a = a / x
y = y - 1
return float(a)
print(my_func(int(input('Введите х положительное: ')), int(input('Введите y отрицательное: '))))
20 changes: 20 additions & 0 deletions Урок 3. Практическое задание/task_5.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,23 @@
символ введен после нескольких чисел, то вначале нужно добавить сумму этих чисел к полученной
ранее сумме и после этого завершить программу.
"""

def my_sum ():
sum_res = 0
ex = False
while ex == False:
number = input('Введите числа через пробел или нажмите q для выхода - ').split()

res = 0
for el in range(len(number)):
if number[el] == 'q' or number[el] == 'Q':
ex = True
break
else:
res = res + int(number[el])
sum_res = sum_res + res
print(f'Current sum is {sum_res}')
print(f'Your final sum is {sum_res}')


my_sum()
5 changes: 5 additions & 0 deletions Урок 3. Практическое задание/task_6.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,8 @@
Сделать вывод исходной строки, но каждое слово должно начинаться с заглавной буквы.
Необходимо использовать написанную ранее функцию int_func().
"""
def int_func (*args):
word = input("Введите слово(а) ")
print(word.title())
return
int_func()
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 2023 >= 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, 2025))
print(today.valid(11, 13, 2011))
print(Data.extract('11 - 11 - 2011'))
print(today.extract('11 - 11 - 2020'))
print(Data.valid(1, 11, 2000))
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 DivisionByZeroError(Exception):
pass
def divide(a, b):
if b == 0:
raise DivisionByZeroError("Делить на ноль нельзя")
return a / b

try:
a = float(input("Введите число для деления: "))
b = float(input("Введите число, на которое нужно поделить: "))
result = divide(a, b)
print(f"Результат: {result}")
except DivisionByZeroError as e:
print(f"Ошибка: {e}")
except ValueError:
print("Error: Некоррентный ввод")
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 NotNumberError(Exception):
pass

def get_numbers():
numbers = []
while True:
try:
user_input = input("Введите число или 'stop' для завершения: ")
if user_input == 'stop':
break
number = float(user_input)
numbers.append(number)
except ValueError:
print("Ошибка: допустимо вводить только числа")
except NotNumberError as e:
print(f"Ошибка: {e}")
return numbers

class NumberList(list):
def append(self, value):
if not isinstance(value, (int, float)):
raise NotNumberError("Допустимо вводить только числа")
super().append(value)

try:
number_list = NumberList()
number_list.extend(get_numbers())
print(f"Список чисел: {number_list}")
except NotNumberError as e:
print(f"Ошибка: {e}")
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())
29 changes: 29 additions & 0 deletions Урок 8. Практическое задание/task_7.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,32 @@
создав экземпляры класса (комплексные числа) и выполнив сложение и умножение созданных экземпляров.
Проверьте корректность полученного результата.
"""
class ComplexNumber:
def __init__(self, real, imag):
self.real = real
self.imag = imag

def __add__(self, other):
return ComplexNumber(self.real + other.real, self.imag + other.imag)

def __mul__(self, other):
return ComplexNumber(self.real * other.real - self.imag * other.imag, self.real * other.imag + self.imag * other.real)

def __str__(self):
if self.imag >= 0:
return f"{self.real}+{self.imag}i"
else:
return f"{self.real}{self.imag}i"


# создаем два комплексных числа
a = ComplexNumber(2, 3)
b = ComplexNumber(-1, 4)

# складываем и перемножаем числа
c = a + b
d = a * b

# выводим результаты
print(f"({a}) + ({b}) = {c}")
print(f"({a}) * ({b}) = {d}")