if / elif块中的SyntaxError

时间:2016-07-07 10:01:02

标签: python

所以我尝试用Python 3和随机AI制作一个基本的Rock Paper Scissors游戏。

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)

现在我就是这个错误:

  

追踪(最近一次通话):     文件“python”,第16行       elif UserInput ==“退出”:          ^   SyntaxError:语法无效

3 个答案:

答案 0 :(得分:2)

进行了一些更改,缩进了打印件,还写了关闭支架进行打印,将Quit移动到单独的if并添加了对Rock,Paper,Scissors和Quit中的大写字母的检查。

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)

答案 1 :(得分: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

答案 2 :(得分:0)

您需要在代码中进行2次更改。

首先,改变

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

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

其次,将所有elif设为if

休息一切都很好