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 :

trouver le nombre négatif le plus "proche" de zero a partir d'une valeur absolue.


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2003
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 37
    Par défaut trouver le nombre négatif le plus "proche" de zero a partir d'une valeur absolue.
    Bonjour,

    pour un exercice je doit trouver la valeur la plus prés de zéro en fonction des nombre (positif et/ou négatif) saisie en ligne de commande.
    jusque l'a j'ai réussi a géré cette recherche, la ou je bloque c'est le cas ou je n'ais que des nombre négatif.

    En speudo code:

    je stock la quantité de valeur a analyser demandé en ligne de commande
    je boucle sur la saisie pour alimenter une premier liste demandé en liste de commande
    je refait une boucle pour alimenté une seconde liste pour avoir les valeurs absolue.
    je trie ma seconde liste.
    je récupère la valeur stocker dans la première liste en fonction de l'index de la première valeur dans la liste 2.
    je vérifie si je n'ais pas 2 fois la même valeur dans la liste 2 ( possible car j'ai tout les valeurs en absolue)


    mon problème viens quand je donne des valeurs uniquement négative style "-12 -9 -87 -2", mon système ne trouve pas la valeur 2

    tout cela car j'ai mon second tableau qui est en valeur absolu.

    pour bien comprendre ce que je fais voici 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
    32
    33
    34
    35
     
    #!/usr/bin/env python3
    # coding=utf-8
     
     
    import sys
    import math
     
    tempo = []
    tempo2 = []
     
    resultat = 0
    n = int(input())  # le nombre de saisie a analyser
    if n==0:
        print(0)
    else :    
        for i in input().split():
            a = int(i)
            tempo.append(a)
            t = int(i)
        for i in range(len(tempo)):
            #permet d'avoir les valeurs absolue
            tempo2.append(abs(tempo[i]))
        tempo2.sort()   
        tempo.sort()
        print("tab1 : ",tempo)
        print("tab2 :",tempo2)
        idxTempo=tempo.index(tempo2[0])
        nbrTempo=tempo2.count(tempo2[0])
        print(idxTempo)
        print(nbrTempo)
        if nbrTempo==0:
            print(tempo[0])
        else:
            print(tempo2[0])
    j'ai tenté de faire de mettre ceci idxTempo=tempo.index(abs(tempo2[0])) ou idxTempo=abs(tempo.index(tempo2[0]))
    mais j'ai des erreur concernant abs(***) ce que je peux concevoir.

    merci pour vos piste.

  2. #2
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Salut.

    Beaucoup de complications inutiles pour faire cela.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> l = (-12, -9, -87, -2,)
    >>> abs_l = [abs(i) for i in l]
    >>> dist_min = min(abs_l)
    >>> indice = abs_l.index(dist_min)
    >>> valeur = l[indice]
    >>> valeur
    -2
    En l'état, cela ne sort qu'une valeur, il faudrait peut-être améliorer cela en prenant en compte les valeurs positives et négatives étant à équidistances du 0 (par ex s'il y a 2 et -2 dans l).

  3. #3
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 030
    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 : 4 030
    Par défaut
    Bonjour,

    Vu ICI,


  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 676
    Par défaut
    Salut,

    Citation Envoyé par lcrprod Voir le message
    merci pour vos piste.
    Si vous ne connaissez pas min, max,... vous devriez quand même savoir écrire une boucle comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> l = (-12, -9, -87, -2,)
    >>> m = l[0]
    >>> for x in l:
    ...     if abs(x) < abs(m):
    ...        m = x
    ...
    >>> print(m)
    -2
    >>>
    car c'est la façon la plus simple de traduire un algo qui balaie chaque élément d'une liste pour retenir la plus petite (grande) valeur (absolue) trouvée.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2003
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 37
    Par défaut
    Merci beaucoup pour vos réponses.

    le min est vraiment ce qu'il me fallait comme solution. a mon petit problème.

    en vous remerciant tous.

Discussions similaires

  1. Trouver le nombre le plus proche
    Par totot dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 07/06/2017, 17h12
  2. Réponses: 10
    Dernier message: 05/03/2013, 15h38
  3. Réponses: 2
    Dernier message: 18/11/2012, 11h25
  4. trouver une table a partir d une valeur
    Par chaky furtz dans le forum Langage SQL
    Réponses: 5
    Dernier message: 28/01/2008, 19h57
  5. Réponses: 2
    Dernier message: 16/04/2007, 11h53

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