Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/263: Рейтинг темы: голосов - 263, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 13.10.2018
Сообщений: 5

Словари: банковские счета

13.10.2018, 19:57. Показов 53627. Ответов 11

Студворк — интернет-сервис помощи студентам
Некоторый банк хочет внедрить систему управления счетами клиентов, поддерживающую следующие операции:

Пополнение счета клиента. Снятие денег со счета. Запрос остатка средств на счете. Перевод денег между счетами клиентов. Начисление процентов всем клиентам.

Вам необходимо реализовать такую систему. Клиенты банка идентифицируются именами (уникальная строка, не содержащая пробелов). Первоначально у банка нет ни одного клиента. Как только для клиента проводится операция пололнения, снятия или перевода денег, ему заводится счет с нулевым балансом. Все дальнейшие операции проводятся только с этим счетом. Сумма на счету может быть как положительной, так и отрицательной, при этом всегда является целым числом.

Формат ввода
Входной файл содержит последовательность операций. Возможны следующие операции: DEPOSIT name sum - зачислить сумму sum на счет клиента name. Если у клиента нет счета, то счет создается. WITHDRAW name sum - снять сумму sum со счета клиента name. Если у клиента нет счета, то счет создается. BALANCE name - узнать остаток средств на счету клиента name. TRANSFER name1 name2 sum - перевести сумму sum со счета клиента name1 на счет клиента name2. Если у какого-либо клиента нет счета, то ему создается счет. INCOME p - начислить всем клиентам, у которых открыты счета, pот суммы счета. Проценты начисляются только клиентам с положительным остатком на счету, если у клиента остаток отрицательный, то его счет не меняется. После начисления процентов сумма на счету остается целой, то есть начисляется только целое число денежных единиц. Дробная часть начисленных процентов отбрасывается.

Формат вывода
Для каждого запроса BALANCE программа должна вывести остаток на счету данного клиента. Если же у клиента с запрашиваемым именем не открыт счет в банке, выведите ERROR.

Ввод:
DEPOSIT Ivanov 100
INCOME 5
BALANCE Ivanov
TRANSFER Ivanov Petrov 50
WITHDRAW Petrov 100
BALANCE Petrov
BALANCE Sidorov

Вывод:
105
-50
ERROR
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.10.2018, 19:57
Ответы с готовыми решениями:

разработайте класс фабрику, создающий и удаляющий банковские счета и сохраняющий их атрибуты в одном файле
разработайте класс фабрику, создающий и удаляющий банковские счета и сохраняющий их атрибуты в...

Банковские счета
Некоторый банк хочет внедрить систему управления счетами клиентов, поддерживающую следующие...

Банковские счета
Некоторый банк хочет внедрить систему управления счетами клиентов, поддерживающую следующие...

11
 Аватар для Semen-Semenich
5230 / 3476 / 1174
Регистрация: 21.03.2016
Сообщений: 8,304
14.10.2018, 20:38
и в чем проблема? создать словарь или функции которые будут его обрабатывать?
0
14.10.2018, 23:05

Не по теме:

Semen-Semenich, лень.

0
10 / 10 / 0
Регистрация: 15.11.2014
Сообщений: 17
12.04.2019, 02:10
Python
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
def deposit(name, sum):
    bank[name] = bank.get(name, 0) + int(sum)
 
 
def withdraw(name, sum):
    bank[name] = bank.get(name, 0) - int(sum)
 
 
def balance(name):
    if name not in bank:
        print('ERROR')
    else:
        print(bank[name])
 
 
def income(percent):
    for k, v in bank.items():
        if v > 0:
            bank[k] = int(v * ((int(percent)/100) + 1))
 
 
bank = dict()
inFile = open('input.txt')
for line in inFile:
    line = line.split()
    if 'BALANCE' in line:
        balance(line[1])
    elif 'DEPOSIT' in line:
        deposit(line[1], line[2])
    elif 'WITHDRAW' in line:
        withdraw(line[1], line[2])
    elif 'INCOME' in line:
        income(line[1])
    else:
        withdraw(line[1], line[3])
        deposit(line[2], line[3])
inFile.close()
проверено
2
13.10.2019, 10:34

Не по теме:

Разве в условии задачи сказано, что дан текстовый файл? Тема: «Сортировки, множества и словари» – и ничего более. Всегда удивляюсь отношению к вопрошающим в этой ветке Cyberforum'а. Эдакое снисходительно-уничижительное. Извиняюсь, за офф-топ

0
 Аватар для Semen-Semenich
