Задание 1 (2 вариант). Задание 3 (2 вариант)

Математическое моделирование прикладных задач

2 вариант

Сухова Ангелина КТ-42-19

Лабораторная работа № 6

 

Задание 1 (2 вариант)

class Buffer:

def __init__(self):

self.current_part=[]

 

def add(self, *a):

self.current_part.extend(a)

while len(self.current_part)-5>=0:

print(sum(self.current_part[0:5]))

self.current_part=self.current_part[5:]

 

def get_current_part(self):

return self.current_part

 

buf=Buffer()

buf.add(1,2,3)

buf.get_current_part() # вернуть[1,2,3]

buf.add(4,5,6) #print(15) - вывод суммы первой пятёрки элементов

buf.get_current_part() # вернуть [6]

buf.add(7,8,9,10) #print(40) - вывод суммы второй пятёрки элементов

buf.get_current_part() # вернуть []

buf.add(1,1,1,1,1,1,1,1,1,1,1) #print(5),print(5) - вывод сумм третьей

# и четвёртой пятёрки

Задание 3 (2 вариант)

import random

 

class Warrer:

def __init__(self, name, health=100):

self.name = name

self.health = health

print ('Создан воин {} со здоровьем {}'.format(self.name, self.health))

 

def strike(self, enemyWarrer):

if True:

print('Воин {} нанес урон -20 воину {}'.format(self.name, enemyWarrer.name))

enemyWarrer.setHealth(

enemyWarrer.getHealth() - 20

)

else:

print('Неверно заданно здоровье для воина {}'.format(enemyWarrer.name))

print(type(enemyWarrer.getHealth()))

 

def setHealth(self, health):

self.health = health

print('Установленно здоровье {} для воина {}'.format(self.health, self.name))

 

def getHealth(self):

try:

return self.health

print('Здоровье воина {} — {}'.format(self.name, self.health))

except:

return 'Здоровье не заданно'

print('Здоровье для воина {} не заданно'.format(self.name))

 

 

one=Warrer('Lion',100)

two=Warrer('Aren',100)

 

while (one.health > 0) and (two.health > 0):

round = random.randint(1, 2)

 

if round == 1:

one.strike(two)

elif round == 2:

two.strike(one)

 

if round == 1:

name = one.name

enemy_name = two.name

elif round == 2:

name = two.name

enemy_name = one.name

 

print('Воин {} одержал победу над воином {}'.format(name, enemy_name))

 

Задание 5 (2 вариант)

class ExtrendedStack(list):

def sum(self):

# операция сложения

top1=self.pop()

top2=self.pop()

self.append(top1+top2)

 

def sub(self):

# операция вычитания

top1=self.pop()

top2=self.pop()

self.append(top1-top2)

 

def mul(self):

# операция умножения

top1=self.pop()

top2=self.pop()

self.append(top1*top2)

 

def div(self):

# операция целочисленного деления

top1=self.pop()

top2=self.pop()

self.append(top1//top2)

 

def test():

ex_stack=ExtrendedStack([1, 2, 3, 4, -3, 3, 5, 10])

ex_stack.div()

assert ex_stack.pop() == 2

ex_stack.sub()

assert ex_stack.pop() == 6

ex_stack.sum()

assert ex_stack.pop() == 7

ex_stack.mul()

assert ex_stack.pop() == 2

assert len(ex_stack) == 0

 

if __name__ == "__main__":

test()

Задание 6

import time

 

class Loggable:

def log(self, msg):

print(str(time.ctime()) + ": " + str(msg))

 

class LoggableList(list, Loggable):

def append(self, x):

self.log(x)

super().append(x)

 

def test():

t = LoggableList()

t.append(1)

t.append('str')

 

assert len(t) == 2

 

if __name__ == "__main__":

test()

 

Задание 7

classes = {}

 

def add_class(classes, class_name, parents):

if class_name not in classes:

classes[class_name] = []

classes[class_name].extend(parents)

for parent in parents:

if parent not in classes:

classes[parent] = []

 

def found_path(classes, start, end, path=[]):

path = path + [start]

if start == end:

return path

if start not in classes:

return None

for node in classes[start]:

if node not in path:

newpath = found_path(classes, node, end, path)

if newpath: return newpath

return None

 

def answer(classes, parent, child):

if not(parent or child) in classes or not found_path(classes, child, parent):

return 'No'

return 'Yes'

 

n = int(input())

for _ in range(n):

class_description = input().split()

class_name = class_description[0]

class_parents = class_description[2:]

add_class(classes, class_name, class_parents)

 

q = int(input())

for _ in range(q):

question = input().split()

parent = question[0]

child = question[1]

print(answer(classes, parent, child))

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: