Как исправить оператор if для работы со строками?
Я должен сделать игру "Рок-бумага-ножницы", но оператор if не будет работать, когда я пытаюсь преобразовать ввод в строку с помощью str(.....)
Я использовал здесь целые числа, чтобы убедиться, что код работает нормально, но он не будет работать со строками.
У меня также возникают проблемы с подчеркиванием ввода при запуске этого кода, как это сделать?
player_1 = str(input("Enter Player 1 choice (R, P, or S): "))
player_2 = str(input("Enter Player 2 choice (R, P, or S): "))
if player_1 == S and player_2 == S:
print("A tie!")
elif player_1 == R and player_2 == R:
print("A tie!")
elif player_1 == P and player_2 == P:
print("A tie!")
elif player_1 == R and player_2 == 2:
print("Rock beats scissors! Player 1 wins.")
elif player_1 == S and player_2 == R:
print("Rock beats scissors! Player 2 wins.")
elif player_1 == 9 and player_2 == R:
print("Paper beats rock! Player 1 wins.")
elif player_1 == R and player_2 == P:
print("Paper beats rock! Player 2 wins.")
elif player_1 == S and player_2 == P:
print("Scissors beat paper! player 1 wins.")
elif player_1 == P and player_2 == S:
print("Scissors beat paper! player 2 wins.")
Я получаю эту ошибку каждый раз, когда я запускаю код:
Enter Player 1 choice (R, P, or S): S
Enter Player 2 choice (R, P, or S): S
Traceback (most recent call last):
File "D:\CP 104\**********\src\t03.py", line 16, in <module>
if player_1 == S and player_2 == S:
NameError: name 'S' is not defined
Что я делаю неправильно?
1 ответ
Для каждого из ваших случаев вы проверяете значение переменной по строке. Строка для каждого из них может быть "R", "S" или "P", и в ваших операторах if вы должны написать их как таковые
например
if player_1 == "S" and player_2 == "S":
и так далее.
и, как сказал @jedwards, вы используете python3, а input() возвращает строку, поэтому обертка str() в первой и второй строках не нужна
ты можешь просто сказать
player_1 = input("Enter Player 1 choice (R, P, or S): ")
player_2 = input("Enter Player 1 choice (R, P, or S): ")