Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python掷骰子游戏,而循环问题_Python - Fatal编程技术网

Python掷骰子游戏,而循环问题

Python掷骰子游戏,而循环问题,python,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

我想创造一个简单的垃圾游戏,我有问题

输入此代码时:

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循环中放置轮数,它会告诉我轮数在分配之前被引用。

第一个问题是,告诉用户他们是推、赢还是输的所有代码都在循环中,如果用户输入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()

如果玩家的钱用完了,你可能还应该考虑结束游戏。

我认为这里有很多需要整理的地方,但为什么不从以下开始:

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

这样,在第一次播放后,您会自动进入while循环,并在询问用户是否想再次播放之前给出结果。您必须处理的下一个问题是,在while循环中,没有关于下新赌注或再次掷骰子的规定。

是的,我正在试图找出如何做到这一点:我做了所有这些,但出于任何原因,代码仍然没有循环。@JCJG去掉break语句。啊!成功了!非常感谢,我想我可以从这里得到剩下的:@JCJG如果那部分在循环之前,就像它在上面一样,那么它不应该重复。