From 7bb9f51e840661401d61320d889f3fb6b7a8c377 Mon Sep 17 00:00:00 2001 From: mispasyuk Date: Thu, 25 Apr 2024 23:10:24 +0300 Subject: [PATCH 1/2] practice is done --- tasks/practice1/practice1.py | 2 ++ tasks/practice2/practice2.py | 36 +++++++++++++++++++++++++++++++++++ tasks/practice3/practice3.py | 37 ++++++++++++++++++++++++++++++------ 3 files changed, 69 insertions(+), 6 deletions(-) diff --git a/tasks/practice1/practice1.py b/tasks/practice1/practice1.py index 030da70..de09cf7 100644 --- a/tasks/practice1/practice1.py +++ b/tasks/practice1/practice1.py @@ -9,6 +9,7 @@ def concatenate_strings(a: str, b: str) -> str: """ # пиши свой код здесь + result = a+b return result @@ -23,5 +24,6 @@ def calculate_salary(total_compensation: int) -> float: """ # пиши свой код здесь + result = total_compensation*0.87 return result diff --git a/tasks/practice2/practice2.py b/tasks/practice2/practice2.py index 008f6d1..d35db73 100644 --- a/tasks/practice2/practice2.py +++ b/tasks/practice2/practice2.py @@ -1,4 +1,5 @@ from typing import Iterable +import random UNCULTURED_WORDS = ('kotleta', 'pirog') @@ -13,6 +14,7 @@ def greet_user(name: str) -> str: """ # пиши код здесь + greeting = "Hello, "+name+"!" return greeting @@ -29,6 +31,7 @@ def get_amount() -> float: """ # пиши код здесь + amount = round(random.uniform(100, 1000000), 2) return amount @@ -43,6 +46,16 @@ def is_phone_correct(phone_number: str) -> bool: """ # пиши код здесь + result = False + if phone_number[0] == "+" and phone_number[1] == "7": + i = 2 + while i < 12: + if "0" <= phone_number[i] <= "9": + i += 1 + else: + break + if i == 12: + result = True return result @@ -59,6 +72,10 @@ def is_amount_correct(current_amount: float, transfer_amount: str) -> bool: """ # пиши код здесь + if current_amount >= float(transfer_amount): + result = True + else: + result = False return result @@ -78,6 +95,18 @@ def moderate_text(text: str, uncultured_words: Iterable[str]) -> str: """ # пиши код здесь + result = text.lower() + result = " ".join(result.split()) + first = result[0] + result = first.title() + result[1:] + for symbol in result.split(): + for i in uncultured_words: + if i in symbol : + result = result.replace(symbol, symbol.replace(i,"#"*len(i))) + if "'" in symbol: + result = result.replace (symbol, symbol.replace("'", "")) + if "\"" in symbol: + result = result.replace (symbol, symbol.replace("\"","" )) return result @@ -101,4 +130,11 @@ def create_request_for_loan(user_info: str) -> str: """ # пиши код здесь + text = user_info.split(",") + result = "" + data = ["Фамилия: ","Имя: ","Отчество: ","Дата рождения: ","Запрошенная сумма: "] + for i in range (0, len(data)): + result = result + (data[i]+text[i]) + if i != len(data)-1: + result += "\n" return result diff --git a/tasks/practice3/practice3.py b/tasks/practice3/practice3.py index 9115c9c..211b68c 100644 --- a/tasks/practice3/practice3.py +++ b/tasks/practice3/practice3.py @@ -1,6 +1,7 @@ from pathlib import Path from typing import Dict, Any, List, Optional - +import string +import csv def count_words(text: str) -> Dict[str, int]: """ @@ -27,8 +28,21 @@ def count_words(text: str) -> Dict[str, int]: """ # пиши свой код здесь + Dict = {} + for word in text.split(): + count = 0 + word = word.translate(str.maketrans('', '', string.punctuation)) + for symbol in word: + if symbol.isdigit() == False: + count += 1 + if count == len(word) and len(word) > 1: + temporary = word.lower() + if Dict.get(temporary) != None: + Dict[temporary] += 1 + else: + Dict[temporary] = 1 + return Dict - return {} def exp_list(numbers: List[int], exp: int) -> List[int]: @@ -41,8 +55,9 @@ def exp_list(numbers: List[int], exp: int) -> List[int]: """ # пиши свой код здесь + numbers = [x**exp for x in numbers] - return [] + return numbers def get_cashback(operations: List[Dict[str, Any]], special_category: List[str]) -> float: @@ -57,7 +72,12 @@ def get_cashback(operations: List[Dict[str, Any]], special_category: List[str]) :param special_category: список категорий повышенного кешбека :return: размер кешбека """ - + result = 0 + for i in range(len(operations)): + if operations[i]["category"] in special_category: + result += operations[i]["amount"]*0.05 + else: + result += operations[i]["amount"]*0.01 return result @@ -100,5 +120,10 @@ def csv_reader(header: str) -> int: """ # пиши свой код здесь - - return 0 + data = set() + with open(get_path_to_file()) as f: + reader = csv.DictReader(f) + for row in reader: + data.add(row[header]) + result = len(data) + return result From 65fa94e5fe238a61ea77794cd55fa66752957d32 Mon Sep 17 00:00:00 2001 From: mispasyuk Date: Thu, 13 Jun 2024 13:41:16 +0300 Subject: [PATCH 2/2] tasks 4 and 5 done --- tasks/practice4/practice4.py | 35 ++++++++++++++++++++++++++++++++--- tasks/practice5/employee.py | 20 ++++++++++++++++++++ tasks/practice5/team.py | 22 ++++++++++++++++++++++ 3 files changed, 74 insertions(+), 3 deletions(-) diff --git a/tasks/practice4/practice4.py b/tasks/practice4/practice4.py index a7d6b8d..47005d0 100644 --- a/tasks/practice4/practice4.py +++ b/tasks/practice4/practice4.py @@ -37,7 +37,36 @@ def search_phone(content: Any, name: str) -> Optional[str]: :param name: имя пользователя, у которого будем искать номер телефона :return: номер телефона пользователя или None """ - + flag = True # пиши свой код здесь - - return None + if isinstance(content, list): + for element in content: + if isinstance(element, list): + return search_phone(element, name) + elif isinstance(element, dict): + if "name" in element.keys(): + if element["name"] == name: + return element["phone"] + flag = False + else: + return search_phone(element, name) + if flag: + return None + elif isinstance(content, dict): + if "name" in content.keys(): + if content["name"] == name: + return content["phone"] + else: + return None + else: + for element in content.values(): + if isinstance(element, list): + return search_phone(element, name) + elif isinstance(element, dict): + if "name" in element.keys(): + if element["name"] == name: + return element["phone"] + else: + return None + else: + return search_phone(element, name) \ No newline at end of file diff --git a/tasks/practice5/employee.py b/tasks/practice5/employee.py index 1d7bad8..b28d487 100644 --- a/tasks/practice5/employee.py +++ b/tasks/practice5/employee.py @@ -39,6 +39,13 @@ def __init__(self, name: str, position: str, salary: int): """ # пиши свой код здесь + if isinstance(salary, int) and isinstance(position, str) and isinstance(name, str): + self.name = name + self.position = position + self._salary = salary + else: + raise ValueError + def get_salary(self) -> int: """ @@ -46,6 +53,7 @@ def get_salary(self) -> int: """ # пиши свой код здесь + return self._salary def __eq__(self, other: object) -> bool: """ @@ -56,6 +64,14 @@ def __eq__(self, other: object) -> bool: """ # пиши свой код здесь + if isinstance(other, Employee) and isinstance(self, Employee): + try: + return get_position_level(self.position) == get_position_level(other.position) + except NoSuchPositionError as exp: + raise ValueError + else: + raise TypeError + def __str__(self): """ @@ -64,6 +80,7 @@ def __str__(self): """ # пиши свой код здесь + return 'name: '+(self.name)+' position: '+(self.position) def __hash__(self): return id(self) @@ -83,6 +100,8 @@ def __init__(self, name: str, salary: int, language: str): """ # пиши свой код здесь + self.language = language + super().__init__(name,self.position, salary) class Manager(Employee): @@ -98,3 +117,4 @@ def __init__(self, name: str, salary: int): """ # пиши свой код здесь + super().__init__(name, self.position, salary) diff --git a/tasks/practice5/team.py b/tasks/practice5/team.py index 934796c..f432405 100644 --- a/tasks/practice5/team.py +++ b/tasks/practice5/team.py @@ -28,6 +28,12 @@ def __init__(self, name: str, manager: Manager): """ # пиши свой код здесь + if isinstance (name, str) and isinstance (manager, Manager): + self.name = name + self.manager = manager + else: + raise ValueError + self.__members = set() def add_member(self, member: Employee) -> None: """ @@ -36,6 +42,10 @@ def add_member(self, member: Employee) -> None: """ # пиши свой код здесь + if isinstance(member, Employee): + self.__members.add(member) + else: + raise TypeError def remove_member(self, member: Employee) -> None: """ @@ -44,6 +54,13 @@ def remove_member(self, member: Employee) -> None: """ # пиши свой код здесь + if isinstance(member, Employee): + if member in self.__members: + self.__members.remove(member) + else: + raise NoSuchMemberError(self.name, member) + else: + raise TypeError def get_members(self) -> Set[Employee]: """ @@ -52,6 +69,11 @@ def get_members(self) -> Set[Employee]: """ # пиши свой код здесь + set_members = self.__members.copy() + return set_members + def __str__(self) -> str: + return f"team: {self.name} manager: {self.manager.name} number of members: {len(self.__members)}" + def show(self) -> None: """