diff --git a/tasks/practice1/practice1.py b/tasks/practice1/practice1.py index 030da70..be7db62 100644 --- a/tasks/practice1/practice1.py +++ b/tasks/practice1/practice1.py @@ -10,7 +10,7 @@ def concatenate_strings(a: str, b: str) -> str: # пиши свой код здесь - return result + return a+b def calculate_salary(total_compensation: int) -> float: @@ -24,4 +24,4 @@ def calculate_salary(total_compensation: int) -> float: # пиши свой код здесь - return result + return total_compensation*(1-0.13) diff --git a/tasks/practice2/practice2.py b/tasks/practice2/practice2.py index 008f6d1..9cb84c8 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,8 @@ def greet_user(name: str) -> str: """ # пиши код здесь + #greeting = 'Guten morgen, ' + name + greeting = name + '!' return greeting @@ -29,6 +32,7 @@ def get_amount() -> float: """ # пиши код здесь + amount = random.randint(10000, 100000000) / 100 return amount @@ -43,6 +47,10 @@ def is_phone_correct(phone_number: str) -> bool: """ # пиши код здесь + if (len(phone_number) == 12 and phone_number[:2] == '+7' and all(i.isdigit() for i in phone_number[2:])): + result = True + else: + result = False return result @@ -59,7 +67,7 @@ def is_amount_correct(current_amount: float, transfer_amount: str) -> bool: """ # пиши код здесь - return result + return current_amount >= float(transfer_amount) def moderate_text(text: str, uncultured_words: Iterable[str]) -> str: @@ -78,6 +86,9 @@ def moderate_text(text: str, uncultured_words: Iterable[str]) -> str: """ # пиши код здесь + result = text.lower().strip() + result = result.replace('"', '').replace("'", '').replace(uncultured_words[0], '#######').replace(uncultured_words[1], '#####') + result = result[0].upper() + result[1:] return result @@ -101,4 +112,6 @@ def create_request_for_loan(user_info: str) -> str: """ # пиши код здесь + data = user_info.split(',') + result = 'Фамилия: ' + data[0] + '\nИмя: ' + data[1] + '\nОтчество: ' + data[2] + '\nДата рождения: ' + data[3] + '\nЗапрошенная сумма: ' + data[4] return result diff --git a/tasks/practice3/practice3.py b/tasks/practice3/practice3.py index 9115c9c..e55ded1 100644 --- a/tasks/practice3/practice3.py +++ b/tasks/practice3/practice3.py @@ -1,5 +1,7 @@ from pathlib import Path from typing import Dict, Any, List, Optional +import re +import csv def count_words(text: str) -> Dict[str, int]: @@ -27,8 +29,13 @@ def count_words(text: str) -> Dict[str, int]: """ # пиши свой код здесь - - return {} + result = {} + text = text.lower().strip() + mask = r'\b[a-z]+\b' + words = re.findall(mask, text) + for word in words: + result[word] = words.count(word) + return result def exp_list(numbers: List[int], exp: int) -> List[int]: @@ -41,8 +48,9 @@ def exp_list(numbers: List[int], exp: int) -> List[int]: """ # пиши свой код здесь - - return [] + for i in range(len(numbers)): + numbers[i] = numbers[i]**exp + return numbers def get_cashback(operations: List[Dict[str, Any]], special_category: List[str]) -> float: @@ -57,7 +65,12 @@ def get_cashback(operations: List[Dict[str, Any]], special_category: List[str]) :param special_category: список категорий повышенного кешбека :return: размер кешбека """ - + result = 0 + for i in operations: + if (i['category'] in special_category): + result += 0.05*i['amount'] + else: + result += 0.01*i['amount'] return result @@ -100,5 +113,9 @@ def csv_reader(header: str) -> int: """ # пиши свой код здесь - - return 0 + with open(get_path_to_file()) as r_file: + file_reader = csv.DictReader(r_file) + elements = set() + for element in file_reader: + elements.add(element[header]) + return len(elements) diff --git a/tasks/practice4/practice4.py b/tasks/practice4/practice4.py index a7d6b8d..80bd7b2 100644 --- a/tasks/practice4/practice4.py +++ b/tasks/practice4/practice4.py @@ -39,5 +39,15 @@ def search_phone(content: Any, name: str) -> Optional[str]: """ # пиши свой код здесь - + if (isinstance(content, list)): + for element in content: + if (search_phone(element, name) != None): + return search_phone(element, name) + if(isinstance(content, dict)): + if(content.get('name') == name): + return content['phone'] + else: + for value in content.values(): + if (search_phone(value, name) != None): + return search_phone(value, name) return None diff --git a/tasks/practice5/employee.py b/tasks/practice5/employee.py index 1d7bad8..866eb7a 100644 --- a/tasks/practice5/employee.py +++ b/tasks/practice5/employee.py @@ -39,6 +39,12 @@ def __init__(self, name: str, position: str, salary: int): """ # пиши свой код здесь + self.name = name + self.position = position + if not isinstance(salary, int): + raise ValueError + self._salary = salary + def get_salary(self) -> int: """ @@ -46,6 +52,8 @@ def get_salary(self) -> int: """ # пиши свой код здесь + return self._salary + def __eq__(self, other: object) -> bool: """ @@ -56,6 +64,13 @@ 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 NoSuchPositionError as exp: + raise ValueError from exp + def __str__(self): """ @@ -64,6 +79,7 @@ def __str__(self): """ # пиши свой код здесь + return ('name: ' + self.name + ' position: ' + self.position) def __hash__(self): return id(self) @@ -83,6 +99,9 @@ def __init__(self, name: str, salary: int, language: str): """ # пиши свой код здесь + self.name = name + self._salary = salary + self.language = language class Manager(Employee): @@ -98,3 +117,5 @@ def __init__(self, name: str, salary: int): """ # пиши свой код здесь + self.name = name + self._salary = salary diff --git a/tasks/practice5/team.py b/tasks/practice5/team.py index 934796c..2b119a3 100644 --- a/tasks/practice5/team.py +++ b/tasks/practice5/team.py @@ -28,6 +28,10 @@ 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 +40,10 @@ 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 +52,13 @@ def remove_member(self, member: Employee) -> None: """ # пиши свой код здесь + if not isinstance(member, Employee): + raise TypeError + try: + self.__members.remove(member) + except KeyError as exp: + raise NoSuchMemberError(self.name, member) from exp + def get_members(self) -> Set[Employee]: """ @@ -52,6 +67,12 @@ def get_members(self) -> Set[Employee]: """ # пиши свой код здесь + return set(self.__members) + + + def __str__(self) -> str: + return ('team: ' + self.name + ' manager: ' + self.manager.name + ' number of members: ' + str(len(self.__members))) + def show(self) -> None: """