Лабы / ЛР5 ООП
.docxЗадание 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 #Если нужно ввести другие цифры