我是新手,尝试掷 3d6,重新掷 1,然后将它们放入列表中。我似乎无法在列表中获得 3 "new" 个值。数字不断增加

I am new, trying to roll 3d6, rerolling 1's, and put them into a list. I cant seem to get 3 "new" values in the list. The numbers just keep adding up

import random

my_stats = []

stat = 0

while len(my_stats) < 3:
    for i in range(1,4):                # generates a num (d6) but no 1's
        number = (random.randint(1, 6))
        while number == 1:
            number = (random.randint(1, 6))
        else:
            stat += number          # sums the 3 rolls into stat

    my_stats.append(stat)

print(my_stats)

我不确定如何在我的列表中获得 3 个不同的条目,只是不断累加。

您从未重置 stat

尝试将其初始化移动到循环中,例如

while len(my_stats) < 3:
    stat = 0
    for i in range(1,4):
        # ...

您的代码当前掷骰子 3 次,如果掷骰不是 1,则添加结果,否则毫无意义地重新掷骰子(因为从未使用过该值)。然后将求和值附加到列表中,然后重复该过程,但不要先将求和值重置为 0。所以它至少包含 2 个错误(因为忽略 1 和不使用 reroll 似乎不是你想要的)

我想这就是你想要的:

import random

my_stats = []

stat = 0

while len(my_stats) < 3:
    # you'd want to restart the count every time
    stat = 0
    # you'll need to keep track of the number of good rolls, can roll any number of 1's
    good_rolls = 0
    while good_rolls < 3:
        number = (random.randint(1, 6))
        if number != 1:
            stat += number          # sums the 3 rolls into stat
            good_rolls += 1

    my_stats.append(stat)

print(my_stats)