Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Python. Ошибка в коде. Игра - камень, ножницы бумага с использованием строк.

Давид Козлов Ученик (96), на голосовании 1 неделю назад
Помогите с кодом! Не понимаю, где ошибка. И можно, пожалуйста писать строку, где ошибка, указать, что за ошибка и перепечатать строку без ошибки (Заранее спасибо).


import random
from enum import IntEnum
class Action(IntEnum):
Rock = 0
Paper = 1
Scissors = 2
def get_user_selection():
choices = [f"{ action.name }[{action.value}]" for action in Action]
choices_str = ", ".join(choices)
selection = int(input(f"Сделайте выбор — ({choices_str}): "))
action = Action(selection)
return action
def determine_winner(user_action, computer_action):
if user_action == computer_action:
print(f"Оба пользователя выбрали {user_ action.name }. Ничья!")
elif user_action == Action.Rock:
if computer_action == Action.Scissors:
print("Камень бьет ножницы! Вы победили!")
else:
print("Бумага оборачивает камень! Вы проиграли.")
elif user_action == Action.Paper:
if computer_action == Action.Rock:
print("Бумага оборачивает камень! Вы победили!")
else:
print("Ножницы режут бумагу! Вы проиграли.")
elif user_action == Action.Scissors:
if computer_action == Action.Paper:
print("Ножницы режут бумагу! Вы победили!")
else:
print("Камень бьет ножницы! Вы проиграли.")
while True:
try:
user_action = get_user_selection()
except ValueError as e:
range_str = f"[0, {len(Action) - 1}]"
print(f"Некорректный ввод. Введите значение из промежутка {range_str}")
continue
computer_action = get_computer_selection()
determine_winner(user_action, computer_action)
play_again = input("Сыграем еще? (д/н): ")
if play_again.lower() != "д":
break
Голосование за лучший ответ
Волк Чёрный Ученик (130) 1 месяц назад
В коде есть несколько ошибок. Вот строки с ошибками и их исправления:

Ошибка: в определении класса используется , но затем класс определяется как обычный класс с помощью .

Исправление: удалить определение класса как обычного класса и оставить только .

Ошибка: в функции используется , но не определено в этой функции.

Исправление: добавить определение переменной перед циклом и использовать в конце функции.

Ошибка: в функции используется , но это сравнение не имеет смысла.

Исправление: заменить на .

Ошибка: в цикле после используется , но функция не определена.

Исправление: добавить определение функции , которая будет генерировать случайное действие компьютера.
Давид КозловУченик (96) 1 месяц назад
а можно, пожалуйста указать номер строк и перепечатать все верно?)
Волк Чёрный Ученик (130) Давид Козлов, какой текст ошибки?
Волк ЧёрныйУченик (130) 1 месяц назад
лайкни мой коммент тогда
Давид Козлов Ученик (96) Волк Чёрный, ок
Давид КозловУченик (96) 1 месяц назад
готово
Похожие вопросы