Python循环:4个随机数x 6

2024-09-25 02:28:43 发布

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

我想要6乘4个骰子,6个边(6 x 4d6),我试着得到一个像这样的循环:

import random

print random.randint(1, 6), random.randint(1, 6), random.randint(1, 6), random.randint(1, 6)
print random.randint(1, 6), random.randint(1, 6), random.randint(1, 6), random.randint(1, 6)
print random.randint(1, 6), random.randint(1, 6), random.randint(1, 6), random.randint(1, 6)
print random.randint(1, 6), random.randint(1, 6), random.randint(1, 6), random.randint(1, 6)
print random.randint(1, 6), random.randint(1, 6), random.randint(1, 6), random.randint(1, 6)
print random.randint(1, 6), random.randint(1, 6), random.randint(1, 6), random.randint(1, 6) code here

我试着这样做:

import random
import tempfile
roll = 0
rzuty = [] #dicethrows
wynik = [] #result


for x in range(6):
    for y in range(4):
        roll = random.randint(1,6)
        rzuty.append(roll)
    rzuty.sort()
    rzuty.pop(0)

    for z in xrange(len(rzuty)):
        tempfile = rzuty

    wynik.append(tempfile)

    print (roll)

我只知道:

1
3
3
4
6
4

Process finished with exit code 0

我试了那么多东西,但都找不出哪里不对。我只是个初学者。你知道吗


Tags: inimportforherecoderangerandom骰子
2条回答

作为一个基本的学习练习,让我们对代码进行演练:

for y in range(4):
    roll = random.randint(1,6)  # Lets say we generated 2,5,3,4
    rzuty.append(roll)
rzuty.sort()

这是一个好的开始,rzuty现在包含4个随机数(排序):

rzuty = [2,3,4,5]

现在你弹出最后一个号码:

rzuty.pop(0)  # Returns 5

现在rzuty包含[2,3,4]。这是不对的,你不想在那里pop调用,它会删除你的一个结果。你知道吗

现在我们在rzuty上循环并设置tempfile

for z in xrange(len(rzuty)):
    tempfile = rzuty

这似乎是多余的,可以用tempfile = rzuty替换,而不使用for循环。你知道吗

wynik.append(tempfile)
print (roll)

现在wynik == [[2,3,4]]我们打印roll的内容,我们可以从这个答案的顶部看到4(请注意,这是您在问题中强调的问题)

最后一个大问题是没有在每个循环之后清除rzuty。这意味着您只需更改代码,使print(roll)行更改为print(rzuty)就可以继续追加roll了。我的最后一行输出是:

[2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6]

总之,下面是一组工作代码(Python2.7):

# removed redundant `import tempfile`
import random

roll = 0
rzuty = [] #dicethrows
wynik = [] #result

for x in range(6):
    # clear rzuty so it doesn't get filled with results over time
    rzuty = []
    for y in range(4):
        roll = random.randint(1, 6)
        rzuty.append(roll)
    rzuty.sort()
    # removed pop discarding results and redundant for loop

    # replaced tempfile with rzuty in append
    wynik.append(rzuty)

    # print rzuty instead of last roll
    print rzuty

输出示例:

[1, 1, 3, 4]
[1, 3, 3, 5]
[1, 2, 5, 6]
[1, 4, 4, 5]
[2, 4, 4, 6]
[1, 1, 5, 6]

只有两个循环,一个嵌套在另一个循环中,只打印出4*6=24个随机滚动结果。你知道吗

我假设这只会产生4个骰子,6个边一次。你知道吗

要产生6倍的结果,只需将代码放入另一个嵌套循环中,该循环循环6次。你知道吗

相关问题 更多 >