Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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
随机数网格4 x 6 Python 3_Python_Python 3.x_Random_Numbers - Fatal编程技术网

随机数网格4 x 6 Python 3

随机数网格4 x 6 Python 3,python,python-3.x,random,numbers,Python,Python 3.x,Random,Numbers,我对Python 3非常陌生,希望生成一个随机网格4x6数字。 我尝试过各种方法,但最终都是在新行上打印,或者在每行上打印4x6相同的数字等等 一些代码示例(我尝试了许多不同的方法,但我必须重新键入它们,因为我正在使用linux上的virtualbox来运行Python: import random def grid_maker(h,v): for y in range(1, 5): x = random.randint(1, 100) grid = [[str(x) for _ i

我对Python 3非常陌生,希望生成一个随机网格4x6数字。 我尝试过各种方法,但最终都是在新行上打印,或者在每行上打印4x6相同的数字等等

一些代码示例(我尝试了许多不同的方法,但我必须重新键入它们,因为我正在使用linux上的virtualbox来运行Python:

import random

def grid_maker(h,v):
 for y in range(1, 5):
  x = random.randint(1, 100)
  grid = [[str(x) for _ in range(v)] for _ in range (h)]
  grid[0][0] = "o"
  return grid
print ('\n'.join(''.join(row) for row in grid_maker(6,5)))
输出

o85858585
8585858585
8585858585
8585858585
8585858585
8585858585
期望输出

82 2 30 9 
45 65 54 14
23 4 32 42 
8 84 40 80
43 23 5 62 
23 43 3 5
[[34], [12], [2], [15]]
[[64], [34], [53], [4]]
[[35], [34], [61], [33]]
[[34], [55], [64], [23]]
另一个例子

for t in range(1, 5)
 i = random.randint(1, 100)
 grid = [[i], [i], [i], [i]]
 from pprint import pprint
 pprint(grid)
ar = []
    for t in range(1, 5):
     i = random.randint(1, 100)
     ar.append(i)
    for t in range(1, 7):
     for i in range(1, 5):
      print(ar[t-1], end='')
输出

[[100], [100], [100], [100]]
[[1], [1], [1], [1]]
[[80], [80], [80], [80]]
[[12], [12], [12], [12]]
期望输出

82 2 30 9 
45 65 54 14
23 4 32 42 
8 84 40 80
43 23 5 62 
23 43 3 5
[[34], [12], [2], [15]]
[[64], [34], [53], [4]]
[[35], [34], [61], [33]]
[[34], [55], [64], [23]]
另一个例子

for t in range(1, 5)
 i = random.randint(1, 100)
 grid = [[i], [i], [i], [i]]
 from pprint import pprint
 pprint(grid)
ar = []
    for t in range(1, 5):
     i = random.randint(1, 100)
     ar.append(i)
    for t in range(1, 7):
     for i in range(1, 5):
      print(ar[t-1], end='')
但这会打印出
585858585555555559595959343434342222222288888888root@root:/home/user#


谢谢

您在循环中每次只调用random一次,因此请继续使用相同的值,在列表comp中调用它:

def grid_maker(h,v):
   for y in range(1, 5):
      # add call to list comp to get a new number each iteration
      grid = [[str(random.randint(1,100)) for _ in range(v)] for _ in range (h)]
   grid[0][0] = "o"
   return grid
print ('\n'.join(' '.join(row) for row in grid_maker(6,4))

o 23 47 30 
25 21 32 28
26 76 71 14
54 15 94 77
50 50 29 62
59 92 60 57
如果您不想要
“o”
,那么不要添加它,只需删除
网格[0][0]=“o”

第一个循环也是多余的,因为您不断创建新列表,但只返回一个:

def grid_maker(h, v):
    return [[str(random.randint(1, 100)) for _ in range(v)] for _ in range(h)]
我们也可以在功能中完成这一切:

def grid_maker(h, v):
    return '\n'.join(' '.join(row) for row in  [[str(random.randint(1, 100)) for _ in range(v)] for _ in range(h)])

print(grid_maker(6, 4)) # 6,4 not 6,5

26 96 50 46
4 57 50 80
36 24 23 66
71 33 44 15
54 15 77 54
52 99 60 99
要打印相同逻辑适用的列表列表,每次需要调用randint:

for t in range(6):
    print([[random.randint(1,100)], [random.randint(1,100)], [random.randint(1,100)], [random.randint(1,100)]])

[[90], [57], [21], [11]]
[[84], [80], [100], [47]]
[[25], [37], [87], [97]]
[[78], [90], [100], [74]]
[[96], [83], [59], [2]]
[[83], [19], [90], [4]]

在循环中每次只调用random一次,因此请继续使用相同的值,在列表comp中调用它:

def grid_maker(h,v):
   for y in range(1, 5):
      # add call to list comp to get a new number each iteration
      grid = [[str(random.randint(1,100)) for _ in range(v)] for _ in range (h)]
   grid[0][0] = "o"
   return grid
print ('\n'.join(' '.join(row) for row in grid_maker(6,4))

o 23 47 30 
25 21 32 28
26 76 71 14
54 15 94 77
50 50 29 62
59 92 60 57
如果您不想要
“o”
,那么不要添加它,只需删除
网格[0][0]=“o”

第一个循环也是多余的,因为您不断创建新列表,但只返回一个:

def grid_maker(h, v):
    return [[str(random.randint(1, 100)) for _ in range(v)] for _ in range(h)]
我们也可以在功能中完成这一切:

def grid_maker(h, v):
    return '\n'.join(' '.join(row) for row in  [[str(random.randint(1, 100)) for _ in range(v)] for _ in range(h)])

print(grid_maker(6, 4)) # 6,4 not 6,5

26 96 50 46
4 57 50 80
36 24 23 66
71 33 44 15
54 15 77 54
52 99 60 99
要打印相同逻辑适用的列表列表,每次需要调用randint:

for t in range(6):
    print([[random.randint(1,100)], [random.randint(1,100)], [random.randint(1,100)], [random.randint(1,100)]])

[[90], [57], [21], [11]]
[[84], [80], [100], [47]]
[[25], [37], [87], [97]]
[[78], [90], [100], [74]]
[[96], [83], [59], [2]]
[[83], [19], [90], [4]]

在第一个示例中,仅生成一个随机数:

import random
def grid_maker(h, v):
    return [
        [str(random.randint(1, 100)) for _ in range(v)]
        for _ in range(h)
    ]
print ('\n'.join(' '.join(row) for row in grid_maker(6, 5)))
第二项:

import random
ar = [
    [[random.randint(1, 100)] for t in range(1, 5)]
    for i in range(1, 5)
]
for row in ar:
    print(row)

在第一个示例中,仅生成一个随机数:

import random
def grid_maker(h, v):
    return [
        [str(random.randint(1, 100)) for _ in range(v)]
        for _ in range(h)
    ]
print ('\n'.join(' '.join(row) for row in grid_maker(6, 5)))
第二项:

import random
ar = [
    [[random.randint(1, 100)] for t in range(1, 5)]
    for i in range(1, 5)
]
for row in ar:
    print(row)

您好,谢谢,第一部分成功了,但是Christos发布了这两部分,第二部分在[][]他的回答更清晰。不需要调用random randint 4次,这样,如果我想扩展它,我必须放置random randint 100次,例如。+对于第一部分tho。Thanks@F4LLCON,答案的整体思想是解释每次必须调用函数,显然,对于任意的amou,您将在循环中调用函数callsHello的nt,谢谢,第一部分成功了,但是Christos发布了两部分,第二部分在[][]他的回答更清晰。不需要调用random randint 4次,这样,如果我想扩展它,我必须放置random randint 100次,例如。+对于第一部分tho。Thanks@F4LLCON,答案的整体思想是解释每次必须调用函数,显然,对于任意的amou,您将在循环中调用函数来电数量