5230 / 3476 / 1174
Регистрация: 21.03.2016
Сообщений: 8,304
13.10.2019, 13:07
Dinka1, если немного почитать условие "Входной файл содержит последовательность операций" понимайте как хотите.
1
130 / 61 / 3
Регистрация: 01.09.2011
Сообщений: 345
13.10.2019, 13:28
Semen-Semenich, последовательность операций и файл input.txt это разные вещи. В файле input.txt всегда содержатся входные данные и он открывается параллельно с test.py, а в данном случае его нет по определению. Нигде не указано место его хранения. То есть, скрипт работать не будет. Во всяком случае, я высказала свое скромное мнение
0
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
13.10.2019, 15:35
Dinka1, если файл лежит в той же папке, что и test.py - то будет.
1
11 / 15 / 1
Регистрация: 13.05.2020
Сообщений: 49
30.06.2020, 19:07
Python
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
def deposit(arg):
    name, money = arg
    bank[name] = bank.setdefault(name, 0) + int(money)
 
def withdraw(arg):
    name, money = arg
    bank[name] = bank.setdefault(name, 0) - int(money)
 
def balance(arg):
    name = arg[0]
    if name in bank:
        print(bank[name])
    else:
        print('ERROR')
 
def transfer(arg):
    name_1, name_2, money = arg       
    withdraw((name_1, money))
    deposit((name_2, money))
 
def income(arg):
    percent = int(arg[0])
    for name, balanse in bank.items():
        if balanse > 0:
            bank[name] = bank.get(name) + balanse * percent//100
 
bank = {}
bank_fun = {
                        'DEPOSIT' : deposit, 'WITHDRAW' : withdraw,
                        'BALANCE' : balance, 'TRANSFER' : transfer,
                        'INCOME' : income
                    }
 
for _ in range(int(input())):
    data = input().split()
    fun_name = data[0]
    arg = data[1:]
    bank_fun[fun_name](arg)
1
2 / 2 / 0
Регистрация: 06.04.2021
Сообщений: 21
20.08.2021, 21:34
Словари напоминают конструкцию JSON...
0
7 / 7 / 0
Регистрация: 04.12.2020
Сообщений: 40
19.09.2021, 18:08
def deposit(name, sum):
bank[name] = bank.get(name, 0) + int(sum)


def withdraw(name, sum):
bank[name] = bank.get(name, 0) - int(sum)


def balance(name):
if name not in bank:
print('ERROR')
else:
print(bank[name])


def income(percent):
for k, v in bank.items():
if v > 0:
bank[k] = int(v * ((int(percent) / 100) + 1))


bank = dict()
a = int(input())
for l in range(a):
line = input().split()
if 'BALANCE' in line:
balance(line[1])
elif 'DEPOSIT' in line:
deposit(line[1], line[2])
elif 'WITHDRAW' in line:
withdraw(line[1], line[2])
elif 'INCOME' in line:
income(line[1])
else:
withdraw(line[1], line[3])
deposit(line[2], line[3])


перекатал код под инпут
0
0 / 0 / 0
Регистрация: 10.07.2024
Сообщений: 2
15.08.2024, 12:37
Все понимаю, что времени много прошло, но это для удобства других людей

Python
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
def deposit(name, sum):
  bank[name] = bank.get(name, 0) + int(sum)
 
 
def withdraw(name, sum):
  bank[name] = bank.get(name, 0) - int(sum)
 
 
def balance(name):
  if name not in bank:
    print('ERROR')
  else:
    print(bank[name])
 
 
def income(percent):
  for k, v in bank.items():
    if v > 0:
      bank[k] = int(v * ((int(percent) / 100) + 1))
 
 
bank = dict()
a = int(input())
for l in range(a):
  line = input().split()
  if 'BALANCE' in line:
    balance(line[1])
  elif 'DEPOSIT' in line:
    deposit(line[1], line[2])
  elif 'WITHDRAW' in line:
    withdraw(line[1], line[2])
  elif 'INCOME' in line:
    income(line[1])
  else:
    withdraw(line[1], line[3])
    deposit(line[2], line[3])
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.08.2024, 12:37
Помогаю со студенческими работами здесь

Задача Банковские счета (из Сириуса)
У меня проблема с задачей: Сириус выдает неверный ответ на втором тесте. Задача: Некоторый банк...

Банковские проценты
Вклад в банке составляет x рублей. Ежегодно он увеличивается на p процентов, после чего дробная...

Банковские проценты
Банковские проценты Вклад в банке составляет x рублей. Ежегодно он увеличивается на p процентов,...

Банковские операции
Ранее уже была подобная тема: https://www.cyberforum.ru/python-beginners/thread2333867.html, только...

Банковские проценты
Вклад в банке составляет x рублей. Ежегодно он увеличивается на p процентов, после чего дробная...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru