Python语法错误第17行

Python语法错误第17行,python,Python,我一直在为我的班级编写一段简单的代码,我试着运行了好几次,甚至我的老师也不知道为什么它不起作用。我现在从第17行开始出现语法错误。欢迎任何帮助 00000001 import random 00000002 00000003 def main(): 00000004 print("Intro message.") 00000005 00000006 play_again = "Y" 00000007 00000008 while play_again ==

我一直在为我的班级编写一段简单的代码,我试着运行了好几次,甚至我的老师也不知道为什么它不起作用。我现在从第17行开始出现语法错误。欢迎任何帮助

00000001 import random
00000002 
00000003 def main():
00000004     print("Intro message.")
00000005 
00000006     play_again = "Y"
00000007     
00000008     while play_again == "Y" or play_again == "y":
00000009         play_game()
00000010     
00000011     play_again = input("Do you want to play again:")
00000012     
00000013     
00000014 def play_game():
00000015     computer_choice = get_computer_choice()
00000016     player_choice = get_player_choice()
00000017     if computer_choice = 1:
00000018         print("Computer has chosen rock.")
00000019     elif computer_choice = 2:
00000020         print("Computer has chosen paper.")
00000021     else computer_choice = 3:
00000022         print("Computer has chosen scissors.")
00000023         winner = determine_the_winner(computer_choice,player_choice)
00000024         return winner
00000025         
00000026 def computer_choice():
00000027     choice = random.randint(1,3)
00000028     return choice
00000029     
00000030 def get_player_choice():
00000031     choice = input("enter 1,2, or 3")
00000032     while choice not = 1,2,3
00000033     print("error message")
00000034     choice = input("enter 1,2, or 3")
00000035     return choice    
00000036     
00000037 def determine_the_winner(computer_choice, player_choice):
00000038     if computer_choice==player_choice:
00000039         print("Result is a tie.")
00000040     elif computer_choice == 1 and player_choice == 3 or computer_choice ==2 and player_choice =1 or computer_choice ==3 and player_choice ==2:
00000041         print("You win.")
00000042             
00000043 
00000044 main()
您需要使用==进行比较,而不是使用=

=用于创建变量,如您所用


例如,如果computer\u choice=1应该是如果computer\u choice=1,您会遇到一些问题。正如Haidro所提到的,您使用的是=赋值,在这里您应该使用==等式检查,但您还存在进一步的问题

让我们从以下内容开始:

while choice not = 1,2,3
这是你的选择方法。此行不是有效的Python语法,您可能需要:

while choice not in ['1','2','3']:
您还应该正确缩进循环

在这一行的play\u game方法computer\u choice=get\u computer\u choice中,您正在调用一个方法get\u computer\u choice,其中您的方法实际上被称为computer\u choice

在下面的同一个方法中,您调用player\u choice=get\u player\u choice,但此方法是在定义play\u game之后定义的


此外,如果计算机选择3,您只需检查获胜者并返回结果。除了else条件之外的返回语句,您还需要移动此行winner=确定\u winner计算机\u选项、玩家\u选项-换句话说,您需要减少行的缩进。

您好Burhan,如果您在答案中添加一个简短的堆栈跟踪引用,我将向上投票。我敢打赌,OP有一个堆栈跟踪,导致您正确识别的错误源…@Berhuan您将使用:-if computer_choice=1:在Python 3.2.2上测试得到一个语法错误。并不是说你的建议在任何方面都是不正确的。我在这里吹毛求疵,但是对于while循环,也许使用字符串/字符比较可能比使用字符列表更容易?我的意思是,虽然选择不在1,2,3中可能更容易阅读,而且稍微轻一点?@mogambo不,因为这样会是有效的输入。我不是python专家,但single=不一定是==?@BurhanKhalid嗯,如果它是有效的,为什么你会否决我?此外,这肯定是语法错误的原因。你的答案只是说OP应该做什么,但这不是问题所在。我认为你不理解语法的定义