Professional Documents
Culture Documents
Лабораторна робота №7
Лабораторна робота №7
Кафедра КН
Група: ІСТ-22-1
Виконав: Ковальчук М. М.
Прийняв: Окунькова О. О.
ІРТР.420001.123-ЗЛ
Змн. Арк. № докум. Підпис Дата
Розроб. Ковальчук М. М. Літ. Арк. Аркушів
Перевір. .Окунькова О. О. 1
Звіт з
Керівник
лабораторної роботи
Н. контр. ФІКТ, гр. ІСТ-22-1
Затверд.
Мета роботи: ознайомитися з ООП в мові Python
Виконання роботи:
Завдання 1. Реалізувати клас Person, який відображає запис в книзі контактів.
Клас має 4 атрибута:
- surname - рядок - прізвище контакту (обов'язковий)
- first_name - рядок - ім'я контакту (обов'язковий)
- nickname - рядок - псевдонім (опціональний)
- birth_date - об'єкт datetime.date (обов'язковий)
Кожен виклик класу повинен створювати екземпляр (інстанс) класу із
зазначеними атрибутами.
Також клас має 2 методи:
- get_age() - рахує вік особи в повних роках на дату виклику і повертає рядок
виду: "25";
- get_fullname() - повертає рядок, що відображає повне ім'я (прізвище + ім'я)
контакту;
Примітка:
при створенні атрибута birth_date з рядка типу "2002-12-31" необхідно:
- визначити яка інформація потрібна для створення об'єкта datetime.date,
- отримати ці дані з рядка
- розібрати її (дістати з неї окремо, рік, місяць, число),
- на підставі цієї інформації створити спеціальний об'єкт datetime.date,
- помістити цей спец.об'ект в атрибут екземпляра класу
Лістинг програми:
from datetime import *
class Person:
def __init__(self, surname, first_name, birth_date,
nickname=''):
self.surname = surname
self.first_name = first_name
self.birth_date = birth_date.date()
self.nickname = nickname
def get_age(self):
today = datetime.now().date()
age = today.year - self.birth_date.year
return age
def get_fullname(self):
fullname = self.surname + " " + self.first_name
return fullname
pSurname = input("Введіть прізвище: ")
pName = input("Введіть ім'я: ")
pNickname = input("Введіть nickname: ")
db = input("Введіть дату народження у форматі YYYY-MM-DD:
").split('-')
pDB = datetime(int(date[0]), int(date[1]), int(date[2]))
person = Person(pSurname, pName, pDB, pNickname)
Арк.
ІРТР.420001.123-ЗЛ 2
Змн. Арк. № докум. Підпис Дата
print(f"{person.get_fullname()}, nickname: {person.nickname},
{person.get_age()} years old.")
class Person:
def __init__(self, surname, first_name, birth_date,
nickname=''):
self.surname = surname
self.first_name = first_name
self.birth_date = birth_date.date()
self.nickname = nickname
def get_age(self):
today = datetime.now().date()
age = today.year - self.birth_date.year
return age
def modifier(filename):
with open(filename, 'r') as file:
lines = file.readlines()
list1 = []
for i in lines:
data = i.strip().split(', ')
if len(data) == 4:
surname, first_name, birth_date, nickname = data
dateBD = birth_date.split('-')
birth_date = datetime(int(dateBD[0]), int(dateBD[1]),
int(dateBD[2]))
person = Person(surname, first_name, birth_date,
nickname)
Арк.
ІРТР.420001.123-ЗЛ 3
Змн. Арк. № докум. Підпис Дата
fullname = person.surname + " " + person.first_name
age = person.get_age()
BD = person.birth_date.strftime("%Y-%m-%d")
list1.append(f"{surname}\n{first_name}\n{fullname}\
n{BD}\n{nickname}\n{age}\n")
print(fullname)
else:
list1.append(i)
print('j')
filename = "checkFile.txt"
modifier(filename)
Арк.
ІРТР.420001.123-ЗЛ 4
Змн. Арк. № докум. Підпис Дата