2016-07-07 68 views
-9

所以我嘗試用Python 3和隨機AI製作基本的Rock Paper Scissors遊戲。if/elif block中的SyntaxError

import random 
x=0 
InvalidInput="Invalid Input, please use a capital letter at the start of your input" 
while x==0: 
    AI=random.randint(1,3) 
    UserInput=input("Rock, Paper, or Scissors?") 
    if AI==1: 
     AI="Rock" 
    elif AI==2: 
     AI="Paper" 
    elif AI==3: 
     AI="Scissors" 
    print("You chose {}, Computer chose {}".format(UserInput, AI) 

    #Quit 
    elif UserInput=="Quit": 
     break 
    #Tie 
    elif AI==UserInput: 
     print("Its a tie!") 

    #AI chooses Rock 
    elif AI=="Rock": 
     if UserInput=="Paper": 
      print("You Win!") 
     elif UserInput=="Scissors": 
      print("You Lose") 
     else: 
      print(InvalidInput) 
    #AI chooses Paper 
    elif AI=="Paper": 
     if UserInput=="Scissors": 
      print("You Win!") 
     elif UserInput=="Rock": 
      print("You Lose") 
     else: 
      print(InvalidInput) 

    #AI chooses Scissors 
    elif AI=="Scissors": 
     if UserInput=="Rock": 
      print("You Win!") 
     elif UserInput=="Paper": 
      print("You Lose") 
     else: 
      print(InvalidInput) 

現在我認爲是錯誤:

Traceback (most recent call last): File "python", line 16 elif UserInput=="Quit": ^ SyntaxError: invalid syntax

+0

它是一個SyntaxError,不奇怪的錯誤 –

+0

我想你想'if'不'elif' – AndyG

+0

或正確縮進'print'行成'elif'支以上。 –

回答

1

的問題主要是你的縮進:

UserInput=input("Rock, Paper, or Scissors?") 
if AI==1: 
    AI="Rock" 
elif AI==2: 
    AI="Paper" 
elif AI==3: 
    AI="Scissors" 
print("You chose {}, Computer chose {}".format(UserInput, AI) 

立即上面的行告訴Python的if...elif塊已經結束,這是因爲縮進級別降低。所以這個(緊接在下面)成爲elif而沒有if連接到它。

#Quit 
elif UserInput=="Quit": 
    break 

將其更改爲:

#Quit 
if UserInput=="Quit": 
    break 
+0

是的,我只是做了,但仍然沒有工作 – NoGravityPanda

+0

它現在做什麼? – Will

+0

他是對的,錯誤不會消失 – dazzieta

0

你需要做在你的代碼2度的變化。

首先,更改

print("You chose {}, Computer chose {}".format(UserInput, AI) 

print("You chose {}, Computer chose {}".format(UserInput, AI)) 

其次,使所有elifif

其餘全部是精

2

做了一些改變,縮進打印,也爲打印寫了關閉括號,搬到退出分離e如果並添加了對岩石,紙張,剪刀和退出的大寫字母的檢查。

import random 
x=0 
InvalidInput="Invalid Input, please use a capital letter at the start of your input" 
while x==0: 
    AI=random.randint(1,3) 
    if AI==1: 
     AI="Rock" 
    elif AI==2: 
     AI="Paper" 
    elif AI==3: 
     AI="Scissors" 

    UserInput=input("Rock, Paper, or Scissors?") 
    if UserInput[0] not in 'RPSQ': 
     print(InvalidInput) 
     continue 
    else: 
     #Quit 
     if UserInput=="Quit": 
      break 
     print("You chose {}, Computer chose {}".format(UserInput, AI)) 
     #Tie 
     if AI==UserInput: 
      print("Its a tie!") 

     #AI chooses Rock 
     elif AI=="Rock": 
      if UserInput=="Paper": 
       print("You Win!") 
      elif UserInput=="Scissors": 
       print("You Lose") 
      else: 
       print(InvalidInput) 
     #AI chooses Paper 
     elif AI=="Paper": 
      if UserInput=="Scissors": 
       print("You Win!") 
      elif UserInput=="Rock": 
       print("You Lose") 
      else: 
       print(InvalidInput) 

     #AI chooses Scissors 
     elif AI=="Scissors": 
      if UserInput=="Rock": 
       print("You Win!") 
      elif UserInput=="Paper": 
       print("You Lose") 
      else: 
       print(InvalidInput) 
+0

謝謝,但我不明白'RPSQ'在第7行 – NoGravityPanda

+0

用急速書寫我們正在檢查用戶輸入的第一個字母是'R'ock還是'P'aper'或'S'cissors'或'Q'uit。由於'RSPQ'是可迭代的(字符串是可迭代的) for循環會將UserInput的第一個字符與所有RSPQ進行比較,如果失敗,則應顯示InvalidInput消息。 – anukalp

+0

好的,謝謝,對不起我的愚蠢 – NoGravityPanda