Partage
  • Partager sur Facebook
  • Partager sur Twitter

pb passage de données chiffrées externe a une list

Sujet résolu
    18 avril 2016 à 11:18:52

    Bonjour a tous !
    Je réalise actuellement un programme de bataille navale qui est quasiment fini ! Je rencontre juste un petit problème lors d'un passage de données chiffrées provenant d'un fichier externe a une liste.
    Lorsque le programme tourne, la liste s'affiche de la façon suivante : ['15\n', '15\n', '19\n', '20\n', '21\n', '13\n', '13\n', '13\n', '20\n', '20\n', '20\n', '20\n', '14\n', '15\n', '16\n', '17\n', '18']. il faudrait enlever l’ensemble des '\n' mais personnellement je ne vois pas comment faire :( .
     Merci de me venir en aide :D
    voici mes deux fichiers externes et mon programme :
    (ordi3colonne)
    15
    15
    19
    20
    21
    13
    13
    13
    20
    20
    20
    20
    14
    15
    16
    17
    18
    (ordi3ligne)
    5
    6
    7
    7
    7
    8
    9
    10
    2
    3
    4
    5
    4
    4
    4
    4
    4
    et le programme ;) :
    fichligne=open("ordi3ligne.txt","r")
    fichcolonne=open("ordi3colonne.txt","r")
    
    ListeColonneBateau=[]
    ListeLigneBateau=[]
    
    for z in range (17) :
        v=fichligne.readline()
        w=fichcolonne.readline()           
        ListeColonneBateau.append(v)
        ListeLigneBateau.append(w)
    print(ListeLigneBateau)
    print(ListeColonneBateau)
    
    fichcolonne.close()
    fichligne.close()
    • Partager sur Facebook
    • Partager sur Twitter
      18 avril 2016 à 11:58:02

      for z in range (17) :
          v=fichligne.readline().strip()
          w=fichcolonne.readline().strip()
      

      strip te retourne une copie de la chaine de caractère de laquelle on a enlever les espaces et les sauts de lignes de début et de fin.
      Edit: prèfères l'utilisation du context manager with pour l'ouverture et fermeture des fichiers
      ListeColonneBateau=[]
      ListeLigneBateau=[]
      
      with open("ordi3ligne.txt","r") as fichligne, open("ordi3colonne.txt","r") as fichcolonne:
          #les 2 fichiers sont ouverts
          for z in range (17) :
              v=fichligne.readline().strip()
              w=fichcolonne.readline().strip()
              ListeColonneBateau.append(v)
              ListeLigneBateau.append(w)
              
      #les fichiers sont fermés automatiquement quand on sort du bloc with
      print(ListeLigneBateau)
      print(ListeColonneBateau)

      -
      Edité par lewisbm 18 avril 2016 à 12:03:52

      • Partager sur Facebook
      • Partager sur Twitter
        18 avril 2016 à 13:06:25

        Autant itérer directement sur les 2 fichiers:

        ListeColonneBateau=[]
        ListeLigneBateau=[]
         
        with open("ordi3ligne.txt") as f_lig, open("ordi3colonne.txt") as f_col:
            for lig, col in zip(f_lig, f_col):
                ListeLigneBateau.append(lig.strip())
                ListeColonneBateau.append(col.strip())
        
        
        print(ListeLigneBateau)
        print(ListeColonneBateau)


        PS: Au lieu d'utiliser 2 fichiers distincts, pourquoi ne pas réunir les lignes et les colonnes dans un seul? Un truc du style:

        #Dans un fichier nommé coord_bateaux.txt
        5, 15
        6, 15
        7, 19
        7, 20
        7, 21
        8, 13
        9, 13
        10, 13
        2, 20
        3, 20
        4, 20
        5, 20
        4, 14
        4, 15
        4, 16
        4, 17
        4, 18


        Ce qui a quand même plus de sens. Et donc le traitement serait:

        ListeColonneBateau=[]
        ListeLigneBateau=[]
         
        with open("coord_bateaux.txt") as f_coord:
            for line in f_coord:
                x, y = line.strip().split(",")
                #x, y = int(x), int(y)  #Faut-il les convertir en entiers?
                ListeLigneBateau.append(x)
                ListeColonneBateau.append(y)
        
        
        print(ListeLigneBateau)
        print(ListeColonneBateau)


        Ou de carrément réunir les coordonnées dans une même variable:

        coord_bateaux = []
         
        with open("coord_bateaux.txt") as f_coord:
            for line in f_coord:
                x, y = line.strip().split(",")
                x, y = int(x), int(y)  #Conversion en entiers
                coord_bateaux.append((x, y))
        
        print(coord_bateaux)
        • Partager sur Facebook
        • Partager sur Twitter
        Précepte: Le mieux est l'ennemi du bien
          18 avril 2016 à 14:48:52

          Merci pour vos réponses rapides et vos propositions ! La commande strip marche très bien et je pense effectivement regrouper met deux fichiers en un seul. ;)

          -
          Edité par AntoineDesbiolles 18 avril 2016 à 14:58:13

          • Partager sur Facebook
          • Partager sur Twitter

          pb passage de données chiffrées externe a une list

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown