камень ножницы бумага против компа на питоне — помогите собрать
Делаю проект по информатике — камень-ножницы-бумага против компьютера. Комп должен выбирать случайно. Вот что есть:
import random
player = input("камень/ножницы/бумага: ")
comp = random.choice(["камень", "ножницы", "бумага"])
print("Комп выбрал:", comp)
А вот кто победил — не соображу как проверить, там же куча комбинаций. Туплю с if-ами.
2 ответа
Комбинаций на самом деле немного. Сначала проверяем ничью, потом три случая когда выигрывает игрок, а всё остальное — победа компа. Вот целиком:
import random
variants = ["камень", "ножницы", "бумага"]
player = input("камень / ножницы / бумага: ")
comp = random.choice(variants)
print("Комп выбрал:", comp)
if player == comp:
print("Ничья!")
elif (player == "камень" and comp == "ножницы") or \
(player == "ножницы" and comp == "бумага") or \
(player == "бумага" and comp == "камень"):
print("Ты победил!")
else:
print("Комп победил :(")
Как работает: если выборы совпали — ничья. Дальше перечисляем все три ситуации, где игрок бьёт компа (камень бьёт ножницы и т.д.). Если ни одна не сработала — значит выиграл комп. Обратный слеш \ просто переносит длинное условие на новую строку.
Как улучшить: заведи счётчики побед игрока и компа и играй до 3 побед — получится настоящий матч.
У меня так же было, помогло сделать ввод цифрами (1-камень, 2-ножницы, 3-бумага), а то все опечатываются в словах. И ещё player.lower().strip() спасает, если кто-то введёт «Камень » с пробелом или с большой буквы.