Вы не проверяете результат после того, как игрок решил встать. Поскольку вы только deal()
один раз до цикла while True
, вы просто получите бесконечное условие, если вы решите стоять несколько раз. Подсчитайте счет после того, как дилер забрал все свои карты.
def hit_stand(deck, player, dealer, hand, stand):
print("What would you like to do")
print("[1] - Hit\n[2] - Stand")
choice = input("> ")
hand = False
if choice == '1':
player.append(deck.pop())
elif choice == '2':
stand = True
while score(dealer) <= 16:
print(score(dealer))
dealer.append(deck.pop())
display_info(player, dealer, stand)
results(player, dealer, first_hand, stand) # HERE
На несколько не связанной ноте вылет из игры после определения окончательного счета не очень элегантен. Вы захотите взглянуть на лучшую конструкцию, чем while True:
и sys.exit()
, чтобы контролировать поток, но это упражнение для вас.
Наконец, вы не должны использовать sum
в качестве имени переменной внутри score()
, потому что это встроенная функция, которую вы переопределяете. Используйте что-то вроде total
, чтобы не рисковать маскированием самой встроенной функции.
Я сказал бы в 2019, Ghidra ( https://ghidra-sre.org / ) стоит проверить. Это - открытый исходный код (и свободный) и имеет феноменальные возможности анализа кода, включая способность декомпилироваться полностью назад к довольно читаемому коду C.