Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Учебный проект.
## Это проект исключительно создан для сдачи домашнего задания.


## Установка
### 1. Скачайте архвив с [GitHub](https://github.com/Vladimir9645/PythonProject1)
#### 1.1 скопируйте SSH ключ
#### 1.2 перейдите в Pycharm найдите Clone repository и туда вставьте ссылку
### 2. Зарегеструйте аккаунт в [GitHub](github.com)



## Описание
### В моем проекте на данный моменте находиться 2 домашние работы.
### 1. masks.py и widget.py где реализованы функции маски банковской карты
### 2. processing.py фильтрация списков
16 changes: 0 additions & 16 deletions main.py
Original file line number Diff line number Diff line change
@@ -1,16 +0,0 @@
# This is a sample Python script.

# Press Shift+F10 to execute it or replace it with your code.
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.


def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press Ctrl+F8 to toggle the breakpoint.


# Press the green button in the gutter to run the script.
if __name__ == '__main__':
print_hi('PyCharm')

# See PyCharm help at https://www.jetbrains.com/help/pycharm/
8 changes: 1 addition & 7 deletions src/masks.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
"""принимает на вход номер карты в виде числа и возвращает маску"""


def get_mask_card_number(card_number: str) -> str:
"""Функция входа номер карты в виде числа и возврата в виде маски """
"""Функция входа номер карты в виде числа и возврата в виде маски"""
# Убираем все пробелы из переданной строки
card_number = card_number.replace(" ", "")
# Проверяем, что длина карты 16 символов и все символы цифры
Expand All @@ -23,9 +20,6 @@ def get_mask_card_number(card_number: str) -> str:
return f"{part1} {part2}{part2_mask} {part3_mask} {part4}"


"""Принимает на вход номер счета в виде числа и возвращает маску номера"""


def get_mask_account(mask_account: str) -> str:
"""функция ввода номера счета и вывода с маской"""

Expand Down
52 changes: 52 additions & 0 deletions src/processing.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
from datetime import datetime
from typing import Any, Dict, List


def filter_by_state(dictionary_1: List[Dict[str, Any]], state: str = "EXECUTED") -> List[Dict[str, Any]]:
"""Фильтрует список словарей по значению ключа 'state'"""
return [item for item in dictionary_1 if item.get("state") == state]


def sort_by_date(
dictionary_2: List[Dict[str, Any]],
date_key: str = "date",
date_format: str = "%Y-%m-%dT%H:%M:%S.%f",
reverse: bool = True,
) -> List[Dict[str, Any]]:
"""Сортирует список словарей по дате, учитывая формат даты с временем и миллисекундами"""
return sorted(dictionary_2, key=lambda d: datetime.strptime(d[date_key], date_format), reverse=reverse)


# код сортирует список словарей по дате,
# указанной в каждом словаре,
# в том порядке, который задаётся переменной reverse


# Исходный список словарей
dictionary = [
{"id": 41428829, "state": "EXECUTED", "date": "2019-07-03T18:35:29.512364"},
{"id": 939719570, "state": "EXECUTED", "date": "2018-06-30T02:08:58.425572"},
{"id": 594226727, "state": "CANCELED", "date": "2018-09-12T21:27:25.241689"},
{"id": 615064591, "state": "CANCELED", "date": "2018-10-14T08:21:33.419441"},
]

# Фильтруем словарь по состоянию 'EXECUTED'
filtered = filter_by_state(dictionary, "EXECUTED")
# Сортируем отфильтрованные данные по дате
sorted_filtered = sort_by_date(filtered)
# Выводим отсортированные данные для состояния 'EXECUTED'
print(sorted_filtered)


# Фильтруем словарь по состоянию 'CANCELED'
filtered = filter_by_state(dictionary, "CANCELED")
# Сортируем отфильтрованные данные по дате
sorted_filtered = sort_by_date(filtered)
# Выводим отсортированные данные для состояния 'CANCELED'
print(sorted_filtered)
# пустая строка
print()

# Использование функции сортировки
sorted_events = sort_by_date(dictionary, "date")
print(sorted_events)
22 changes: 7 additions & 15 deletions src/widget.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,17 @@
"""Обрабатывает информацию как о картах, так и о счетах."""
from datetime import datetime

from src.masks import get_mask_account, get_mask_card_number
from datetime import datetime


def mask_account_card(input_str: str) -> str:

""" Принимает строку формата:
"""Принимает строку формата:
- "Visa Platinum 7000792289606361"
- "Maestro 7000792289606361"
- "Счет 73654108430135874305"
Возвращает строку с замаскированным номером. """
Возвращает строку с замаскированным номером."""

card_types = ['Maestro', 'MasterCard',
'Visa Classic', 'Visa Platinum',
'Visa Gold'
]
account_types = ['Счет']
card_types = ["Maestro", "MasterCard", "Visa Classic", "Visa Platinum", "Visa Gold"]
account_types = ["Счет"]

input_str = input_str.strip()
parts = input_str.split()
Expand All @@ -41,12 +36,9 @@ def mask_account_card(input_str: str) -> str:
print(mask_account_card("Счет 73654108430135874305"))


""" Принимает строку с датой в формате "2024-03-11T02:26:18.671407"
и возвращает строку с датой в формате "ДД.ММ.ГГГГ" """


def get_date(date_str: str) -> str:
"""Принимает строку с датой в формает и возвращает строку с датой."""
""" Принимает строку с датой в формате "2024-03-11T02:26:18.671407"
и возвращает строку с датой в формате "ДД.ММ.ГГГГ" """
# Переносим входную строку в объект datetime
dt = datetime.fromisoformat(date_str)
# Форматируем дату в нужный формат: День.Месяц.Год
Expand Down