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 :

intervalle tableau python


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2021
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2021
    Messages : 40
    Par défaut intervalle tableau python
    Bonsoir on me demande de concevoir un programme qui compte le nombre de valeurs comprises dans l'intervalle [4;12] et d'afficher ce nombre pour un tableau :


    Voici le petit programme que j'ai essayé de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tab=[17, 23, 5, 19, 7, 8]
    for i in range(0,5):
    tout = tab.count(tab[i]>4 or tab[i]<12)
    print("La somme est : ", tout)


    Malheursement il affiche rien de bon :

    "La somme est : 0"

    La fonction count() n'est donc pas la bonne solution ?

    A part : Comment faire saisir des valeurs dans un tableau/liste pour un utilisateur ? On utilise 'readline' ?
    Merci d'avance pour votre réponse, bonne soirée.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 811
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par BigSql Voir le message
    La fonction count() n'est donc pas la bonne solution ?
    Déjà pour utiliser un outil il faut le comprendre. La fonction count() a pour rôle de compter un truc dans un tableau. Il est alors évident que c'est elle qui se charge de la boucle. Autrement dit, si je veux compter les (par exemple) 18 du tableau, je demanderai un tab.count(18) et j'ai directement le résultat sans avoir besoin de me casser la tête à faire boucler i sur tab pour écrire tab.count(tab[i] == 18).
    Accessoirement si à chaque tour de boucle tu écrases le "tout" précédent par le count courant il est évident qu'à la fin de la boucle tu n'auras que le dernier count

    Autre détail: es-tu certain que tab[i] > 4 or tab[i] < 12 corresponde à la notion de "compris entre 4 et 12"???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    Bonjour,

    Vous n'avez pas besoin d'utiliser range pour énumérer une liste.
    C'est peut-être le moment d'étudier les lists comprehensions, une fois que vous aurez acquis les bases sur les listes et tout le reste.
    En fait, on veut filtrer une liste, puis compter les éléments qui répondent au critère, ça peut se résumer à une seule ligne de code avec les lists comprehensions,
    Cherchez des exemples et vous vous rendrez compte que l'exercice est beaucoup plus simple que vous le pensez.
    Un tuyau: il y a la fonction map aussi mais dans ce cas de figure ce n'est pas l'option privilégiée. Mais tôt ou tard vous pourriez la rencontrer dans le cadre de vos exercices.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 811
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par binarygirl Voir le message
    En fait, on veut filtrer une liste, puis compter les éléments qui répondent au critère, ça peut se résumer à une seule ligne de code avec les lists comprehensions,
    Déjà ce serait bien qu'il arrive à le faire en algo élémentaire, on verra pour la suite en temps utile...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2021
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2021
    Messages : 40
    Par défaut
    Bonjour, je vous remercie pour vos explications.
    J'ai donc mis "and" à la place de "or".
    Si je comprends bien, la fonction count() permet chercher un élément 'x' d'un tableau...
    Permet-il cependant de calculer une somme ? Par exemple calculer la somme des nombres négatifs d'un tableau/liste.

    J'ai donc garder la boucle range, j'ai enlevé cette fonction, et voici à quoi ressemble mon programme qui à l'air maintenant de bien fonctionner:
    ------------------------------------------------------------------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tab=[17, 23, 5, 19, 7, 8]
    nombre = 1
    for i in range(0,5):
    	if (tab[i]>4 and tab[i]<12):
    		nombre = nombre + 1
    print("Le nombre de valeurs est : ", nombre)
    --------------------------------------------------------------------------------------------------
    Résultat: Le nombre de valeurs est: 3

  6. #6
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 914
    Billets dans le blog
    7
    Par défaut
    Bonjour,
    Citation Envoyé par BigSql Voir le message
    J'ai donc garder la boucle range, j'ai enlevé cette fonction, et voici à quoi ressemble mon programme qui à l'air maintenant de bien fonctionner:
    ------------------------------------------------------------------------------------------------
    tab=[17, 23, 5, 19, 7, 8]
    nombre = 1
    for i in range(0,5):
    if (tab[i]>4 and tab[i]<12):
    nombre = nombre + 1
    print("Le nombre de valeurs est : ", nombre)
    --------------------------------------------------------------------------------------------------
    Résultat: Le nombre de valeurs est: 3
    Il ne fonctionne pas si bien que ça, comme tu peux le constater avec tab=[17, 23, 5, 19, 7, 8, 6]...
    Sinon,pourquoi boucler sur un range alors que l'on peut naturellement parcourir la list avec for? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tab=[17, 23, 5, 19, 7, 8]
    nbr = 0
    for i in tab:
        if 4 <= i >= 12: #bornes incluses
            nbr += 1
    print(nbr)

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 811
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par BigSql Voir le message
    Si je comprends bien, la fonction count() permet chercher un élément 'x' d'un tableau...
    Très exactement ça compte combien il y en a.

    Citation Envoyé par BigSql Voir le message
    Permet-il cependant de calculer une somme ? Par exemple calculer la somme des nombres négatifs d'un tableau/liste.
    Ben non, ça compte le nombre d'éléments, ça ne les additionne pas. Remarque, la somme des éléments c'est quelque part l'élément multiplié par le nombre de fois où on le trouve non?
    Sinon pour compter les négatifs, il y a sum() que tu peux associer à une liste en intension comme en a parlé binarygirl. Mais ce sera pour plus tard.

    Citation Envoyé par BigSql Voir le message
    J'ai donc garder la boucle range, j'ai enlevé cette fonction, et voici à quoi ressemble mon programme qui à l'air maintenant de bien fonctionner
    Mouais. Remplace par for i in range(0, len(tab)) au moins...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2021
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2021
    Messages : 40
    Par défaut
    D'accord, je vous remercie de m'avoir plus qu'aider.
    Je voudrai aussi savoir comment on calcule la somme de valeurs d'un tableau situé sur une même intervalle...
    Je vais essayer d'abord de trouver ceci par moi-même, donc impossible de faire ceci avec sum() si je comprends bien.

    Bonne soirée.

  9. #9
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 811
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par BigSql Voir le message
    donc impossible de faire ceci avec sum() si je comprends bien.
    Juste impossible pour toi car on peut mais il faut l'appliquer sur une liste en intension (et j'ai bien orthographié "intension"), qui est un mécanisme Python avancé permettant de générer à la volée un tableau à partir d'un autre. Donc tu écris le code de la liste en intension qui génère le tableau qui t'intéresse puis tu fais un sum() dessus.
    Mais comme tu ne connais pas encore les listes en intension...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 687
    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 687
    Par défaut
    Citation Envoyé par BigSql Voir le message
    Je voudrai aussi savoir comment on calcule la somme de valeurs d'un tableau situé sur une même intervalle...
    Au lieu de compter l'élément, on ajoute sa valeur à une variable qui représentera cette somme.

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

  11. #11
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2021
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2021
    Messages : 40
    Par défaut
    D'accord, je pense avoir fait un programme qui fonctionne pour ce type de problème...

    Je peux vous le montrer ?

  12. #12
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 687
    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 687
    Par défaut
    Citation Envoyé par BigSql Voir le message
    D'accord, je pense avoir fait un programme qui fonctionne pour ce type de problème...

    Je peux vous le montrer ?
    Vous pourriez vérifier qu'il fonctionne... avant plutôt que de "penser".

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

  13. #13
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2021
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2021
    Messages : 40
    Par défaut
    Il fonctionne pour moi:

    -----------------------------------------
    tab=[17, 23, 5, 19, 7, 8]
    somme = 0
    for i in tab:
    if i>= 4 and i<=12:
    somme += i
    print("La somme est : ", somme)

    -----------------------------------------
    Résultat: La somme est : 20

  14. #14
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    Ca tient la route. Vous faites ce qu'il faut faire: itérer la liste.

    En list comprehension ça donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum([i for i in tab if 4 <= i <= 12])
    Cette approche est considérée comme plus "Pythonesque" et plus succincte aussi.
    Si la liste est vide, ou que le nombre d'éléments répondant au critère est nul, alors vous aurez zéro comme résultat.

  15. #15
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 687
    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 687
    Par défaut
    Citation Envoyé par BigSql Voir le message
    Il fonctionne pour moi:
    C'est quand même quelques lignes assez basiques que vous devriez savoir écrire avant même de poster ici.
    Tout comme prendre le temps de vous familiariser avec la mise en forme des messages pour voir comment y inclure du code.

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

  16. #16
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 811
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par binarygirl Voir le message
    sum([i for i in tab if 4 <= i <= 12])
    Pas de crochets dans l'expression, sum() sait parfaitement traiter l'expression sans qu'il soit nécessaire de la convertir en liste => sum(i for i in tab if 4 <= i <= 12).
    Et c'est moins anondin que ce que l'on pourrait croire. En effet, si on crée la liste, alors elle est entièrement créée y compris si cela devient inutile à partir d'un certain point
    Exemple
    Code python : 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
    >>> def verif(n):
    ...     print(n)
    ...     return n == 5
    ... 
    >>> tab=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    >>> 
    >>> any([x for x in tab if verif(x)])
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    True
    >>> any(x for x in tab if verif(x))
    1
    2
    3
    4
    5
    True
    >>>
    Avec les crochets internes, tous les éléments ont été générés alors qu'en arrivant à l'élément 5, on a une certitude qui permet d'arrêter
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  17. #17
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2021
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2021
    Messages : 40
    Par défaut
    Bonjour, d'accord je vous remercie pour vos explications

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Extraire une valeur tableau Python
    Par Bangorroscoff dans le forum Général Python
    Réponses: 21
    Dernier message: 08/11/2022, 13h34
  2. [Python 3.X] [AIDE] Trouver des "voisins" dans un tableau python
    Par Tim._. dans le forum Général Python
    Réponses: 5
    Dernier message: 30/04/2021, 14h46
  3. passage de tableau python template et script jquery
    Par pat100 dans le forum jQuery
    Réponses: 4
    Dernier message: 19/09/2012, 11h59
  4. Tableau python tutoSwinnen
    Par pit0n dans le forum Général Python
    Réponses: 7
    Dernier message: 20/07/2011, 17h17
  5. conversion d'un fichier csv en un tableau python
    Par titou_170 dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 25/11/2010, 11h40

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