-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhw04_hard.py
More file actions
93 lines (74 loc) · 3.68 KB
/
hw04_hard.py
File metadata and controls
93 lines (74 loc) · 3.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# Задание:
# Эта программа являет собой упрощенный симулятор банкомата, пользователь вводит номер карты и пин код,
# в случае успеха программа предлагает меню для выбора действий, где он может проверить счет, или снять деньги.
#
# Эта задача не так похожа на другие, но она, как никогда прежде приближена к реалиям разработки общего проекта.
#
# Ваша задача исправить ошибки логики, и выполнить проверки данных, которые вводит пользователь.
# Обязательно убедитесь, что вы выполнили все проверки, попробуйте сами сломать свою программу вводя неверные данные!
person1 = {'card': 4276123465440000, 'pin': 9090, 'money': 100.90}
person2 = {'card': 4276123465440001, 'pin': 9091, 'money': 200.90}
person3 = {'card': 4276123465440002, 'pin': 9092, 'money': 300.90}
bank = [person1, person2, person3]
def get_person_by_card(card_number):
for person in bank:
if person['card'] == card_number:
return person
def is_pin_valid(person, pin_code):
if person['pin'] == pin_code:
return True
return False
def check_account(person):
return round(person['money'], 2)
def withdraw_money(person, money):
# if person['money'] - money == 0:
if money <= 0:
return 'Необходимо ввести значение больше 0!'
if person['money'] - money >= 0:
person['money'] -= money
return 'Вы сняли {} рублей.'.format(money)
else:
return 'На вашем счету недостаточно средств!'
def process_user_choice(choice, person):
# if choice == '1':
if choice == 1:
print(check_account(person))
# elif choice == '2':
elif choice == 2:
try:
count = float(input('Сумма к снятию:'))
print(withdraw_money(person, count))
except ValueError:
print('Некорректная сумма')
else:
print('Нет такого пункта')
def start():
# card_number, pin_code = input('Введите номер карты и пин код через пробел:').split()
# card_number = int(card_number)
# pin_code = int(pin_code)
try:
card_number, pin_code = input('Введите номер карты и пин код через пробел:').split()
card_number = int(card_number)
pin_code = int(pin_code)
except ValueError:
print('Вы ввели некорректные данные\n')
return start()
person = get_person_by_card(card_number)
if person and is_pin_valid(person, pin_code):
while True:
try:
choice = int(input('Выберите пункт:\n'
'1. Проверить баланс\n'
'2. Снять деньги\n'
'3. Выход\n'
'---------------------\n'
'Ваш выбор:'))
except ValueError:
print('Неверный ввод')
continue
if choice == 3:
break
process_user_choice(choice, person)
else:
print('Номер карты или пин код введены не верно!')
start()