Python掷骰子游戏,循环问题

时间:2014-11-17 01:30:20

标签: python

我正在寻找创建一个简单的掷骰子游戏,我遇到了问题。

输入此代码时:

import random
def main():
    starting_money = int(input("How much do you have to gamble? : "))
    print()
    player_bet = int(input("Enter your bet: "))
    number_1 = (random.randint(1,6))
    number_2 = (random.randint(1,6))
    print("Dice roll 1: ", number_1)
    print("Dice roll 2: ", number_2)
    roll = number_1 + number_2
    print("Your roll: ", roll)
    rounds = input("Play again? (Y/N): ")
    while rounds != "n" and rounds == "y":
        if rounds == "n":
            print("Congratulations, you left with")
        if roll == 7 or roll == 11:
            print("You win $", player_bet, sep="")
            new_money = starting_money + player_bet
            print("You have $", new_money, " remaining.", sep="")
        elif roll == 2 or roll == 3 or roll == 12:
            new_money = starting_money - player_bet
            print("You lost $", player_bet, sep="")
            print("You have $", new_money, " remaining.", sep="")
        else:
            print("You push.")
            new_money = starting_money
            print("You have $", new_money, " remaining.", sep="")
        break
main()

当我输入“n”时会发生这种情况。

Enter your bet: 5
Dice roll 1:  6
Dice roll 2:  6
Your roll:  12
Play again? (Y/N): n

当我输入“y”时会发生这种情况。

Enter your bet: 5
Dice roll 1:  2
Dice roll 2:  3
Your roll:  5
Play again? (Y/N): y
You push.
You have $10 remaining.

在这两种情况下,它都需要在用户询问是否要再次播放之前告诉用户他们是否推,赢或输。我怎么能做到这一点?

如果我在while循环中放入“rounds”,它会告诉我在分配之前引用了舍入。

2 个答案:

答案 0 :(得分:0)

第一个问题是告诉用户他们是推送,赢或输的所有代码都在循环内,如果用户输入" n",该代码永远不会运行。真正的问题是你的大部分代码都应该在循环中,包括询问用户他们想要下注多少以及掷骰子。

我首先将rounds变量初始化为默认值" y"这样循环至少运行一次,然后不要问用户是否要再次播放,直到循环结束。然后在循环中移动所有其他代码。 (除了"你有多少赌博?"部分。这可能应该在循环之外。)

这是未经测试的,但事情的顺序应该是这样的:

import random

def main():
    starting_money = int(input("How much do you have to gamble? : "))
    print()

    rounds = "y"

    while rounds != "n" and rounds == "y":

        player_bet = int(input("Enter your bet: "))
        number_1 = (random.randint(1,6))
        number_2 = (random.randint(1,6))
        print("Dice roll 1: ", number_1)
        print("Dice roll 2: ", number_2)
        roll = number_1 + number_2
        print("Your roll: ", roll)

        if rounds == "n":
            print("Congratulations, you left with")
        if roll == 7 or roll == 11:
            print("You win $", player_bet, sep="")
            new_money = starting_money + player_bet
            print("You have $", new_money, " remaining.", sep="")
        elif roll == 2 or roll == 3 or roll == 12:
            new_money = starting_money - player_bet
            print("You lost $", player_bet, sep="")
            print("You have $", new_money, " remaining.", sep="")
        else:
            print("You push.")
            new_money = starting_money
            print("You have $", new_money, " remaining.", sep="")

        rounds = input("Play again? (Y/N): ")


main()

如果玩家没钱,你应该考虑结束游戏。

答案 1 :(得分:0)

我认为这里有很多东西可以消除,但为什么不从这开始:

 rounds = 'y'
 while .....
   ....
   ....
   else:
     ....
   rounds = input("Play again (y/n)")

这样,您可以在第一次滚动后自动进入while循环,并在询问是否要再次播放之前给出用户结果。您必须处理的下一个问题是,在while循环中,没有提供新的投注或再次掷骰子的条款。