在网格

时间:2015-11-13 10:37:15

标签: python loops python-3.x random

我是Python和这个网站的新手。我希望有人可以帮我解决这个问题并澄清一些事情。我在战舰计划中遇到了这个问题。我有一个10x10网格,我想随机化我网格中3艘船的每一个的位置。我还希望在我希望它们显示时显示位置。我一直试图用其他方法模仿这个,但无济于事。

我当前的网格如下:

print(" 0 ","1 ","2 ","3 ","4 ","5 ","6 ","7 ","8 ","9","10")

symbol = " O "
row = 0

for i in range(0,11):
    print(symbol*11 + " " + str(row))
    row += 1

例如,当我选择显示第1,2和3号船的位置时,我希望网格看起来像这样:

O O O X O O O O O O
O O O X O O O O X O
O O O X O O O O X O
O O O X O O O O X O
O O O O O O O O X O
O O O O O O O O O O
O O X X X X O O O O
O O O O O O O O O O
O O O O O O O O O O
O O O O O O O O O O

1 个答案:

答案 0 :(得分:2)

你做了太多的手工工作。您可以将整个网格存储为数组,并修改网格,然后打印网格。此外,您不需要在范围内指定0。无论如何,请检查一下。

grid = [['O' for i in range(10)] for j in range(10)] # use generators to create list

def print_grid():
    print("  " + " ".join(str(i) for i in range(10))) # " ".join() puts the " " between each string in the list
    for y in range(10): 
        print(str(y) + " " + " ".join(grid[y]))

print_grid()

# OUTPUT:
#   0 1 2 3 4 5 6 7 8 9
# 0 O O O O O O O O O O
# 1 O O O O O O O O O O
# 2 O O O O O O O O O O
# 3 O O O O O O O O O O
# 4 O O O O O O O O O O
# 5 O O O O O O O O O O
# 6 O O O O O O O O O O
# 7 O O O O O O O O O O
# 8 O O O O O O O O O O
# 9 O O O O O O O O O O

grid[0][3] = 'X'
grid[1][3] = 'X'
grid[2][3] = 'X'
grid[3][3] = 'X'

print_grid()

# OUTPUT:
#   0 1 2 3 4 5 6 7 8 9
# 0 O O O X O O O O O O
# 1 O O O X O O O O O O
# 2 O O O X O O O O O O
# 3 O O O X O O O O O O
# 4 O O O O O O O O O O
# 5 O O O O O O O O O O
# 6 O O O O O O O O O O
# 7 O O O O O O O O O O
# 8 O O O O O O O O O O
# 9 O O O O O O O O O O

希望这是你需要的大部分内容!

编辑:没看到随机方面,我道歉!

例如,使用random.randint(但将导入移动到文件顶部):

import random
x = random.randint(1, 8)
y = random.randint(1, 8)

if random.randint(0, 1): # flip coin to determine orientation
    grid[y-1][x] = 'X'
    grid[y][x] = 'X'
    grid[y+1][x] = 'X'
else:
    grid[y][x-1] = 'X'
    grid[y][x] = 'X'
    grid[y][x+1] = 'X'

要检查碰撞,您可能不是将那些3设置为X关闭,确认它们全部为O,如果不是,则重新定位位置和方向。