Python纸剪刀蜥蜴spock,Python

时间:2017-03-01 21:30:41

标签: python

我正在为我的班级用Python创建一个石头剪刀蜥蜴spock游戏,我试图找出为什么我做出的任何选择我总是赢,即使我设置所有我的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()

`

2 个答案:

答案 0 :(得分:2)

原因是你错过了所有&#34; if&#34;条件。

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

答案 1 :(得分:1)

总结一下你应该注意的所有事情:

  1. 布尔条件 - 结果随条件内的括号而变化。

    if True or (True and False) - &gt;这基本上首先计算True and False部分(就像常规数学一样)然后你有True or False计算结果为True。

    if True or True and False - &gt;这基本上首先计算True or True部分(比如常规数学)然后你有True and False评估为False - 因为你没有使用括号。

  2. 不要在同一个函数中调用函数 - 这称为recursion,而不是您需要的函数。使用while循环,只要 - 你没有得到正确的选择输入(while choice!='n' and choice!='y':)。

  3. 您的项目选择 - 用户做出的选择并没有真正改变游戏的流程。如果用户输入no,游戏也会启动。您应该在instructions函数中添加退出语句。