首页 > 解决方案 > 在“if”条件下使用变量时的 Python 3 NameError

问题描述

我正在尝试为“石头纸剪刀”制作一个简单的程序,它只是一个初学者级别的代码,但我面临NameError一个我定义的变量并将该变量用于if. 我正在使用 Python 3。我在此处发布我编写的程序:

player1count = 0
player2count = 0
print("Make a Choice: \n1.Stone\n2.Paper\n3.Scissor")
player1 : int(input("Player 1 plays "))
player2 : int(input("Player 2 plays "))
while (True):
    if player1 is 1 and player2 is 3 or player1 is 2 and player2 is 1 or player1 is 3 and player2 is 2:
        player1count += 1
        print(player1+" beats "+player2)
    elif player2 == 1 and player1 == 3 or player2 == 2 and player1 == 1 or player2 == 3 and player1 == 2:
        player2count += 1
        print(player2 + " beats " + player1)
    else:
        continue
    if(player1count == 5):
        print("Player 1 Wins!")
        break
    elif(player2count == 5):
        print("Player 2 Wins!")
    else:
        continue

这是我得到的错误:

Make a Choice: 
1.Stone
2.Paper
3.Scissor
Player 1 plays 1
Player 2 plays 3
Traceback (most recent call last):
  File "G:/Study/Python/StonePaperScissor.py", line 7, in <module>
    if player1 is 1 and player2 is 3 or player1 is 2 and player2 is 1 or player1 is 3 and player2 is 2:
NameError: name 'player1' is not defined

Process finished with exit code 1

标签: pythonpython-3.x

解决方案


假设您尝试将输入值分配给这些变量,请使用赋值运算符。

player1 = int(input("Player 1 plays "))
player2 = int(input("Player 2 plays "))

印象分 :

  1. 正如在另一个答案中指出的那样,print 语句中也存在错误,您正在尝试连接 int 和字符串。做类似的事情print(str(player1) + " beats " + str(player2))

  2. 也许你需要在循环内输入。

工作代码/演示:https ://repl.it/repls/QuintessentialWittyAbilities


推荐阅读