Créer et initialiser la grille de 5x5 pour les Cuirassés
Donc, je viens de terminer une section de CodeAcademy Cuirassé problème, et ont présenté une bonne réponse mais j'ai du mal à comprendre pourquoi il est correct.
L'idée est de construire une grille de 5x5 comme un conseil, remplis de "O". Le bon code que j'ai utilisé était:
board = []
board_size=5
for i in range(board_size):
board.append(["O"] *5)
Cependant, je suis confus quant à pourquoi n'en est pas de créer 25 "O" dans une seule ligne comme je n'ai jamais spécifié pour accéder à une ligne distincte. J'ai essayé
for i in range(board_size):
board[i].append(["O"] *5)
mais cela m'a donné l'erreur: IndexError: list index out of range
. Quelqu'un peut-il expliquer pourquoi le premier est correct et pas la seconde?
OriginalL'auteur KRS-fun | 2014-01-29
Vous devez vous connecter pour publier un commentaire.
Ce qui crée une liste de taille 5, remplis de "O":
["O", "O", "O", "O", "O"]
Ceci ajoute (s'ajoute à la fin de la liste) la liste ci-dessus pour le conseil d'administration[]. Ce faisant 5 fois dans une boucle crée une liste remplie avec 5 de la liste ci-dessus.
Votre code n'a pas fonctionné, parce que les listes ne sont pas initialisés avec une taille en python, il commence juste comme un récipient vide
[]
. Pour faire votre travail, vous pourriez avoir fait:et dans ta boucle:
OriginalL'auteur turbo
Python listes de commencer à vide:
Contrairement à certains langages de programmation, vous ne spécifiez pas ou initialiser les limites du tableau, donc si vous essayez d'accès par index:
vous obtiendrez un
IndexError
; il n'y a pas encore d'indice0
.Dans la première version, à chaque voyage, à travers les
for
boucle, vousappend
(à ajouter à la fin de la liste) un nouvelle liste contenant cinq"O"
s. Si vous voulez leboard
liste de 25"O"
s, vous devez utiliserextend
à la place:OriginalL'auteur jonrsharpe
Code devrait ressembler à ceci.
board = []
for i in range(0, 5):
board.append(["O"]*5)
print(board)
OriginalL'auteur SanchelliosProg
Je pense que le problème est simple: lorsque vous exécutez votre code, votre tableau est vide!
Vous pourriez émettre un
les initialiser comme un imbriqués, cinq lieux de tableau.
Vous pouvez également utiliser une dict à simuler une indéfiniment tableau imbriqué:
OriginalL'auteur Vincenzo Maggio
Dans ce code
board
commence comme une liste vide.["O"] * 5
permettra de créer une liste qui est égal à["O", "O", "O", "O", "O"]
. Il sera alors ajouté à la listeboard
. Ce qui va arriver 5 fois dans cet exemple depuisboard_size == 5
.Ce ne serait pas de travail, sauf si l'élément à l'index
i
a une liste depuisappend()
est une méthode de lalist
classe. Si vous vouliez insérer quelque chose ài
vous devez utiliser la méthode de la listeinsert()
OriginalL'auteur kylie.a
C'est parce que chaque fois que vous exécutez
board.append(["O"] *5)
vous créez une nouvelle liste (en raison de l'crochets utilisés à l'intérieur de l'ajouter).Si vous avez utilisé
board.append("O" *5)
au lieu de l', vous obtiendrez une liste unique avec cinq éléments tels que:L' *5 multiplie la chaîne. si vous venez d'exécuter à partir d'une invite de commandes
'O' * 5
, vous bénéficiez de:Toutefois, si vous exécutez
['O'] * 5
il multiplie le texte dans la liste et vous obtenez une liste avec les cinq éléments.Vous ajouté cinq listes, ayant chacun des 5 éléments.
OriginalL'auteur ChrisProsser
Première étape dans codeacademy
Deuxième étape dans codeacademy
troisième étape codeacademy
4ème Étape
5ème étape de l'buttleship sur codeacademy
Dernière Étape vous Permet de .. Jouer le jeu BettleShip CodeAcademy
conseil = []
for x in range(5):
conseil d'administration.append(["S"] * 5)
def print_board(conseil d'administration):
pour la ligne de conseil:
print " ".join(ligne)
imprimer "nous allons jouer à Battleship!"
print_board(conseil d'administration)
def random_row(conseil d'administration):
retour randint(0, len(conseil d'administration) - 1)
def random_col(conseil d'administration):
retour randint(0, len(carte[0]) - 1)
ship_row = random_row(conseil d'administration)
ship_col = random_col(conseil d'administration)
imprimer ship_row
imprimer ship_col
tours=0
victoire = 0
pour le tour in range(4):
si turn <= 5:
guess_row = int(raw_input("Devinez Ligne:"))
guess_col = int(raw_input("Devine le Col:"))
OriginalL'auteur Engr Nayab Bukhari Syed