Python 石头剪纸蜥蜴斯波克,巨蟒

Python 石头剪纸蜥蜴斯波克,巨蟒,python,Python,我正在用Python为我的班级制作一个石头剪刀蜥蜴斯波克游戏,我试图弄明白为什么无论我做什么选择,我总是赢,即使我把所有的if语句都设置正确` import random def instructions(): play = input("Would you like to play Rock, Paper, Scissors, Lizard, Spock(y/n): ").lower() if play == "y": print("1.Rock")

我正在用Python为我的班级制作一个石头剪刀蜥蜴斯波克游戏,我试图弄明白为什么无论我做什么选择,我总是赢,即使我把所有的if语句都设置正确`

import random

def instructions():
    play = input("Would you like to play Rock, Paper, Scissors, Lizard, Spock(y/n): ").lower()
    if play == "y":
        print("1.Rock")
        print("2.Paper")
        print("3.Scissors")
        print("4.Lizard")
        print("5.Spock")

    elif play != "n":
        print("error has accured please type y for yes or n for no:")
        instructions()




def getPlayerChoice():
    choice = int(input("What is your choice user?: "))
    if choice > 5:
        print("Invalid number please try again....")
        getPlayerChoice()
    elif choice < 1:
        print("Invalid number please try again....")
        getPlayerChoice()
    elif choice == 1:
        print("You picked Rock")
    elif choice == 2:
        print("You picked Paper")
    elif choice == 3:
        print("You picked Scissors")
    elif choice == 4:
        print("You picked Lizard")
    elif choice == 5:
        print("You picked Spock")
    return choice

def getCPUChoice():
    choice = random.randint(1,5)
    if choice == 1:
        print("CPU picked Rock")
    elif choice == 2:
        print("CPU picked Paper")
    elif choice == 3:
        print("CPU picked Scissors")
    elif choice == 4:
        print("CPU picked Lizard")
    elif choice == 5:
        print("CPU picked Spock")
    return choice

def winner(playerChoice, CPUChoice, playerWins, CPUWins, ties):
    if playerChoice == 1 and CPUChoice == 3 or CPUChoice == 4:
        print("Player wins.")
        playerWins = playerWins.append(1) 
    elif playerChoice == 2 and CPUChoice == 1 or CPUChoice == 5:
        print("Player wins.")
        playerWins = playerWins.append(1) 
    elif playerChoice == 3 and CPUChoice == 2 or CPUChoice == 4:
        print("Player wins.")
        playerWins = playerWins.append(1) 
    elif playerChoice == 4 and CPUChoice == 2 or CPUChoice == 5:
        print("Player wins.")
        playerWins = playerWins.append(1)
    elif playerChoice == 5 and CPUChoice == 1 or CPUChoice == 3:
        print("Player wins.")
        playerWins = playerWins.append(1)
    elif playerChoice == CPUChoice:
        print("Tie")
        ties = ties.append(1)
    else:
        print("CPU won")
        CPUWins = CPUWins.append(1) 
    return

def gameTotal(playerWins, CPUWins, ties):
    playerWins = sum(playerWins)
    CPUWins = sum(CPUWins)
    ties = sum(ties)
    print("Player final score: ", playerWins)
    print("CPU final Score: ", CPUWins)
    print("Total ties: ",ties)

def main():
    playerChoice = 0
    playerWins = []
    CPUChoice = 0
    CPUWins = []
    ties = []
    finalPlayerWins = 0
    finalCPUWins = 0
    finalTies = 0
    Continue = 'y'
    instructions()
    while Continue == 'y':
        playerChoice = getPlayerChoice()
        CPUChoice = getCPUChoice()
        winner(playerChoice,CPUChoice,playerWins, CPUWins, ties)
        Continue = input("Would you like to play again (y/n):").lower()
        if Continue == 'n':
            print("Printing final scores.")
            break
    gameTotal(playerWins, CPUWins, ties)


