Предмет: Информатика, автор: wolerdm

Помогите пожалуйста на python обязательно как написано
написание компьютерной игры Камень-ножницы-бумага

Задание: Пользователю на выбор предлагается ввести камень, ножницы или бумагу. Противником пользователя является компьютер. Поэтому далее вам необходимо сгенерировать рандомный выбор компьютера - так же камень, ножницы или бумагу. После этого в соответствии с известными правилами игры определяется победитель, о чем выводится сообщение в консоль.

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

Подсказки:
1. Бесконечную игру можно реализовать с помощью бесконечного цикла вида
while True:
Из него можно выйти с помощью простой команды
break

2. Для реализации рандомного выбора компьютера вам понадобятся функции из особого модуля. Чтобы их подключить, в начале программы необходимо написать
import random

Выбор рандомного камня-ножниц-бумаги можно реализовать с помощью двух функций из этого модуля - random.choice(list) и random.uniform(start,end). Они делают немного разные вещи, но обе подойдут для нашего случай - тут уже на ваш вкус. Кратко объясним их смысл:

✅random.choice(list) - возвращает случайное значение из списка list.
✅random.uniform(start,end) - возвращает случайное дробное число в диапазоне от start до end

Ответы

Автор ответа: Vovchik04
1

import random

while True:

  try:

      t = int(

          input('Выберите ваш ход:\n1 - Камень\n2 - Ножницы\n3 - Бумага\n\n')

          )

      if t not in (1, 2, 3):

          raise ValueError

  except:

      print('\033[1;31mНеверный ввод\033[0m')

      continue

  n = random.choice([

      'Камень',

      'Ножницы',

      'Бумага'

  ])

  if (t == 1 and n == 'Бумага') or \

      (t == 2 and n == 'Камень') or \

          (t == 3 and n == 'Ножницы'):

      print(f'Ход компьютера: \033[1;33m{n}\n\033[1;31mВы проиграли :(\033[0m')

  else:

      print(f'Ход компьютера: \033[1;33m{n}\n\033[1;32mВы выиграли!\033[0m')

  while True:

      again = input('Хотите сыграть ещё? (Да/Нет)\n')

      if again.lower() not in ('да', 'нет'):

          print('\033[1;31mНеверный ввод\033[0m')

      else:

          break

  if again.lower() == 'нет':

      print('\033[1;31mИгра завершена.\033[0m')

      break


wolerdm: Можешь объяснить, что такое try и raise в начале программы?
mathgenius: это конструкции исключений, стараюсь избегать их при решении школьных задачек, ибо о них знают не все...
mathgenius: И вот этот вот "лес" if-ов отнюдь не украшает программу, лучше в этой задачке применять словарь
Похожие вопросы
Предмет: Литература, автор: Аноним