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

Лабы / ЛР5 ООП

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

Задание 1:

import ipaddress #Встроенный модуль, проверяющий валидность адреса

class Ip():

    def __init__(self,ip_add):# конструктор, на вход которого подается ip адрес

        self.ip_add = ip_add

    def check_ip(self):

        try:

            ipaddress.ip_address(self.ip_add)#Обращение к функции внутри модуля

        except ValueError:

            self.ip_add = [0 for i in range(4)] #Генерируем список из нулей(можно проще, просто вывести нули, но пусть останется)

            print(" ".join(map(str, self.ip_add)))

        else:

            self.ip_add = "".join(map(str, self.ip_add)).split(".")

            print(" ".join(map(str, self.ip_add)))

while True:

    ip_add = input("Введите ip-адрес\n")

    ip = Ip(ip_add)

    ip.check_ip()

Задание 2:

from fractions import * #модуль работы с рац. числами(в нашем случае - обыкновенными дробями)

from time import sleep #модуль, чтобы подключить паузу

class Fract():

    def __init__(self, dr):

        self.dr = dr

        self.a = Fraction(self.dr[0], self.dr[1]) #Преобразование к дроби

        self.b = Fraction(self.dr[2], self.dr[3])

   

    def sum(self):#Сумма

        print(self.a + self.b)

    def razn(self):#Разность

        print(self.a - self.b)

    def proisv(self):#Произведение

        print(self.a * self.b)

    def print_zn(self):#Печать значений

        print(self.a, self.b)

while True:

   

    dr = input("Введите 4 числа через пробел\n")

    dr = list(map(int, dr.split()))

    #проверки на ноль в знаменателях

    if dr[1] == 0:

        dr.pop(0)

        dr.insert(0,0)

        dr.pop(1)

        dr.insert(1,1)

    if dr[3] == 0:

        dr.pop(2)

        dr.insert(2,0)

        dr.pop(3)

        dr.insert(3,1)

    fract = Fract(dr) #создаем объект класса и передаем в конструктор

    finish = True

#Обращение к методам:

    while finish:

        action = input("Список команд:\nСумма\nРазность\nПроизведение\nПечать\n Введите операцию\n")

        if action == "сумма".lower() or action == "сумма".upper() or action == "сумма".title():

            fract.sum()

            sleep(2)

        elif action == "разность".lower() or action == "разность".upper() or action == "разность".title():

            fract.razn()

            sleep(2)

        elif action == "произведение".lower() or action == "произведение".upper() or action == "произведение".title():

            fract.proisv()

            sleep(2)

        elif action =="печать".lower() or action == "печать".upper() or action == "печать".title():

            fract.print_zn()

            sleep(2)

        else:

            finish = False #Если нужно ввести другие цифры

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