Тестирование центра компетенций

  • камень – 0;
  • Спок – 1;
  • бумага – 2;
  • ящерица – 3;
  • ножницы – 4;

Инструкция по выполнению задания

  1. Реализуйте вспомогательную функцию name_to_number(name), которая преобразует строку name в число в диапазоне от 0 до 4, как описано выше. Эта функция должна использовать конструкцию if/elif/else. Используйте условия вида name == 'paper', чтобы различать случаи. Для упрощения отладки добавьте в конце условного оператора раздел else для случая, когда name не соответствует ни одной из правильных входных строк, и распечатайте сообщение об ошибке. Функцию name_to_number() можно проверить, используя шаблон name_to_number_test.py.
  2.  Реализуйте вторую вспомогательную функцию, number_to_name(number), которая преобразует число в диапазоне от 0 до 4 в строку с соответствующим названием. В этой функции тоже можно использовать конструкцию if/elif/else c печатью сообщения об ошибке в разделе else. Проверьте эту функцию с помощью шаблона number_to_name_test.py.
  3. Реализуйте первую часть основной функции rpsls(player_choice). Распечатайте пустую строку (чтобы разделить последовательные игры), затем – строку с сообщением о выборе игрока (переданном в параметре player_choice). Затем вычислите значение player_number, соответствующее выбору игрока, вызвав функцию name_to_number() с аргументом player_choice. Проверьте, что первая часть функции работает с помощью вызовов в конце шаблона.
  4. Реализуйте вторую часть функции rpsls(), которая генерирует выбор компьютера и печатает соответствующее сообщение. Используйте функцию random.randrange(), чтобы сгенерировать случайное значение comp_number между 0 и 4, которое соответствует выбору компьютера. Поэкспериментируйте с randrange в интерактивном режиме, чтобы лучше понять, как она работает, и понять, как генерировать числа в правильном диапазоне. После этого вычислите строку comp_name, соответствующую выбору компьютера, используя функцию number_to_name(). Напечатайте соответствующее сообщение. Проверьте, что добавленная часть функции работает.
  5. Реализуйте последнюю часть функции rpsls(), которая определяет победителя и печатает сообщение. Для этого вычислите разницу между comp_number и player_number по модулю 5. Затем напишите оператор if/elif/else, который проверяет различные возможные значения разности и печатает соответствующее сообщение о победителе.
Player chooses rock Computer chooses scissors Player wins! Player chooses Spock Computer chooses lizard Computer wins! Player chooses paper Computer chooses lizard Computer wins! Player chooses lizard Computer chooses scissors Computer wins! Player chooses scissors Computer chooses Spock Computer wins!

Замечание №1

Замечание №2

  1. Использование print там, где нужно использовать return. Вспомогательные функции name_to_number() и number_to_name()  должны  использовать оператор return, так как вы хотите, чтобы они вычислили результат и вернули его вам. В свою очередь функция rpsls() не должна использовать return - она как раз должна печатать результат игры.
  2. Использование маленькой s в имени Spock. Помните, что "spock" и  "Spock" - это разные строки.
  3. Строка "0" и число 0 - это не одно и то же, поэтому условные выражения number == 0 и number == "0" означают разные вещи.
  4. Тело функции должно быть сдвинуто вправо относительно заголовка. Помните, что Питон использует сдвиг, чтобы отличать тело функции от прочего кода.

Замечание №3

Замечание №4

  • вызов randrange(stop) даст число из диапазона от 0 до stop-1 включительно;
  • randrange(start,stop) – число из диапазона от start до stop-1 включительно;
  • randrange(start,stop,step) – числа из диапазона start до stop-1 включительно с шагом step;
  • если stop<start и step отрицателен, то числа в диапазоне идут в сторону уменьшения.
  • randrange(10) – случайное число из [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  • randrange(1,11) – случайное число из [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  • randrange(0,10,3) – случайное число из [0, 3, 6, 9]
  • randrange(0,-10,-1) – случайное число из [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
import random
print(random.randrange(10), random.randrange(10), random.randrange(10)) >>> import random
>>> print(random.randrange(10),random.randrange(1,11),random.randrange(0,10,3))
3 9 0
>>> print(random.randrange(10),random.randrange(1,11),random.randrange(0,10,3))
0 2 6
>>> print(random.randrange(10),random.randrange(1,11),random.randrange(0,10,3))
7 8 0
>>> print(random.randrange(10),random.randrange(1,11),random.randrange(0,10,3))
2 7 9