随机数网格4 x 6 Python 3
我对Python 3非常陌生,希望生成一个随机网格4x6数字。 我尝试过各种方法,但最终都是在新行上打印,或者在每行上打印4x6相同的数字等等 一些代码示例(我尝试了许多不同的方法,但我必须重新键入它们,因为我正在使用linux上的virtualbox来运行Python:随机数网格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
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,您将在循环中调用函数来电数量