Skip to content

домашняя работа 6 сидоренко м.в #878

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

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
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
29 changes: 26 additions & 3 deletions lesson02/home_work/hw02_easy.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
№__author__ Сидоренко Михаил Владимирович
# Задача-1:
# Дан список фруктов.
# Напишите программу, выводящую фрукты в виде нумерованного списка,
Expand All @@ -12,14 +13,36 @@
# 4. арбуз

# Подсказка: воспользоваться методом .format()

fruits = ["яблоко", "банан", "киви", "арбуз"]
i = 0
for fruit in fruits:
i = i + 1
loc_fruit = str(i) + '. ' + '{:>10}'.format(fruit)
print(loc_fruit)

# Задача-2:
# Даны два произвольные списка.
# Удалите из первого списка элементы, присутствующие во втором списке.


list1 = ["Вася", "Петя", "Маша", "Наташа"]
list2 = ["Гриша", "John", "Mike", "Петя", "Наташа"]
for anyname in list2:
if list1.count(anyname) > 0:
list1.remove(anyname)
for anyname in list1:
print(anyname)
# Задача-3:
# Дан произвольный список из целых чисел.
# Получите НОВЫЙ список из элементов исходного, выполнив следующие условия:
# если элемент кратен двум, то разделить его на 4, если не кратен, то умножить на два.
numbers = [1, 2, 5, 6, 7, 8, 20, 50]
newlist = []
for numb in numbers:
if numb % 2 == 0:
newdig = numb / 4
newlist.append(newdig)
else:
newdig = numb * 2
newlist.append(newdig)

for newnumb in newlist:
print(newnumb)
1 change: 1 addition & 0 deletions lesson02/home_work/hw02_hard.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
№__author__ Сидоренко Михаил Владимирович
# Задание-1: уравнение прямой вида y = kx + b задано в виде строки.
# Определить координату y точки с заданной координатой x.

Expand Down
95 changes: 92 additions & 3 deletions lesson02/home_work/hw02_normal.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,114 @@
import random

# Задача-1:
# Дан список, заполненный произвольными целыми числами, получите новый список,
# элементами которого будут квадратные корни элементов исходного списка,
# но только если результаты извлечения корня не имеют десятичной части и
# если такой корень вообще можно извлечь
# Пример: Дано: [2, -5, 8, 9, -25, 25, 4] Результат: [3, 5, 2]

list1 = [2, -5, 8, 9, -25, 25, 4]
list2 = []
for elem in list1:
if elem > 0:
new_elem = elem ** 0.5
int_elem = int(new_elem)
if ( int_elem - new_elem ) == 0:
list2.append(int_elem)
for elem in list2:
print(elem)

# Задача-2: Дана дата в формате dd.mm.yyyy, например: 02.11.2013.
# Ваша задача вывести дату в текстовом виде, например: второе ноября 2013 года.
# Склонением пренебречь (2000 года, 2010 года)
strdate = input('Введите дату в формате DD.MM.YYYY: ')
list_date = strdate.split('.')
print(list_date)
if list_date[1] == '01':
month = 'января'
elif list_date[1] == '02':
month = 'февраля'
elif list_date[1] == '03':
month = 'марта'
elif list_date[1] == '04':
month = 'апреля'
elif list_date[1] == '05':
month = 'мая'
elif list_date[1] == '06':
month = 'июня'
elif list_date[1] == '07':
month = 'июля'
elif list_date[1] == '08':
month = 'августа'
elif list_date[1] == '09':
month = 'сентября'
elif list_date[1] == '10':
month = 'октября'
elif list_date[1] == '11':
month = 'ноября'
elif list_date[1] == '12':
month = 'декабря'


listnum = ['первое', 'второе', 'третье','четвертое', 'пятое', 'щестое','седьмое', 'восьмое', 'девятое']
if int(list_date[0]) == 10:
datestr = 'десятое'
elif int(list_date[0]) == 11:
datestr = 'одинадцатое'
elif int(list_date[0]) == 12:
datestr = 'двенадцатое'
elif int(list_date[0]) == 13:
datestr = 'тринадцатое'
elif int(list_date[0]) == 14:
datestr = 'четырнадцатое'
elif int(list_date[0]) == 15:
datestr = 'пятнадцатое'
elif int(list_date[0]) == 16:
datestr = 'шестнадцатое'
elif int(list_date[0]) == 17:
datestr = 'семнадцатое'
elif int(list_date[0]) == 18:
datestr = 'восемнадцатое'
elif int(list_date[0]) == 19:
datestr = 'девятнадцатое'
elif int(list_date[0]) == 20:
datestr = 'двадцатое'
elif int(list_date[0]) == 30:
datestr = 'тридцатое'
else:
minusindex = int(list_date[0]) - 1
if int(list_date[0]) < 10:
datestr = listnum[minusindex]
elif (int(list_date[0]) < 30) and ( int(list_date[0]) > 20) :
datestr = 'двадцать' + listnum[minusindex]
elif int(list_date[0]) > 30:
datestr = 'тридцать' + listnum[minusindex]
print('{} {} {} года'.format(datestr,month,list_date[2]))
# Задача-3: Напишите алгоритм, заполняющий список произвольными целыми числами
# в диапазоне от -100 до 100. В списке должно быть n - элементов.
# Подсказка:
# для получения случайного числа используйте функцию randint() модуля random

