0

在下面的石头剪刀布程序中,我的循环有问题。使用设置长度的输入,每组游戏进行 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

感谢您的帮助

4

2 回答 2

1

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

你没有说你的游戏出了什么问题——你得到了什么,你期望什么?

我只能猜测你的线路有问题

if player_wins==computer_wins:

只有在 N 场比赛后才添加额外的比赛player_wins == computer_wins

你不需要那条线。

于 2013-10-28T20:51:54.410 回答
1

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

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

  2. 您可以删除该最终pass声明。

您需要将其更改为:

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))
于 2013-10-28T20:52:17.800 回答