【问题标题】:How do I fix the if statements to work with strings?如何修复 if 语句以使用字符串?
【发布时间】:2018-10-04 21:22:02
【问题描述】:

我必须制作一个石头剪刀布游戏,但是当我尝试使用 str(.....) 将输入转换为字符串时,if 语句不起作用

我在这里使用整数来确保代码正常工作,但它不能与字符串一起工作。

当我运行此代码时,我也无法在输入下划线,如何做到这一点?

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

我做错了什么?

【问题讨论】:

  • if 条件中的字符串周围缺少引号。您的if 语句需要是:if player_1 == 'S' and player_2 == 'S'
  • 如果您实际上使用的是 Python 3,则不需要 str(input(...)) 中的 str
  • 替换 R P S 9 2'R' 'P' 'S' '9''9''9' 和你很好>
  • 下划线是一个单独的问题,与您的大部分代码无关。如果您想获得帮助,请遵循发布指南:首先查看如何下划线,进行尝试,然后然后适当地寻求帮助——如果它不起作用。

标签: python python-3.x if-statement undefined-variable


【解决方案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): ")

【讨论】:

  • 感谢您的帮助以及如何在运行程序时使输入值带有下划线。
  • 我不确定你所说的下划线是什么意思
  • 例如:Enter Player 1 选择(R, P, or S): R 但在pydev中运行程序时分号后面的R有下划线
  • 这只是个人问题,取决于您使用的环境
猜你喜欢
  • 1970-01-01
  • 2015-01-26
  • 1970-01-01
  • 2019-02-26
  • 1970-01-01
  • 2014-06-18
  • 2018-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多