numelements = int(random.randint(1, 20))
randlist = []
for __ in range(numelements):
randlist.append(random.randint(-100, 100))
for elem in randlist:
print(elem)

# Задача-4: Дан список, заполненный произвольными целыми числами.
# Получите новый список, элементами которого будут:
# Получите новый список, элементами которого будут:
# а) неповторяющиеся элементы исходного списка:
# например, lst = [1, 2, 4, 5, 6, 2, 5, 2], нужно получить lst2 = [1, 2, 4, 5, 6]
# б) элементы исходного списка, которые не имеют повторений:
# например, lst = [1 , 2, 4, 5, 6, 2, 5, 2], нужно получить lst2 = [1, 4, 6]
list_last = [1, 2, 4, 5, 6, 2, 5, 2]
lst2_1 = []
lst2_2 = []
for el4 in list_last:
if list_last.count(el4) < 2:
lst2_2.append(el4)
lst2_1.append(el4)
else:
if lst2_1.count(el4) == 0:
lst2_1.append(el4)
print(lst2_1)
print(lst2_2)
52 changes: 43 additions & 9 deletions lesson06/home_work/hw06_easy.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,43 @@
# Задача-1: Написать класс для фигуры-треугольника, заданного координатами трех точек.
# Определить методы, позволяющие вычислить: площадь, высоту и периметр фигуры.


# Задача-2: Написать Класс "Равнобочная трапеция", заданной координатами 4-х точек.
# Предусмотреть в классе методы:
# проверка, является ли фигура равнобочной трапецией;
# вычисления: длины сторон, периметр, площадь.

# Задача - 1
# Опишите несколько классов TownCar, SportCar, WorkCar, PoliceCar
# У каждого класса должны быть следующие аттрибуты:
# speed, color, name, is_police - Булево значение.
# А так же несколько методов: go, stop, turn(direction) - которые должны сообщать,
# о том что машина поехала, остановилась, повернула(куда)

# Задача - 2
# Посмотрите на задачу-1 подумайте как выделить общие признаки классов
# в родительский и остальные просто наследовать от него.

class car:
def __init__(self, speed, color, name, is_polise):
self.speed = int(speed)
self.color = color
self.name = name
self.is_polise = bool(is_polise)
def go(self):
print('машина модель {} поехала'.format(self.name))
def stop(self):
print('машина модель {} остановилась'.format(self.name))
def turn(self, way):
print('машина модель {} повернула {}'.format(self.name, way))


class TownCar(car):
pass
class SportCar(car):
pass
class WorkCar(car):
pass
class PoliceCar(car):
pass


a1 = TownCar(80, 'green', 'lada', False)
a2 = SportCar(80, 'black', 'bmw', False)
a3 = WorkCar(80, 'brown', 'gazelle', False)
a4 = PoliceCar(80, 'white', 'priora', True)

a1.turn('влево')
a2.stop()
a3.go()
68 changes: 51 additions & 17 deletions lesson06/home_work/hw06_normal.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,51 @@
# Задание-1:
# Реализуйте описаную ниже задачу, используя парадигмы ООП:
# В школе есть Классы(5А, 7Б и т.д.), в которых учатся Ученики.
# У каждого ученика есть два Родителя(мама и папа).
# Также в школе преподают Учителя. Один учитель может преподавать
# в неограниченном кол-ве классов свой определенный предмет.
# Т.е. Учитель Иванов может преподавать математику у 5А и 6Б,
# но больше математику не может преподавать никто другой.

# Выбранная и заполненная данными структура должна решать следующие задачи:
# 1. Получить полный список всех классов школы
# 2. Получить список всех учеников в указанном классе
# (каждый ученик отображается в формате "Фамилия И.О.")
# 3. Получить список всех предметов указанного ученика
# (Ученик --> Класс --> Учителя --> Предметы)
# 4. Узнать ФИО родителей указанного ученика
# 5. Получить список всех Учителей, преподающих в указанном классе
# Задача - 1
# Ранее мы с вами уже писали игру, используя словари в качестве
# структур данных для нашего игрока и врага, давайте сделаем новую, но уже с ООП
# Опишите базовый класс Person, подумайте какие общие данные есть и у врага и у игрока
# Не забудьте, что у них есть помимо общих аттрибутов и общие методы.
# Теперь наследуясь от Person создайте 2 класса Player, Enemy.
# У каждой сущности должы быть аттрибуты health, damage, armor
# У каждой сущности должно быть 2 метода, один для подсчета урона, с учетом брони противника,
# второй для атаки противника.
# Функция подсчета урона должна быть инкапсулирована
# Вам надо описать игровой цикл так же через класс.
# Создайте экземпляры классов, проведите бой. Кто будет атаковать первым оставляю на ваше усмотрение.
import random
class person:
def __init__(self, name):
self.name = name
self.ammo = 500
self.health = 100
self.damage = 20
self.armor =100
def attack(self, ob1):
udar = random.randint(10, self.damage)
ob1.__uron__(udar)
def __uron__(self, dam):
if self.armor != 0:
self.armor -= dam
if self.armor < 0:
self.health += self.armor
self.armor = 0
else:
self.health -= dam


def status(self):
print('осталось брони {} жизней {}'.format( self.armor, self.health))

class player(person):
pass
class enemy(person):
pass

P1 = player('miha')
P2 = enemy('john')

while P1.health > 0 and P2.health > 0:
P1.attack(P2)
P1.status()
P2.status()
P2.attack(P1)
P1.status()
P2.status()