Python Каменная бумага Scisssors Присвоение строки случайной переменной - PullRequest
0 голосов
/ 26 февраля 2020

Я пишу программу python камень, бумага, ножницы, ящерица, спок для класса. Выбор компьютеров - случайное целое число, и пользователю предлагается ввести число. Затем он отображает результаты и говорит вам, кто победил. Программа работает правильно, за исключением оператора печати. Я пытаюсь заставить программу показывать выбор компьютера и пользователя в качестве слова вместо числа, и я не уверен в лучшем способе go об этом. В настоящее время он печатает номер в качестве ответа. Любые предложения?

*computer = random.randint (0, 4)
user = eval(input("Enter a number between 0 and 4: O for scissors, 1 for paper, 2 for rock, 3 for lizard, 4 for Spock"))* 

*if computer == user:
    print("You tied, you both picked", user)
elif computer == 0 and user == 1:
    print("The computer picked ", computer, " you picked ", user, ". Computer wins!")*

Компьютер выбрал 4 вы выбрали 3. Вы выиграли!

Я бы хотел напечатать как

Компьютер выбрал ножницы, которые вы выбрали камень. Вы выиграли!

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Вы можете сохранить небольшой список, содержащий параметры, подобные следующим:

options = ['scissors', 'paper', 'rock', 'lizard', 'Spock']

Затем просто измените свой оператор печати на

print("The computer picked ", options[computer], " you picked ", options[user], ". Computer wins!")
0 голосов
/ 26 февраля 2020

Вы можете использовать список, как упомянуто в другом ответе, или диктовку, если вы хотите использовать другой тип ключа.

options = {
    'p': 'paper',
    'sc': 'scissor',
    'r': 'rock',
    'l': 'lizard',
    'sp': 'spock'
}

И с этим вы можете динамически запрашивать ключ у пользователя:

player = input(f'pick one {options.keys} for {options.values}')

Чтобы улучшить читабельность вашего кода, я рекомендую использовать fstring:

print(f'computer play {options[computer]} and the player play {options[player]}')
...