Besoin d'aide pour fichier texte en liste bi dimensionnel

Résolu/Fermé
Farx - 25 avril 2022 à 22:30
 Farx - 25 avril 2022 à 23:40
Bonsoir, je vous contacte car j'ai besoin de votre aide, en gros je dois passer un fichier texte en liste bi dimensionnel, en gros mon fichier texte c'est ça :
XXXXXXXXXXXX
X X
X H C H PX
XTHTT THTTX
X H H X
XPH S H X
XXXXXXXXXXXX

et ça doit devenir ça :
[ ['X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'],
['X', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'X'],
['X', ' ', 'H', ' ', 'C', ' ', ' ', ' ', 'H', ' ', 'P', 'X']
['X', 'T', 'H', 'T', 'T', ' ', ' ', 'T', 'H', 'T', 'T', 'X'],
['X', ' ', 'H', ' ', ' ', ' ', ' ', ' ', 'H', ' ', ' ', 'X'],
['X', 'P', 'H', ' ', ' ', 'S', ' ', ' ', 'H', ' ', ' ', 'X'],
['X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'] ]


mon code pour l'instant c'est ça :
plateau= []
with open('niv0.txt') as f:
ligne = f.readline()
while ligne:
ligne = f.readline()
print(ligne)



for i in range(len(ligne)):
lettre = ligne[i]
plateau.append(lettre)
Matrice.append(plateau)


print (plateau)



le soucis c'est que ça ne marche pas, quand j'affiche la liste elle reste vide
Merci beaucoup pour votre aide
(Repost car mal mis balise de code)

Configuration: Windows / Chrome 100.0.4896.127
A voir également:

2 réponses

Pierrecastor Messages postés 41467 Date d'inscription mercredi 5 novembre 2003 Statut Modérateur Dernière intervention 30 mai 2024 4 143
25 avril 2022 à 22:43
Salut,

Mieux pour la balise, mais il manque toujours l'indentation (indispensable au python).

Pour l'exercice, je comprend que les X forme de cadre, mais pour les lettre intérieur, je ne comprend pas la logique.
Par exemple :

X H C H PX
Pourquoi :
['X', ' ', 'H', ' ', 'C', ' ', ' ', ' ', 'H', ' ', 'P', 'X']

Et pas :

['X', ' ', 'H', ' ', 'C', ' ', 'H ', ' ', ' ', ' ', 'P', 'X']

Par exemple ?
Ou :
XPH S H X
Pourquoi :
['X', 'P', 'H', ' ', ' ', 'S', ' ', ' ', 'H', ' ', ' ', 'X'],

Et pas :

['X', 'P', 'H', ' ', ' S', ' ', 'H ', ' ', ' ', ' ', ' ', 'X'],
0
Excuse moi ça s'est mal affiché c'est pour ça :
XXXXXXXXXXXX
X X
X H C H PX
XTHTT THTTX
X H H X
XPH S H H X
XXXXXXXXXXXX
( et d'ailleurs ca s'affiche toujours mal, c'est bizzare mais je pense que vous avez compris)
et du coup c'est logique maintenant :
[ ['X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'],
['X', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'X'],
['X', ' ', 'H', ' ', 'C', ' ', ' ', ' ', 'H', ' ', 'P', 'X']
['X', 'T', 'H', 'T', 'T', ' ', ' ', 'T', 'H', 'T', 'T', 'X'],
['X', ' ', 'H', ' ', ' ', ' ', ' ', ' ', 'H', ' ', ' ', 'X'],
['X', 'P', 'H', ' ', ' ', 'S', ' ', ' ', 'H', ' ', ' ', 'X'],
['X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'] ]
0
jee pee Messages postés 40418 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 5 novembre 2024 9 412
Modifié le 25 avril 2022 à 23:26
Bonjour,

Tu peux faire :
plateau= []
with open('niv0.txt') as f:
     for ligne in f.readlines():
        print(ligne)
        ligneT = []
        for i in ligne.rstrip('\n'):
           ligneT.append(i)
        plateau.append(ligneT)

print(plateau) 


ou

plateau= []
with open('niv0.txt') as f:
     for ligne in f.readlines():
        print(ligne)
        plateau.append(list(ligne.rstrip('\n')))

print(plateau)


et pour imprimer la plateau
for i in range (len(plateau)) : 
  for j in range (len(plateau[i])) :
      c = plateau[i][j]
      print(c,end="")
  print("")

0
merci beaucoup
0