Выбрать несколько индексов определенного списка списка - PullRequest
0 голосов
/ 10 января 2019

Приветствую всех, кто читает это! Мне поручили сделать программу для тральщика на python, где, да, я мог бы просто скопировать вставить уже созданную, но я хотел сделать это сам, но мне трудно с моими списками здесь. Чтобы было немного яснее, у меня есть основной список, назовем его списком. У меня есть еще 10 списков для строк игровой доски, НО теперь, когда мне нужно добавить мины, я не могу найти способ случайного размещения их по спискам!

x=random.choice(list)
    board.replace(x,"nuke",forrow)
-----------------------------------------
x=randrange(len(list))
    board.replace(x,"nuke",forrow)
--------------------------------------
x=random.sample(list[i],1)
    board.insert(x,"nuke")
----------------------------------------
    for x in range(len(list)):
            board.insert(random.choice(x),"nuke")

import random
board = [[" "]*10 for i in range(10)]# here i create the big list and the other ones within it

bombs=15#input("Please provide the amount of bombs you want in the game: ")

for list in board: #here is my problem
    x=random.sample(list[i],1) 
    board.insert(x,"nuke")



for x in board:print x 

Я ожидаю чего-нибудь, что может помочь мне в моей маленькой программе Мне нужно что-то, чтобы иметь возможность получить позицию из X позиций в списке и заменить их на «бомбу», так что назовите это!

1 Ответ

0 голосов
/ 10 января 2019

Вместо случайного выбора позиций в поле, как об этом подходе: Инициализируйте длинный список с нужным количеством «ядерных зарядов» и пустых ячеек, random.shuffle этого списка, и разбейте его на 2D-доску.

>>> bombs = 15
>>> all_cells = ["nuke"] * bombs + [" "] * (100 - bombs)
>>> random.shuffle(all_cells)
>>> board = [all_cells[i:i+10] for i in range(0, 100, 10)]

Таким образом, вам не нужно проверять, не выполнили ли вы ранее случайный бросок той же ячейки раньше.

...