From b7944ba380104a65e5c5d67750becf6f8ff26470 Mon Sep 17 00:00:00 2001 From: Bat0nNcH1k Date: Sun, 16 Jun 2024 15:27:53 +0300 Subject: [PATCH 1/6] Update practice1.py --- tasks/practice1/practice1.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasks/practice1/practice1.py b/tasks/practice1/practice1.py index 030da70..21e154a 100644 --- a/tasks/practice1/practice1.py +++ b/tasks/practice1/practice1.py @@ -9,7 +9,7 @@ def concatenate_strings(a: str, b: str) -> str: """ # пиши свой код здесь - + result = a + b return result @@ -23,5 +23,5 @@ def calculate_salary(total_compensation: int) -> float: """ # пиши свой код здесь - + result = total_compensation * 0.87 return result From e3140fd7135788ac503f7f461336afdba5644833 Mon Sep 17 00:00:00 2001 From: Bat0nNcH1k Date: Sun, 16 Jun 2024 16:46:42 +0300 Subject: [PATCH 2/6] Update practice2.py --- tasks/practice2/practice2.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tasks/practice2/practice2.py b/tasks/practice2/practice2.py index 008f6d1..bd1dd89 100644 --- a/tasks/practice2/practice2.py +++ b/tasks/practice2/practice2.py @@ -1,3 +1,4 @@ +import random from typing import Iterable UNCULTURED_WORDS = ('kotleta', 'pirog') @@ -13,6 +14,7 @@ def greet_user(name: str) -> str: """ # пиши код здесь + greeting = f'Здравствуй, {name}!' return greeting @@ -29,6 +31,7 @@ def get_amount() -> float: """ # пиши код здесь + amount = round(random.uniform(100, 1000000), 2) return amount @@ -43,6 +46,9 @@ def is_phone_correct(phone_number: str) -> bool: """ # пиши код здесь + result = False + if phone_number[:2] == '+7': + result = phone_number[2:].isdigit() and len(phone_number[2:]) == 10 return result @@ -59,6 +65,7 @@ def is_amount_correct(current_amount: float, transfer_amount: str) -> bool: """ # пиши код здесь + result = current_amount >= float(transfer_amount) return result @@ -78,6 +85,17 @@ def moderate_text(text: str, uncultured_words: Iterable[str]) -> str: """ # пиши код здесь + result = text.strip().capitalize() + result = ' '.join(result.split()) + + for symbol in ['"', "'"]: + result = result.replace(symbol, "") + + for word in uncultured_words: + result = result.replace(word, '#' * len(word)) + + result = ' '.join(result.split()) + return result @@ -101,4 +119,10 @@ def create_request_for_loan(user_info: str) -> str: """ # пиши код здесь + surname, name, middle_name, date_of_birth, requested_amount = user_info.split(',') + result = (f'Фамилия: {surname}\n' + f'Имя: {name}\n' + f'Отчество: {middle_name}\n' + f'Дата рождения: {date_of_birth}\n' + f'Запрошенная сумма: {requested_amount}') return result From 15fb1b21b5931237e315b31f302c10358c41a87c Mon Sep 17 00:00:00 2001 From: Bat0nNcH1k Date: Mon, 17 Jun 2024 10:50:14 +0300 Subject: [PATCH 3/6] Update practice3.py --- tasks/practice3/practice3.py | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/tasks/practice3/practice3.py b/tasks/practice3/practice3.py index 9115c9c..bd6883e 100644 --- a/tasks/practice3/practice3.py +++ b/tasks/practice3/practice3.py @@ -27,8 +27,21 @@ def count_words(text: str) -> Dict[str, int]: """ # пиши свой код здесь + marks = "'.,;:?!" + result = {} + text = text.split() + + for word in text: + word = word.lower() + for symbol in marks: + word = word.replace(symbol, "") + if word.isalpha() and len(word) > 1: + if not word in result: + result[word.lower()] = 1 + else: + result[word.lower()] += 1 - return {} + return result def exp_list(numbers: List[int], exp: int) -> List[int]: @@ -41,8 +54,7 @@ def exp_list(numbers: List[int], exp: int) -> List[int]: """ # пиши свой код здесь - - return [] + return [pow(number, exp) for number in numbers] def get_cashback(operations: List[Dict[str, Any]], special_category: List[str]) -> float: @@ -58,6 +70,15 @@ def get_cashback(operations: List[Dict[str, Any]], special_category: List[str]) :return: размер кешбека """ + # пиши свой код здесь + result = 0 + + for operation in operations: + if operation['category'] in special_category: + result += operation['amount'] * 0.05 + continue + result += operation['amount'] * 0.01 + return result From 2bde7e6cd98789914f8b368ec8b95e903535f2fd Mon Sep 17 00:00:00 2001 From: Bat0nNcH1k Date: Mon, 17 Jun 2024 20:17:16 +0300 Subject: [PATCH 4/6] Update practice3.py --- tasks/practice3/practice3.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tasks/practice3/practice3.py b/tasks/practice3/practice3.py index bd6883e..4ed58d2 100644 --- a/tasks/practice3/practice3.py +++ b/tasks/practice3/practice3.py @@ -1,3 +1,4 @@ +import csv from pathlib import Path from typing import Dict, Any, List, Optional @@ -121,5 +122,10 @@ def csv_reader(header: str) -> int: """ # пиши свой код здесь - - return 0 + with open(get_path_to_file()) as file: + r = csv.DictReader(file) + unique_elements = set() + for c in r: + unique_elements.add(c[header]) + result = len(unique_elements) + return result From 01e69067b8525b73c152c1b2cd90e6ebc8a382b6 Mon Sep 17 00:00:00 2001 From: Bat0nNcH1k Date: Mon, 17 Jun 2024 20:43:45 +0300 Subject: [PATCH 5/6] Update practice4.py --- tasks/practice4/practice4.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/tasks/practice4/practice4.py b/tasks/practice4/practice4.py index a7d6b8d..e62ea4e 100644 --- a/tasks/practice4/practice4.py +++ b/tasks/practice4/practice4.py @@ -39,5 +39,18 @@ def search_phone(content: Any, name: str) -> Optional[str]: """ # пиши свой код здесь - + if isinstance(content, list): + for element in content: + result = search_phone(element, name) + if result: + return result + + if isinstance(content, dict): + if content.get('name') == name: + return content.get('phone') + else: + for val in content.values(): + result = search_phone(val, name) + if result: + return result return None From 9c1dbe62e6a340a20d5b8864cfeb3004a7bdd390 Mon Sep 17 00:00:00 2001 From: Bat0nNcH1k Date: Mon, 17 Jun 2024 21:38:01 +0300 Subject: [PATCH 6/6] Never gonna give you up Never gonna give you up, never gonna let you down Never gonna run around and desert you Never gonna make you cry, never gonna say goodbye Never gonna tell a lie and hurt you --- tasks/practice5/employee.py | 18 +++++++++++++++++- tasks/practice5/team.py | 16 ++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/tasks/practice5/employee.py b/tasks/practice5/employee.py index 1d7bad8..2ddc583 100644 --- a/tasks/practice5/employee.py +++ b/tasks/practice5/employee.py @@ -39,6 +39,12 @@ def __init__(self, name: str, position: str, salary: int): """ # пиши свой код здесь + if type(salary) is int: + self.name = name + self.position = position + self._salary = salary + else: + raise ValueError def get_salary(self) -> int: """ @@ -46,6 +52,7 @@ def get_salary(self) -> int: """ # пиши свой код здесь + return self._salary def __eq__(self, other: object) -> bool: """ @@ -56,6 +63,12 @@ def __eq__(self, other: object) -> bool: """ # пиши свой код здесь + if not isinstance(other, Employee): + raise TypeError + try: + return get_position_level(self.position) == get_position_level(other.position) + except: + raise ValueError def __str__(self): """ @@ -64,6 +77,7 @@ def __str__(self): """ # пиши свой код здесь + return f"name: {self.name} position: {self.position}" def __hash__(self): return id(self) @@ -83,7 +97,8 @@ def __init__(self, name: str, salary: int, language: str): """ # пиши свой код здесь - + super().__init__(name, self.position, salary) + self.language = language class Manager(Employee): """ @@ -98,3 +113,4 @@ def __init__(self, name: str, salary: int): """ # пиши свой код здесь + super().__init__(name, self.position, salary) \ No newline at end of file diff --git a/tasks/practice5/team.py b/tasks/practice5/team.py index 934796c..de257ca 100644 --- a/tasks/practice5/team.py +++ b/tasks/practice5/team.py @@ -28,6 +28,9 @@ def __init__(self, name: str, manager: Manager): """ # пиши свой код здесь + self.name = name + self.manager = manager + self.__members = set() def add_member(self, member: Employee) -> None: """ @@ -36,6 +39,9 @@ def add_member(self, member: Employee) -> None: """ # пиши свой код здесь + if not(isinstance(member, Employee)): + raise TypeError + self.__members.add(member) def remove_member(self, member: Employee) -> None: """ @@ -44,6 +50,12 @@ def remove_member(self, member: Employee) -> None: """ # пиши свой код здесь + if not isinstance(member, Employee): + raise TypeError + if member in self.__members: + self.__members.remove(member) + else: + raise NoSuchMemberError(self.name, member) def get_members(self) -> Set[Employee]: """ @@ -52,6 +64,10 @@ def get_members(self) -> Set[Employee]: """ # пиши свой код здесь + return self.__members.copy() + + def __str__(self): + return f"team: {self.name} manager: {self.manager.name} number of members: {len(self.get_members())}" def show(self) -> None: """