Найти тему
Python Lounge

Пишем блэкджек на Python

Ну, точнее, не блэкджек, а его мини-вариант под названием очко.

Для реализации нам понадобится колода карт, из которой каждый раз мы будем вынимать по карте и прибавлять к результату.

Далее, сами "карты": шестерка, семерка, восьмерка, девятка, десятка, валет (достоинством 2), дама (3), король (4), и туз (11).

koloda = [6,7,8,9,10,2,3,4,11] * 4

Случайным образом перемешаем карты, используя функцию shuffle из модуля random.

import random
random.shuffle(koloda)

И, собственно, начинаем играть:

print('Поиграем в очко?')
count = 0

while True:
choice = input('Будете брать карту? y/n
\n')
if choice == 'y':
current = koloda.pop()
print('Вам попалась карта достоинством
%d' %current)
count += current
if count > 21:
print('Извините, но вы проиграли')
break
elif count == 21:
print('Поздравляю, вы набрали 21!')
break
else:
print('У вас
%d очков.' %count)
elif choice == 'n':
print('У вас
%d очков и вы закончили игру.' %count)
break

print('До новых встреч!')

Изначально у пользователя 0 очков. Мы его спрашиваем, будет ли он брать карту, на что он должен ответить y или n. Если пользователь ответил n, то мы говорим ему, сколько очков он набрал, и завершаем программу. Если он изъявил желание взять карту (ух, какой нехороший пользователь :)), то мы снимаем ему карту из списка (с помощью метода pop). Мы снимаем последнюю карту, хотя вообще без разницы, какую снимать, ведь они перемешаны.

Прибавляем к числу очков достоинство снятой карты, а дальше смотрим, сколько всего очков у пользователя. Если количество очков больше 21, то извиняйте, пользователь проиграл. Если число очков равно 21, то пользователь выиграл. Если меньше - еще раз спросим пользователя, будет ли он брать карту.

В конце игры прощаемся с пользователем.