IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Ouverture d'un fichier et utilisation de la fonction max


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Ouverture d'un fichier et utilisation de la fonction max
    Bonjour à tous,

    Voici mon problème, je tente de créer un programme qui soit capable d'ouvrir un fichier texte composé de 2 colonnes de nombres, et je souhaiterais réécrire ce fichier dans une liste.

    Ensuite je souhaiterais pouvoir par le biais du programme trouvé la valeur maximal de la 2 ème colonne du fichier et que le programme me l'affiche ainsi que la valeur correspondante de la colonne 1, voici une partie du fichier pour que cela soit plus clair:

      4.005       66
      4.022       73
      4.039       83
      4.056       85
    voici maintenant le début de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    import sys
    import os
    import numpy as np
     
     
    print("Démarrage du programme")
     
    #introduire le nom de l'échantillon
     
    nomSample = input("donnez le nom de l'échantillon :")
     
    #nom du fichier à traité
     
    nomFichier = input("quelle fichier traité ?")
    while not os.path.exists(nomFichier):
                print("nom de fichier incorrect ou inexistant !")
                nomFichier = input("quelle fichier traité ?")
     
    #lire le fichier et le traiter
     
    fichier = open(nomFichier,'r')
    lines = fichier.readlines()
    fichier.close()
     
    nums=[]
     
    for line in lines:
                if len(line.strip()) != 0:
                            vec=[float(x) for x in line.strip().split()]
                            nums.append(vec)
    print (nums)
    le soucis réside dans le fait qu'il ne considère pas les valeurs contenue dans la liste mais bien la position de chaque couple contenu dans la liste, est ce que quelqu'un pourrais m'aider ? je suis nouveau en programmation python.

    Merci de votre aide

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 813
    Points : 7 102
    Points
    7 102
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    FICHIER = "test.txt"
    val, m = 0, 0
     
    with open(FICHIER, 'r') as f:
        for line in f:
            value, maxi = map(float, line.split())
            if maxi > m:
                val, m = value, maxi
     
    print(val, m)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fred1599@fred1599-Aspire-5741G:~$ python3 test_2.py
    4.056 85.0
    J'ai pas trop compris si c'est cela que tu souhaitais ?
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci c'est exactement cela ;-) cela va me débloquer, merci beaucoup

    Pourrais je encore abuser de votre savoir, maintenant que je dispose de cette valeur je dois maintenant rechercher les valeurs correspondants à la moitié du maximum donc de m/2

    et de cela extraire 2 autres valeurs de la première colonne, la difficulté réside dans le fait que la valeur de recherche (m/2) n'est peut être pas exactement égale à des valeurs se trouvant dans le fichier il faudrait donc prendre les 2 valeurs étant les plus proches.

    J'espère avoir été plus ou moins clair.

    Merci encore de votre aide

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 813
    Points : 7 102
    Points
    7 102
    Par défaut
    Est-ce un problème python, ou un problème pour répondre au problème ?

    Quelle est la démarche (sans python) pour faire ce genre de chose ?

    cela va me débloquer, merci beaucoup
    Donc le plus gros du travail est fait, non?

    Pourrais je encore abuser de votre savoir
    J'ai des doutes, je ne vois pas où le travail personnel se trouve, alors que précédemment tu avais présenté un code...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    En effet vous avez raison si je n'ai pas montré d'implication personnel veillez m'en excuser, voici mon code modifié tenant compte de votre aide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    with open(nomFichier, 'r') as f:
                for line in f:
                            value, maxi = map(float, line.split())
                            if maxi > m:
                                        val, m = value, maxi
                                        if value > degreesMax:
                                                    break
                #empeche de prendre trop de valeur
     
    print(val, m)
     
    fichier = open(nomFichier, 'r')
    lines = fichier.readlines()
    fichier.close()
     
    for line in lines :
                value, mini = map(float, line.split())
                if mini == (m/2):
                            a, b = value, mini
    		#arrondi supérieur
                elif mini == (m/2):
                            c, d = value, mini
                    #arrondi inférieur
     
    print(a,b,c,d)
    Grâce à votre aide je peux maintenant screener le fichier mais le soucis est l'utilisation d'arrondis. Pour être plus clair je désire obtenir la largeur à mi hauteur d'un pic, j'ai maintenant trouver le maximum d'intensité, pour la mi hauteur elle correspond à m/2 mais dans le fichier ce nombre n'existe pas forcément et je désire obtenir les valeurs s'en rapprochant le plus. Voila mon problème je ne connais pas de fonction pouvant effectuer cela sans devoir recourir à un numpy.

  6. #6
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 813
    Points : 7 102
    Points
    7 102
    Par défaut
    Question bête

    Ton fichier comportant ces deux colonnes est généré par un programme python ?
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

Discussions similaires

  1. [Toutes versions] Utilisation de la fonction max
    Par thoruiz dans le forum VBA Access
    Réponses: 4
    Dernier message: 27/08/2019, 09h19
  2. Utilisation de la fonction MAX()
    Par JustyDark dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/01/2014, 22h36
  3. Utilisation de la fonction MAX
    Par PatStan17 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 05/04/2012, 17h49
  4. Utilisation de la fonction MAX
    Par joyeux_lapin13 dans le forum SAS Base
    Réponses: 4
    Dernier message: 23/02/2011, 09h32
  5. Utilisation de la fonction max
    Par k-koo dans le forum Langage SQL
    Réponses: 12
    Dernier message: 30/11/2007, 15h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo