[英]Accidentally changed a list to generator
我正在寫《戰艦》游戲,但遇到了一些問題。我已經寫了一些代碼行,足以創建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 []列表更改為“ generator”,如何將其重新變成列表?
編輯:
謝謝您的回答,他們對我有很大幫助。 現在,我試圖理解另一件事-為什么代碼
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) ... ])
(觀看[
和]
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.