Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / ЛР3 ООП

.docx
Скачиваний:
0
Добавлен:
21.02.2024
Размер:
28.99 Кб
Скачать

Минобрнауки России

Федеральное государственное автономное образовательное учреждение высшего образования «Национальный исследовательский университет

«Московский институт электронной техники»

Лабораторная работа №3 по дисциплине

«Объектно-ориентированное программирование»

2022 г.

Задание 1:

class Dictionary():#Создали класс

   

#Создаем методы

    def __init__(self, num_requests):

       

        self.num_requests = num_requests

        self.syn_dict = {}

       

   

    def add_word(self):

        self.syn_dict.update({split_action[1] : split_action[2]})

       

    def check_syn(self):

       

        def find_key(d, value):#поиск ключа по значению

            for k, v in d.items(): #перебор по всем парам ключ-значение

                if v == value:

                    return k  

               

        ke_y = split_action[1] #Нарезка введенной строки

        val = split_action[2]

       

        search_k = find_key(self.syn_dict,val)

        search_v = self.syn_dict.get(ke_y)

       

        if ke_y in self.syn_dict.keys():#поиск значения по ключу

            if val == search_v:

                print("Yes")

            else:

                print("No")

               

        elif ke_y in self.syn_dict.values():

            if val == search_k:

                print("Yes")

            else:

                print("No")

   

    def count_word(self):

       

        val = split_action[1]

        ke_y = split_action[1]

       

        count = 0

        for k, v in self.syn_dict.items():

           

            if v == val: #проверка на совпадение по значениям

                count += 1

               

            elif k == ke_y: #проверка на совпадение по ключу

                count += 1

                check_value = self.syn_dict.get(ke_y)

                for k1, v1 in self.syn_dict.items(): #исключение случая зеркальных пар        

                    if v1 == val and check_value == k1:

                        count -= 1        

        print(count)

     

num_requests = int(input("Список команд\nadd\ncheck\ncount\n\nВедите кол-во запросов к словарю\n"))

words = Dictionary(num_requests) #создание экземпляра класса

words.syn_dict = {}

count = 0

while count < num_requests :

    action = input("Введите команду\n")

    split_action = action.split()

    if split_action[0] == "add" or split_action[0] == "add".upper() or split_action[0] == "add".title():

        words.add_word()

        count += 1

    elif split_action[0] =="check" or split_action[0] =="check".upper() or split_action[0] =="check".title():#Сделала, чтобы распознавал любой текст, и с заглавной буквы и капсом

        words.check_syn()

        count += 1

    elif split_action[0] =="count" or split_action[0] =="count".upper() or split_action[0] =="count".title():

        words.count_word()

        count += 1

    print(words.syn_dict)

Задание 2:

class Queue():

    def __init__(self, people_count):

        self.people_count = people_count

        self.people_list = ["quiet" for i in range(people_count)]

       

    def worry_i(self, i):

        del self.people_list[i]

        self.people_list.insert(i,"worry")

       

    def quiet_i(self, i):

        del self.people_list[i]

        self.people_list.insert(i,"quiet")

   

    def come_k(self, k):

        for s in range(k):

            self.people_list.append("queit")

           

    def leave_k(self, k):

        for t in range(k):

            self.people_list.pop()

       

    def worry_count(self):

        count = 0

        for i in self.people_list:

            if i == "worry":

                count += 1

        print(count)

count_people = int(input("Список команд:\nworry\ncome\nleave\nqueit\nworry_count\n\nВведите количество человек в очереди\n"))

que = Queue(count_people)

# print(que.people_list) если нужно посмотреть, что происходит

while 1:

   

    action = input("Введите операцию\n")

    action_list = action.split()

   

    if action_list [0] =="come" or action_list [0] == "come".upper() or action_list [0] == "come".title():

        k = int("".join(action_list[1::1]))

        que.come_k(k)

       

    elif action_list [0] =="queit" or action_list [0] =="queit".upper() or action_list [0] =="queit".title():

        i = int("".join(action_list[1::1]))

        if i > (len(que.people_list)-1) :

            print("Такого человека в очереди нет")

            pass

        else:    

            que.quiet_i(i)

       

    elif action_list [0] =="leave" or action_list [0] =="leave".upper() or action_list [0] =="leave".title():

        k = int("".join(action_list[1::1]))

        if k > (len(que.people_list)-1) :

            print("В очереди нет стольких людей")

            pass

        else:    

            que.leave_k(k)  

         

    elif  action_list [0] =="worry" or action_list [0] =="worry".upper() or action_list [0] =="worry".title():

        i = int("".join(action_list[1::1]))  

        if i > (len(que.people_list)-1) :

            print("Такого человека в очереди нет")

            pass

        else:          

            que.worry_i(i)

           

    elif action_list [0] =="worry_count" or action_list [0] =="worry_count".upper() or action_list [0] =="worry_count".title():

        que.worry_count()

       

А это задание 2, но как я решила изначально, потом немного оптимизировала, различие только в __init__:

class Queue():

   

    def _init_ (self,people_list, count_people = 0):

        self.people_list = []

        self.count_people = count_people

       

    def worry_i(self, i):

        del self.people_list[i]

        self.people_list.insert(i,"worry")

       

    def quiet_i(self, i):

        del self.people_list[i]

        self.people_list.insert(i,"quiet")

   

    def come_k(self, k):

        for s in range(k):

            self.people_list.append("queit")

           

    def leave_k(self, k):

        for t in range(k):

            self.people_list.pop()

       

    def worry_count(self):

        count = 0

        for i in self.people_list:

            if i == "worry":

                count += 1

        print(count)

que = Queue()

que.count_people = int(input("Список команд:\nworry\ncome\nleave\nqueit\nworry_count\n\nВведите количество человек в очереди\n"))

que.people_list = []

for i in range(que.count_people):

    que.people_list.append("quiet")

while 1:

   

    action = input("Введите операцию\n")

    action_list = action.split()

   

    if action_list [0] =="come" or action_list [0] == "come".upper() or action_list [0] == "come".title():

        k = int("".join(action_list[1::1]))

        que.come_k(k)

       

    elif action_list [0] =="queit" or action_list [0] =="queit".upper() or action_list [0] =="queit".title():

        i = int("".join(action_list[1::1]))

        if i > (len(que.people_list)-1) :

            print("Такого человека в очереди нет")

            pass

        else:    

            que.quiet_i(i)

       

    elif action_list [0] =="leave" or action_list [0] =="leave".upper() or action_list [0] =="leave".title():

        k = int("".join(action_list[1::1]))

        if k > (len(que.people_list)-1) :

            print("В очереди нет стольких людей")

            pass

        else:    

            que.leave_k(k)  

         

    elif  action_list [0] =="worry" or action_list [0] =="worry".upper() or action_list [0] =="worry".title():

        i = int("".join(action_list[1::1]))  

        if i > (len(que.people_list)-1) :

            print("Такого человека в очереди нет")

            pass

        else:          

            que.worry_i(i)

           

    elif action_list [0] =="worry_count" or action_list [0] =="worry_count".upper() or action_list [0] =="worry_count".title():

        que.worry_count()

Соседние файлы в папке Лабы