main()
随机导入
def指令():
play=input(“你想玩石头、布、剪刀、蜥蜴、斯波克(y/n):”)。lower()
如果播放=“y”:
印刷品(“1.摇滚乐”)
打印(“2.纸张”)
印刷品(“3.剪刀”)
印刷品(“4.蜥蜴”)
打印(“5.Spock”)
埃利夫播放!=“n”:
打印(“出现错误,请键入y表示是,或键入n表示否:”)
指示()
def getPlayerChoice():
choice=int(输入(“您选择的用户是什么?:”)
如果选择>5:
打印(“无效号码,请重试…”)
getPlayerChoice()
elif选项<1:
打印(“无效号码,请重试…”)
getPlayerChoice()
elif选项==1:
打印(“你选了石头”)
elif选项==2:
打印(“您选择了纸张”)
elif选项==3:
打印(“你挑了剪刀”)
elif选项==4:
打印(“你选了蜥蜴”)
elif选项==5:
打印(“你选了斯波克”)
返回选择
def getCPUChoice():
choice=random.randint(1,5)
如果选项==1:
打印(“CPU拾取的岩石”)
elif选项==2:
打印(“CPU拾取的纸张”)
elif选项==3:
打印(“CPU拾取剪刀”)
elif选项==4:
打印(“CPU拾取的蜥蜴”)
elif选项==5:
打印(“CPU拾取的Spock”)
返回选择
def优胜者(选手选择、CPUChoice、选手、CPUWins、平局):
如果playerChoice==1且CPUChoice==3或CPUChoice==4:
打印(“玩家获胜”)
playerWins=playerWins.append(1)
elif playerChoice==2和CPUChoice==1或CPUChoice==5:
打印(“玩家获胜”)
playerWins=playerWins.append(1)
elif playerChoice==3和CPUChoice==2或CPUChoice==4:
打印(“玩家获胜”)
playerWins=playerWins.append(1)
elif playerChoice==4和CPUChoice==2或CPUChoice==5:
打印(“玩家获胜”)
playerWins=playerWins.append(1)
elif playerChoice==5和CPUChoice==1或CPUChoice==3:
打印(“玩家获胜”)
playerWins=playerWins.append(1)
elif playerChoice==CPUChoice:
打印(“领带”)
ties=ties.append(1)
其他:
打印(“CPU赢得”)
CPUWins=CPUWins.append(1)
返回
def gameTotal(球员、球员、领结):
playerWins=总和(playerWins)
CPUWins=总和(CPUWins)
ties=总和(ties)
打印(“球员最终得分:”,球员)
打印(“CPU最终分数:”,CPUWins)
打印(“总领带:”,领带)
def main():
playerChoice=0
playerWins=[]
CPUChoice=0
CPUWins=[]
领带=[]
finalPlayerWins=0
finalCPUWins=0
最终值=0
Continue='y'
指示()
而Continue==“y”:
playerChoice=getPlayerChoice()
CPUChoice=getCPUChoice()
获胜者(选手选择、CPUChoice、选手、CPUWins、平局)
Continue=input(“您想再次播放吗(y/n):”)。lower()
如果Continue==“n”:
打印(“打印最终分数”)
打破
游戏总数(玩家、玩家、平手)
main()

`

原因是所有“如果”条件都缺少括号

if False and True or True # =True
if False and (True or False) # =False 

原因是所有“if”条件都缺少括号

if False and True or True # =True
if False and (True or False) # =False 

总结一下您应该注意的所有事项:

  • 布尔条件-结果随条件内的括号而变化

    如果为真或(真与假)
    -->这基本上是先计算
    真与假
    部分(就像在普通数学中一样),然后计算出
    真或假
    ,计算结果为真

    如果为真或真和假
    -->这基本上是先计算
    真或真
    部分(就像在普通数学中一样),然后计算出
    真和假
    ,计算结果为假-,因为不使用括号。

  • 不要在同一个函数中调用函数-这称为
    递归
    ,它不是为了满足您的需要。使用
    while
    循环,只要就可以运行,也就是说,-您没有得到正确的选项输入(
    while choice!='n'和choice!='y':

  • 您的指令选择-用户的选择不会真正改变游戏流程。如果用户输入
    ,游戏也将开始。您应该在
    说明
    函数中添加退出语句


  • 总结一下您应该注意的所有事项:

  • 布尔条件-结果随条件内的括号而变化

    如果为真或(真与假)
    -->这基本上是先计算
    真与假
    部分(就像在普通数学中一样),然后计算出
    真或假
    ,计算结果为真

    如果为真或真和假
    -->这基本上是先计算
    真或真
    部分(就像在普通数学中一样),然后计算出
    真和假
    ,计算结果为假-,因为不使用括号。

  • 不要在同一个函数中调用函数-这称为
    递归
    ,它不是为了满足您的需要。使用
    while
    循环,只要就可以运行,也就是说,-您没有得到正确的选项输入(
    while choice!='n'和choice!='y':

  • 您的指令选择-用户的选择不会真正改变游戏流程。如果用户输入
    ,游戏也将开始。您应该在
    说明中添加退出语句