Задать вопрос
@melirika12

Можно ли так решить задачу «камень-ножницы-бумага»?

Грамотное ли это решение задачи? Я надеюсь, что суть задачи понятна)
Особенно интересна предпоследняя строчка, можно ли так решить проблему с одинаковыми значениями? Если нет, то почему? (пока не встречала, что так делают). А так все работает...

import random

num1 = 'Камень'
num2 = 'Ножницы'
num3 = 'Бумага'

def main():
       number = random.randint(1,3)
       if number == 1:
           number = num1
       elif number == 2:
           number = num2
       else:
           number = num3
       game(number)

def game(number):
             print('Введите 1, если хотите выбрать Камень')
             print('Введите 2, если хотите выбрать Ножницы')
             print('Введите 3, если хотите выбрать Бумагу')
             your_number = int(input())
            if your_number == 1:
                  your_number = num1
            elif your_number == 2:
                  your_number = num2
            elif your_number == 3:
                  your_number = num3
            else:
                 while your_number !=1 and your_number !=2 and your_number!=3:
                           print('Так нельзя!Введите правильное число!')
                           your_number = int(input())
             print(f'Компьютер выбрал {number}')

             if number == num1 and your_number == num2:
                        print('Компьютер победил! Камень разбивает ножницы!')
             elif number == num2 and your_number == num1:
                        print('Вы победили! Камень разбивает ножницы!')
             elif number == num2 and your_number == num3:
                        print('Компьютер победил! Ножницы режут бумагу!')
             elif number == num3 and your_number == num2:
                        print('Вы победили! Ножницы режут бумагу!')
             elif number == num3 and your_number == num1:
                        print('Компьютер победил! Бумага заворачивает камень!')
             elif number == num1 and your_number == num3:
                        print('Вы победили! Бумага заворачивает камень!')
             else:
                        print('Ничья!Сыграйте повторный раунд!')
                        main()

main()
  • Вопрос задан
  • 576 просмотров
Подписаться 1 Простой Комментировать
Ответ пользователя mayton2019 К ответам на вопрос (4)
mayton2019
@mayton2019
Bigdata Engineer
Думаю что вся игровая логика описывается орграфом из трех вершин и 3 ребер.
from enum import Enum

class Game(Enum):
     STONE    = 1
     SCISSORS = 2
     PAPER    = 3

winners = { Game.STONE : Game.SCISSORS, 
            Game.SCISSORS : Game.PAPER, 
						Game.PAPER : Game.STONE }
Ответ написан
Комментировать