← Все вопросы
Игра «камень-ножницы-бумага» против компьютера — как сделать первой?
6
Хочу сделать «камень-ножницы-бумага»: я выбираю, компьютер выбирает случайно, и программа говорит, кто победил. Застрял на главном — как определить победителя, не расписывая все варианты руками? Их же очень много получается.
2 ответа
10
✓ Принятый ответ — помог автору
Хитрость в том, чтобы для каждого выбора знать, что он бьёт. Тогда вся логика — пара строк:
import random
beats = {'камень': 'ножницы', 'ножницы': 'бумага', 'бумага': 'камень'}
player = input('камень / ножницы / бумага: ').strip().lower()
computer = random.choice(list(beats))
print('Компьютер:', computer)
if player == computer:
print('Ничья')
elif beats[player] == computer:
print('Ты выиграл!')
else:
print('Компьютер выиграл')
Ключ — словарь beats: «камень бьёт ножницы» и т.д. Если выбор игрока бьёт выбор компьютера (beats[player] == computer) — победа. Никаких девяти if расписывать не нужно. Дальше можешь добавить счёт и игру до 3 побед.
3
Если хочешь подстраховаться от опечаток игрока, проверь ввод заранее:
if player not in beats:
print('Не понял выбор')
Иначе при вводе «камено» программа упадёт с KeyError. Мелочь, но именно такие проверки отличают законченный проект от полусырого.
Ваш ответ
, чтобы ответить на вопрос.