我正在尝试为“石头剪纸”编写一个简单的程序,它只是一个初级代码,但是我面临着一个变量的NameError
,这个变量是我定义的,并且使用这个变量作为if
的条件。我使用的是Python3。我在这里发布了我编写的程序:
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
我没有收到您在运行代码时所说的错误,但是我确实收到了其他错误:
应该是
你还有
print(player2 + " beats " + player1)
。+
用于字符串串联,即将一个字符串粘贴到另一个字符串的末尾。但是,player1
和player2
不是字符串。您需要使用,
而不是+
,或者执行str(player1)
和str(player2)
。你知道吗对您提供的代码进行这些更改时,我的输出只是垃圾邮件
x beats y
,这是由于您的代码逻辑中的错误造成的。你知道吗player: type
只是一个类型提示。它实际上不做任何事情,它是用来帮助代码分析的可读性和外部工具。它也不会像静态语言那样声明变量。你知道吗在python中,要声明变量,必须给它赋值。所以呢
使用类型提示和值赋值。你知道吗
注意:您想要的是
player1==1
,而不是player1 is 1
。is
检查它们是否是同一个对象,而不是是否相等。你知道吗假设您试图将输入值赋给这些变量,请使用赋值运算符。你知道吗
布朗尼点数:
正如在另一个答案中指出的,print语句中也有bug,您正在尝试连接int和string。做一些像
print(str(player1) + " beats " + str(player2))
也许你需要在循环中获取输入。
工作代码/演示:https://repl.it/repls/QuintessentialWittyAbilities
相关问题 更多 >
编程相关推荐