Вы работаете программистом в банке.
Ваша задача - написать программу, которая обрабатывает транзакции с одного банковского счета на другой.
Программа должна делать следующее:
- Запустите бесконечный цикл, ожидая ввода.
Вход состоит из 3 чисел:
Accountnumber1, Accountnumber2 и x сумма денег.
например, 999222 777333 500 - Проверьте, действительны ли номера счетов и x.
Ввод действителен, если номера счетов не совпадают и существуют в вашей базе данных, и если х больше нуля, - Переведите деньги со счета 1 на счет 2, но только если на счете 1 достаточно денег.
Аккаунты не могут переходить в минус. - Если все идет хорошо, выведите что-то вроде «Передано х $ с номера 1 на номер 2»
- если что-то пойдет не так, например, из-за того, что номера счетов неверны, выведите сообщение об ошибке.
- Стоп, если вход 0
База данных содержит следующие банковские счета:
999222: 10000.56$
888333: 335.13$
555222: 56.0$
222111: 123.55$
123456: 0.0$
Простой пример Python 2:
account_numbers = ["999222", "888333", "555222", "222111", "123456"]
account_money = [10000.56, 335.13, 56.0, 123.55, 0.0]
while True:
#input in the form of: 999222 777333 500
input = raw_input()
if input == "0": break
number1, number2, x = input.split()
x = float(x)
if x <= 0:
print "Invalid request!"
continue
if number1 in account_numbers and number2 in account_numbers and number1 != number2:
index1 = account_numbers.index(number1)
index2 = account_numbers.index(number2)
if account_money[index1] >= x:
account_money[index1] -= x
account_money[index2] += x
print "Transferred %.2f$ from %s to %s" % (x, number1, number2)
else:
print "Not enough money in account %s!" % (number1)
else:
print "Invalid account number(s)!"
TWIST: номер
вашего банковского счета 123456. На
вашем счету ровно 0,0 $.
Вы хотите изменить это, манипулируя своей программой:
программа должна делать именно то, что должна, но также должна переводить некоторые свободные деньги на ваш счет.
Вы должны быть осторожны, хотя. Ваш руководитель будет смотреть на ваш код, и он не будет рад, если он увидит что-то подозрительное. Он знает о стандартных петлях , так что даже не пытайтесь.
Кроме того, деньги, которые вы даете себе, не должны быть слишком большими. Было бы подозрительно, если ваши деньги растут слишком быстро. Не будь жадным.
Ваш код должен быть максимально простым и понятным, старайтесь избегать обфускации.
Это конкурс популярности, ответ с наибольшим количеством голосов побед.
Примечание. Пожалуйста, выведите баланс каждого аккаунта в конце вашей программы, чтобы мы могли видеть, сколько денег вы заработали за свою тяжелую работу (просто чтобы показать, что ваша программа действительно что-то сделала).
РЕДАКТИРОВАТЬ: Чтобы уточнить
Проблема не в том, чтобы написать программу, которая может обрабатывать большую базу данных и много транзакций. Задача состоит в том, чтобы заставить программу выглядеть так, как будто она делает только то, что должна, а на самом деле - нет.
Например, если
введено 999222 777333 500
:
Затем добавьте, если возможно, 500 к счету 777333 и вычтите 500 из счета 999222. Вам не нужно «красть» деньги с этих счетов. Вы можете «генерировать» деньги для своего аккаунта, просто увеличивая их в своем коде.
Сколько вам решать, но вы можете предположить, что хотите заработать не менее 0,1 $ и не более. 10 $ за каждый заданный вход. Было бы подозрительно, если бы у вас вдруг были миллионы на вашем счету. Вам не нужно беспокоиться о неточности с плавающей запятой, но вы можете использовать ее, чтобы увеличить свои деньги.
Каждый пользователь играет роль руководителя.
Если хитрость сложно заметить, ответь.