意外将列表更改为发电机



我正在编写战舰游戏,我"面临一些问题。我已经编写了一些代码行,足以创建10x10地图,随机随机船的位置并给玩家给玩家10转到猜测。现在,我试图将数字1-10放在第一行和第一列中,以使地图更加清晰。不幸的是,在添加数字后,我将列表更改为不同的内容:

from random import randint
board = []
board.append((str(n) for n in(range(0, 11))))
liczba_kolumn = 10
for x in range(9):
    board.append([str(x + 1)] +["O"] * liczba_kolumn)
board.append(["10O"] + ["O"] * (liczba_kolumn - 1))
def print_board(board):
    for row in board:
        print(" ".join(row))
print ("Let's play Battleship!")
print_board(board)
def random_row(board):
    return randint(1, len(board))
def random_col(board):
    return randint(1, len(board[0]))
ship_row = random_row(board)
ship_col = random_col(board) `
for turn in range(10):
    print ("Turn " + str(liczba_prob)) 
    guess_row = input("Guess Row:") 
    guess_col = input("Guess Col:")
    liczba_prob = liczba_prob - 1
    if guess_row == "" or guess_col == "":
        print ("guess the location")
    else:
        guess_row = int(guess_row) - 1
        guess_col = int(guess_col) - 1
        if guess_row == ship_row and guess_col == ship_col:
            print ("Congratulations! You sunk my battleship!")
            break
        else:
            if (guess_row < 0 or guess_row > 9) or (guess_col < 0 or             guess_col > 9):
                print ("Wrong localisation")
            elif(board[guess_row][guess_col] == "X"):
                print ("You already guessed that one.")

第一个错误是

return randint(1, len(board[0]))
TypeError: object of type 'generator' has no len()

我将两个Random_functions从Len((更改为" 11"。但是下一个错误是

elif(board[guess_row][guess_col] == "X"):
TypeError: 'generator' object is not subscriptable.

我的问题是 - 我在哪一刻将板[]列表更改为"发电机",如何将其转回列表?

编辑:

感谢您的回答,他们对我有很大帮助。现在我试图理解另一件事 - 为什么代码

board = []
board.append(["10O"] + ["O"] * (10))
print(" ".join(board))

返回一个错误:序列项目0:预期的str实例,找到的列表?首先,下一个项目都在括号中。看起来相同的代码返回没有错误:

board = []
board.append(["10O"] + ["O"] * 10)
def print_board(board):
    for row in board:
        print(" ".join(row))
print_board(board)

board.append((str(n) for n in(range(0, 11))))将生成器附加到board。您可能要使用.extend().insert([str(n) ... ])(观看[](

最新更新