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 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 diff --git a/tasks/practice3/practice3.py b/tasks/practice3/practice3.py index 9115c9c..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 @@ -27,8 +28,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 +55,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 +71,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 @@ -100,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 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 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: """