python - 在“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
解决方案
假设您尝试将输入值分配给这些变量,请使用赋值运算符。
player1 = int(input("Player 1 plays "))
player2 = int(input("Player 2 plays "))
印象分 :
正如在另一个答案中指出的那样,print 语句中也存在错误,您正在尝试连接 int 和字符串。做类似的事情
print(str(player1) + " beats " + str(player2))
也许你需要在循环内输入。
推荐阅读
- nuget-package - 如何找出 Nuget 包中的主要问题
- java - Firebase Storage StorageTask Class 参数化类“StorageTask”的原始使用
- java - java android onResponse 和 onFailure 不起作用
- directory - HTML 或 javascript 获取 %appdata% 文件夹路径
- drupal - Drupal 8子菜单未扩展
- angular - 从“ngx-document-scanner”导入导入 {OpenCVConfig} 时出错;import {NgxDocumentScannerModule} from 'ngx-document-scanner';导入时
- reactjs - React 渲染周期和 React 组件生命周期有什么关系?
- java - 我可以在另一个模块中使用 WebMvcConfigurer 的实例吗?
- python - 驯服 shlex.split() 行为
- sql - Postgres 数组匹配多个元素