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 :

Liste et indexation


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Par défaut Liste et indexation
    Bonjour,

    j'ai quelques difficultés avec des exos basiques de python au niveau de la compréhension de l'énoncé .

    exercice 1 :

    erreurs = [['Alberta', 1965, 'avril', 6], ['Missouri', 1965, 'avril', 9]]

    Comment retrouver le jour et quelle expression calculerait ,à partir de 'erreurs' , le nombre de jours entre les deux dates ?

    Ma réponse : pour trouver le 9 avril
    >>> erreurs[1][3]
    9

    Mais le nombre de jours entre les deux dates :

    >>> erreurs[1][3] - erreurs[0][3]
    3



    Exercice 2 :

    Une liste est plate lorsqu'elle ne contient pas de sous-liste : quelle expression permettrait d'aplatir 'erreurs' , d'en faire une liste plate de 8 élèments ?

    Ma réponse est :

    >>>[erreurs[0][0]]+[erreurs[0][1]]+[erreurs[0][2]]+[erreurs[0][3]]+[erreurs[1][0]]+[erreurs[1][1]]+[erreurs[1][2]]+[erreurs[1][3]]

    ['Alberta', 1965, 'avril', 6, 'Missouri', 1965, 'avril', 9]


    Bonnes fêtes de fin d'année

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Par défaut
    Bonjour

    Exercice 1 :

    Ça n'a pas l'air mauvais. Par contre, pour le nombre de jour entre deux dates, cela tombe bien car les deux dates de l'exemple sont au même mois et à la même année.

    Je ne sais pas ou tu en es avec l'utilisation du module date mais, pour ce calcul, il faut :
    • Transformer tes date dans les sous liste en objets date
      (ce n'est plus "basique" à cause du mois en français)
    • Calculer la différence entre les deux dates avec une simple soustraction


    Exercice 2
    Mais pourquoi se casser la tête ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    erreur[0] + erreur[1]
    aplatit la liste

  3. #3
    Membre très actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Par défaut
    Merci pour ces précisions .Ce serait différent si les années et les mois n'étaient pas pareil . Comment on ferait ? L'année peut être bissextile , mais il y'a 12 mois dans une année .

    erreurs = [['Alberta', 1965, 'avril', 6], ['Missouri', 1985, 'mai', 9]]


    Sinon pour trouver l'expression rassemblant les noms des deux villes dans une nouvelle liste ?
    erreurs = [['Alberta', 1965, 'avril', 6], ['Missouri', 1965, 'avril', 9]]

    Ce serait la réponse :

    >>> [erreurs[0][0]]+[erreurs[1][0]]
    ['Alberta', 'Missouri']



    exercice 3 :

    Les listes plates (de profondeur 1) sont utilisées en calcul numérique , pour représenter les vecteurs ; la dimension d'un vecteur V est alors len(V) .
    Soit V = [] ; quelles instructions permettraient de remplir ce vecteur avec les seizes premiers entiers positifs , de 0 à 15 ?


    Ma réponse est :

    >>> V = []
    >>> for x in range(0, 15) : V = V + [x] ( c'est dans le cours , mais j'ai pas compris)

    >>> V
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]



    exercice 4 :

    Soit V = [] ; quelles instructions permettraient de remplir ce vecteur avec les carrés des seize premiers entiers positifs , de 1 à 16 ?


    ma réponse est incompléte :

    >>> V = []
    >>> for x in range(1, 16) : V = V + [x]

    >>> V
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Par défaut
    Sur Internet, il y a moyen de trouver comment calculer le nombre
    de jours entre deux dates.
    Sinon, Python dispose de classes prévues à cet effet.
    La seule petite difficulté ici est que le mois est donné en français. Mais, encore une fois, on peut facilement la lever. Ce n'est peut être plus du Python "basique" mais la solution reste élémentaire tout de même.

    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
     
    #!/usr/bin/env python
    # -*- coding:UTF-8  -*-
    import locale
    from datetime import datetime
     
    # Mettre la locale à la bonne valeur
     
    locale.setlocale(locale.LC_ALL,'French_France.1252')
     
    # Si l'environnement utilisateur de l'os est déja en français alors
    # l'instrunction précédente devient :
     
    ##locale.setlocale(locale.LC_ALL,'')
     
    erreurs = [['Alberta', 1965, 'avril', 6], ['Missouri', 1985, 'mai', 9]]
     
    # Première chose à faire : transformer les trois dernier éléments de chaque liste en datetime
    # avec la méthode ad hoc qui est strptime
     
    fconv = lambda x: datetime.strptime('-'.join(map(str,x[-3:])),'%Y-%B-%d')
     
    difference = fconv(erreurs[1]) - fconv(erreurs[0])
     
    print difference.days
    Note que si tu travaille en Python 3.x, il faut que tu utilise la fonction print et
    non la commande.

    Exercice 3

    A mon avis, ce que tu n'a pas bien saisi ici, c'est le rôle de l'opérateur +.
    En effet celui-ci ne sert pas qu'à additionner des nombre ou a concaténer des
    chaînes de caractères. Il sert aussi à concaténer des liste. Deuxième chose :
    dans l'exemple fourni, il manque juste l'élévation à la puissance deux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    V = []
    for x in range(0, 15) : V = V + [x**2]
    Sous Python 2.x, la fonction range retourne une liste, itérable avec un for (voir documentation). Sous Python 3.x, elle retourne un itérateur .
    Je ne sais si tu as déjà abordé cette notion.

    Un dernier petit conseil : Quand tu poste du code, utilise la balise prévue à cet effet et précise toujours ce que tu comprends pas.

  5. #5
    Membre très actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Par défaut
    Merci beaucoup pour tes conseils !en effet , les débutants ont tendances à zapper certaines choses

    Mais sinon pour l'exercice 3, çà dit que çà doit commencer de 1 à 16 .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> V = []
    >>> for x in range(1, 16) : V = V + [x**2]
     
    >>> V
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225]
    Donc si j'ai bien saisi , si on nous demande des instruction avec les seize premières puissance de 2 , de 15 à 0 ,décroissante de la gauche vers la droite ,la réponse serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> V = []
    >>> for x in range(15, 0) : V = V + [x**2]
    
    >>> V
    [] # mais cette liste ne renvoie rien , pourquoi ?

    Donc , pour créer une expression qui extrairait de V les 8 puissances les plus faibles , il suffit d'utiliser les index , et même la méthode split ? et je dois me servir de l'exercice 3 ,forcément .


    PS : un itérateur ,c'est quoi?
    je sais qu'une itération c'est une répétition .


    Sinon pour print , c'est juste utilisé pour une phrase ?

  6. #6
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Bonjour,
    Citation Envoyé par Kurodiam Voir le message
    Donc si j'ai bien saisi , si on nous demande des instruction avec les seize premières puissance de 2 , de 15 à 0 ,décroissante de la gauche vers la droite ,la réponse serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> V = []
    >>> for x in range(15, 0) : V = V + [x**2]
    
    >>> V
    [] # mais cette liste ne renvoie rien , pourquoi ?
    Dans ce cas il faut juste utiliser le troisième argument facultatif de range (cf doc).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> V = []
    >>> for x in range(15, 0, -1):
    	V = V + [x**2]
     
     
    >>> V
    [225, 196, 169, 144, 121, 100, 81, 64, 49, 36, 25, 16, 9, 4, 1]
    >>>
    Où, plus facilement:

    qui donne quelques explications et surtout les paramètres!!

    Citation Envoyé par Kurodiam Voir le message

    PS : un itérateur ,c'est quoi?
    je sais qu'une itération c'est une répétition .
    itérateurs

    En gros, juste une structure sur laquelle il est possible d'itérer!! ;-)
    ("Un objet Python générateur de séquences": Swinnen)

    Clodion

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

Discussions similaires

  1. Récupérer la liste des indexes d'une base
    Par Najdar dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 03/07/2008, 12h15
  2. Liste des index unique
    Par magboom dans le forum Débuter
    Réponses: 3
    Dernier message: 15/02/2008, 16h43
  3. Listes des indexes d'une base de de données
    Par The eye dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/01/2008, 11h55
  4. liste modifiable index -1
    Par samtheh dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/07/2007, 11h17

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