Python函数没有运行?

时间:2017-12-20 23:17:01

标签: python

这是我第一次来这里,我有点恐慌。我有一个用Python编写Rock,Paper,Scissors代码的任务。 (我使用Python 3.1)并且由于某种原因该函数没有运行......?

以下是代码:

hscore = 0
cscore = 0
tries = 0

#computer choice
rock = ("rock")
paper = ("paper")
scissors = ("scissors")
rps = (rock, paper, scissors)
cchoice = random.choice(rps)
choice = input("\nWhat do you choose? <rock, paper, scissors>: ")
tries +=1

def humanfunction():
    if choice == "rock":
        if cchoice == scissors:
            print("Human wins this round.")
            hscore +=1
    if choice == "scissors":
        if cchoice == paper:
            print("Human wins this round.")
            hscore +=1
    if choice == "paper":
        if cchoice == rock:
            print("Human wins this round.")
            hscore +=1
    if cchoice == choice:
        print("Tie.")
def compfunction():
    if cchoice == scissors:
        if choice == "paper":
            print("Computer wins this round.")
            cscore +=1
    if cchoice == rock:
        if choice == "scissors":
            print("Computer wins this round.")
            cscore +=1
    if cchoice == paper:
        if choice == "rock":
            print("Computer wins this rounud.")
            cscore +=1
    if cchoice == choice:
        print("Tie.")

def choose():
    tries = 0
    while 0 == 0:
        choice = input("\nWhat do you choose? <rock, paper, scissors>: ")
        tries +=1
        print("\nHuman choice: ", choice)
        print("Computer choice: ", cchoice)
        print("Finished game number", tries)
        if tries == 10:
            print("Limit reached!")
            break
humanfunction()
compfunction()
choose()

我已经尝试解决这个问题已经好几天了,出于某些原因,当我运行代码时,它并没有显示出谁赢了。帮助将不胜感激&lt; 3

编辑: 这是我运行代码时得到的结果: output

该程序实际上应该显示: output2

1 个答案:

答案 0 :(得分:3)

这是我对你的代码的看法。

它未运行的主要原因是您的cscore变量在初始化之前被引用,因为您已将cscore设置为global变量,但没有#{1}}变量。 t在函数中将其声明为global变量。

您还需要导入random

我还没有做4 if/then个语句,而是将它们组合成1个if/then语句

编辑:清理代码多一点

编辑2:没有更多全局变量,尽可能避免使用全局变量

import random    


def get_human_choice():
    valid_choice = False
    while not valid_choice:
        choice = input("\nWhat do you choose? <rock, paper, scissors>: ")
        if choice == 'rock' or 'paper' or 'scissors':
            valid_choice = True

    return choice   


def get_comp_choice():
    rps = ('rock', 'paper', 'scissors')
    comp_choice = random.choice(rps)
    return comp_choice    


def human_winner(comp_choice):
    print("The computer chooses: %s" % comp_choice)
    print("Human wins this round.")    


def comp_winner(comp_choice):
    print("The computer chooses: %s" % comp_choice)
    print("Computer wins this round.")    


def stats(attempts, human_score, comp_scored, tie_score):
    print("Finished game number: %s" % attempts)
    print('Human Score: %s' % human_score)
    print('Computer Score: %s' % comp_scored)
    print('Ties: %s' % tie_score)    


def play_game(human_score, comp_score, tie_score):
    choice = get_human_choice()
    comp_choice = get_comp_choice()    

    if choice == 'rock':
        if comp_choice == 'scissors':
            human_winner(comp_choice)
            human_score += 1
        else:
            comp_winner(comp_choice)
            comp_score += 1
    elif choice == 'scissors':
        if comp_choice == 'paper':
            human_winner(comp_choice)
            human_score += 1
        else:
            comp_winner(comp_choice)
            comp_score += 1
    elif choice == 'paper':
        if comp_choice == 'rock':
            human_winner(comp_choice)
            human_score += 1
        else:
            comp_winner(comp_choice)
            comp_score += 1
    elif choice == comp_choice:
        print("Tie.")
        tie_score += 1    

    return human_score, comp_score, tie_score    


if __name__ == '__main__':
    tries = 1
    h_score, c_score, t_score = 0, 0, 0
    while tries <= 10:
        h_score, c_score, t_score = play_game(h_score, c_score, t_score)    

        if tries == 10:
            print("\nLimit reached!\n")
            stats(tries, h_score, c_score, t_score)
            break
        else:
            tries += 1