玩家掷2个骰子直到一个达到100

2024-06-26 13:59:34 发布

您现在位置:Python中文网/ 问答频道 /正文

每个玩家在一次回合中连续掷两个骰子。获得的骰子数量为 添加到玩家的总分中。当其中一名球员上场时,比赛结束 第一个至少得了100分

from random import randint

dicesum2 = 0
dicesum1 = 0
while (dicesum1 < 100): 
    dice1 = [randint(1, 6) for i in range(2)]
    dicesum1 += sum(dice1)
    print('player 1',dice1,'|',dicesum1)
    dice2 = [randint(1, 6) for i in range(2)]
    dicesum2 += sum(dice2)
    print('player 2',dice2,'|',dicesum2) 

我需要它在一个人达到100岁时结束。我如何检查两者

如果一名球员只投了一个单球,他将失去在回合中获得的分数

当生成的数字之一为1时,如何检查


Tags: infor数量玩家range骰子playersum
3条回答

看看这个,看看是否有帮助

from random import randint

def roll():
    return [randint(1, 6) for i in range(2)]

def check_for_one(rolls):
    for roll in rolls:
        # this could be simplified to "if 1 in rolls", this was just my preference
        if roll == 1:
            return True
    return False

dicesum2 = 0
dicesum1 = 0

while True:
    d1 = roll()
    dicesum1 += sum(d1)
    if check_for_one(d1):
        print(f"Player 1 rolled a 1 in batch: {d1}")
    print(f"Player 1 roll: {d1} | {dicesum1}")

    d2 = roll()
    dicesum2 += sum(d2)
    if check_for_one(d2):
        print(f"Player 2 rolled a 1 in batch: {d2}")
    print(f"Player 2 roll: {d2} | {dicesum2}")


    if dicesum1 >= 100:
        print(f"Player 1 won with: {dicesum1}")
        break
    elif dicesum2 >= 100:
        print(f"Player 2 won with: {dicesum2}")
        break


所以在这个例子中,我们把滚动推到一个函数上,然后检查一个一个,它迭代你正在做的列表,检查一个一个并返回一个布尔值

我将循环更改为while True,因此该循环不负责更复杂的条件,这可能是限制性的

对于每个玩家,它执行掷骰、求和、检查并报告批次中是否有1,报告掷骰

最后,它检查赢家,如果一个人达到或超过100,它就会中断,并报告他们的胜利

您可以按如下方式更改while条件:

while (dicesum1 < 100 and dicesum2 < 100): 

或者,您也可以使用break

...
if dicesum1 >= 100:
    break
...
if dicesum2 >= 100:
    break

I need it to end when one reaches 100. how do i check both?

了解or逻辑运算符的作用:

dicesum1 < 100 or dicesum2 < 100

how do i check when one of the generated numbers is 1?

了解in运算符的作用:

if 1 in dice1:
    # Apply penalty.

相关问题 更多 >