石头剪刀流量控制

时间:2013-10-28 20:25:38

标签: python flow-control

在下面的石头剪刀程序中,我的循环出了问题。使用输入设置长度,每组玩游戏N次。 对于结果为播放器2,计算机0的情况;玩家0,电脑2;播放器2,电脑5;玩家0,电脑4;额外的游戏被添加到集合中。我已多次更改功能,无法弄清楚出了什么问题。

def rpsls_play():
    print("Welcome to the Rock-Scissors-Paper-Lizard-Spock game!")
    player_sets=0
    N=int(input("Select set length: "))
    times=0
    player_wins=0
    computer_wins=0
    while times < N:
        times +=1
        print("Now beginning game", times)
        if rpsls_game()==1:
            player_wins +=1
        else:
            computer_wins +=1
        print("Set score: Player", str(player_wins)+", Computer", str(computer_wins))
    else:
        pass

    if player_wins==computer_wins:
        while abs(player_wins-computer_wins)<2:         
            times +=1
            print("Now beginning game", times)
            if rpsls_game()==1:
                player_wins +=1
            else:
                computer_wins +=1
            print("Set score: Player", str(player_wins)+", Computer", str(computer_wins))
    else:
        pass

    if player_wins>computer_wins:
        print("Congratulations! You have won in", times, "games.")
        player_sets +=1
    elif computer_wins>player_wins:
        print("Too bad! You have lost in", times, "games.")

    pass

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

我无法检查您的代码,因为没有函数rpsls_game()

你没有说你的游戏有什么问题 - 你得到了什么,你期待什么?

我只能猜测你有线

的问题
if player_wins==computer_wins:

只有player_wins == computer_wins才会在N场比赛后添加额外游戏。

你不需要那条线。

答案 1 :(得分:1)

在我得到答案之前,将代码设计成一些有助于改进代码的东西:

  1. 您可以删除这些else: pass行。

  2. 您可以删除最终的pass语句。

  3. 您需要将其更改为:

    if player_wins == computer_wins:         
        times +=1
        print("Now beginning tie-breaker game. game", times)
        if rpsls_game()==1:
            player_wins +=1
        else:
            computer_wins +=1
        print("Set score: Player", str(player_wins)+", Computer", str(computer_wins))