Dm info python
Répondre à la discussion
Page 1 sur 4 12 3 DernièreDernière
Affichage des résultats 1 à 30 sur 104

Dm info python



  1. #1
    invite4c80defd

    Dm info python


    ------

    Bonsoir,
    En faisant des exercices sur des fonctions à programmer en python, j'ai rencontré des problèmes.
    Voici l'énoncé du premier
    "programmez une fonction qui prend en argument un nom de fichier et qui calcule la liste des caractères alphabétiques apparaissant dans le fichier. (Vous pouvez utiliser la méthode .isalpha() pour savoir si un caractère est alphabétique.)"
    Je pensais commencer comme ceci (je n'ai pas encore beaucoup d’expérience sur les fichiers, aussi pardonnez-moi les erreurs..)

    Code:
    def lettres(nom_fichier):
        f=open(fichier)
        tab=f.readlines()
        f.close()
        chaine="".join(tab)  
        liste=[]
        i=0
        
        while chaine[i]!=chaine[i].isalpha():
            i=i+1
            
        liste[0]=chaine[i]
    
        for j range(i,len(chaine),1) :
            if chaine[j].isalpha():
                if chaine[j-1]!=liste[j]:
                    liste[j]=chaine[j]
        print("la liste des caractères alphabétiques du fichier est: ")
        return liste

    je ne sais pas si ça fonctionne car je ne sais pas trop comment utiliser la procédure isalpha() avec la chaine.
    Que dites vous de ce programme ?

    Merci pour vos conseils

    -----

  2. #2
    Jack
    Modérateur

    Re : Dm info python

    Je ne connais pas grand chose à python, mais quand j'ai un soucis de cet ordre avec un autre langage, la première chose que je fais est d'écrire le programme et de le tester.
    Que penses-tu de cette méthode révolutionnaire?
    Dernière modification par Jack ; 29/03/2013 à 21h56.

  3. #3
    invite4c80defd

    Re : Dm info python

    je l'aurais bien testé mai je n'est pas de fichier texte que je pourrais faire tester à python (ou du moins je ne sais pas comment trouver ni créer un fichier compatible)

  4. #4
    Jack
    Modérateur

    Re : Dm info python

    Tu peux créer un fichier texte avec n'importe quel éditeur, le bloc note de windows par exemple.

  5. A voir en vidéo sur Futura
  6. #5
    invite4c80defd

    Re : Dm info python

    j'ai essayé mais quand je lance python avec le nom de mon fichier, ça ne fonctionne pas...

  7. #6
    Jack
    Modérateur

    Re : Dm info python

    je précise à nouveau, je ne connais pas python. Ce qui m'étonne dans ce code, c'est de ne pas voir ou le nom physique du fichier est spécifié.

    A+

  8. #7
    invite43901482

    Re : Dm info python

    qui calcule la liste des caractères alphabétiques apparaissant dans le fichier
    Qui calcule? Depuis quand on calcule une liste? ça veut rien dire!

    Donne un exemple sur une simple chaîne de caractères de ce que veut ton professeur.

    Pourquoi utiliser readlines?

    Code:
    for line in f:
        print(line)
    la première chose que je fais est d'écrire le programme et de le tester.
    Il me semble avoir écrit la même chose sur ce même forum à cette même personne. Je crois que le baobab va s'implanter tout seul dans sa main.

  9. #8
    invite4c80defd

    Re : Dm info python

    juste quelques précisions:
    1. voici l'énoncé complet délivré par mon prof d'info (je ne l'ai pas inventé !):
    "Préliminaire : programmez une fonction qui prend en argument un nom de fichier et qui calcule la liste des caractères alphabétiques apparaissant dans le fichier. (Vous pouvez utiliser la méthode .isalpha() pour savoir si un caractère est alphabétique.)"

    2. "la première chose que je fais est d'écrire le programme et de le tester.": j'ai essayé d'en faire un comme j'ai pu: vu l'avez dans mon premier message. De plus, pour le tester , il faut avoir un fichier à tester: comme Jack me l'a dit, j'ai écrit dans le bloc notes de windows mais lors de l'appel à la fonction, mon fichier appelé "test" n'est soit disant pas défini alors excusez-moi si je ne travaille pas mais ...

    Je pense de plus que vous serez plus qualifiés que moi pour comprendre la fonction demandée mais on demande une liste de toutes les lettres de l'alphabet que l'on rencontre en parcourant le fichier il me semble

  10. #9
    invite4c80defd

    Re : Dm info python

    Je suis désolé de m'énerver aussi vite mais le fait de dire que je ne travaille pas n'est pas justifié.
    Pour répondre à Fred1599, j'ai voulu essayé d'utiliser readlines pour avoir le fichier dans une liste , maintenant , ce n'est peut etre pas la meilleure facon de procéder, je le reconnais bien , mais e préfererais de loin des conseils ce qui va et ce qui ne va pas sur mon code plutôt que des critiques d'entrée

    Merci

    pour votre question, j'ai oublié en recopiant dans open(fichier) de mettre open(nom_fichier)
    Merci de me le faire remarquer.

  11. #10
    Jack
    Modérateur

    Re : Dm info python

    Tu n'as pas répondu à ma question. Ou se trouve la ligne permettant de définir le nom du fichier physique?

  12. #11
    Jack
    Modérateur

    Re : Dm info python

    Nos posts se sont croisés.

    Il n'y a pas moyen de tester si l'ouverture s'est bien passée en testant f par exemple?

  13. #12
    Chanur

    Re : Dm info python

    Bonjour,
    Ton fichier "test" ne s'appellerait-il pas "test.txt", en réalité ? ("option des dossiers" / "affichage" / décocher la case "masquer les extension des noms de fichiers dont le type est connu").
    Mais c'est une simple hypothèse, et en supposant que tu passe effectivement le nom de ton fichier à python, qui ne peut de toutes façon pas le deviner.
    A+
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  14. #13
    invite4c80defd

    Re : Dm info python

    Ah oui, c'est en effet possible. Je vais essayer, merci

  15. #14
    invite43901482

    Re : Dm info python

    Dans le cas de ton problème, si j'ai bien compris, c'est de tester caractère par caractère et d'ajouter chaque nouveau caractère dans une liste, si déjà dans la liste on ne fait rien. C'est ça?

  16. #15
    invite4c80defd

    Re : Dm info python

    je crois bien que c'est ça.

    NB: je suis bien d'accord avec vous: la question est formulée d'une drôle de façon
    J'ai appris ce matin que la procédure chaine[i].isalpha() renvoie True si la caracetre est alphabétique , c'est correct ?

    Avec ce lien : "http://www.lama.univ-savoie.fr/~hyvernat/Enseignement/1213/info224/devoir-maison.html" , vous devriez pouvoir voir le sujet en principe

  17. #16
    invite4c80defd

    Re : Dm info python

    J'ai essayé de modifier mon programme mais sans succès car il m'affiche pour ma boucle tant que "out of range". et je n'arrive pas à résoudre ce souci

    Merci

  18. #17
    Jack
    Modérateur

    Re : Dm info python

    Code:
        while chaine[i]!=chaine[i].isalpha():
    je ne comprends pas la logique de ta boucle: chaine[i] est un caractère, chaine[i].isalpha() est un booléen. Comment peut-on comparer les deux? Autrement dit, je ne vois pas bien ce que tu cherches à comparer un caractère avec le fait qu'il soit alphanumérique ou pas. Pas étonnant de tomber sur des boucles infinies.

    A+

  19. #18
    invite4c80defd

    Re : Dm info python

    en fait, je voulais que le premier terme de la liste de sortie (liste des caracteres alphabétiques du fichier) soit la première lettre de l'alphabet rencontrée dans le fichier, c'est-a-dire que je commence a remplir ma liste finale pour la premier lettre valide rencontrée
    mais je ne pense pas que cela soit tres efficace..

  20. #19
    Jack
    Modérateur

    Re : Dm info python

    Alors pourquoi pas simplement ?
    Code:
    while !chaine[i].isalpha():
        i++
    J'ajouterais également une condition évitant d'explorer au delà du dernier caractère

  21. #20
    invite4c80defd

    Re : Dm info python

    i++ signfie i=i+1 ? (je demande car je ne l'ai jamais utilisé )
    de plus , le signe "=" n'est pas obligatoire ?

  22. #21
    Jack
    Modérateur

    Re : Dm info python

    Citation Envoyé par Isis-mirka Voir le message
    i++ signfie i=i+1 ? (je demande car je ne l'ai jamais utilisé )
    de plus , le signe "=" n'est pas obligatoire ?
    oui, pardon, je ne connais pas trop la syntaxe de python . Il faut rempacer i++ par i = i+1

  23. #22
    invite4c80defd

    Re : Dm info python

    ce n'est pas grave.
    Le probleme, c'est que le code qui suit une fois executé m'affiche "syntax error",


    Code:
    while !chaine[i].isalpha():
        i++
    celui-ci ne fonctionne aps non plus, je ne comprend pas pourquoi
    Code:
    while =!chaine[i].isalpha():
        i++
    Comment pourrais-je répondre à cette question en contournant ce problème ?

  24. #23
    Jack
    Modérateur

    Re : Dm info python

    tu as toujours le i++ qu'il faut remplacer

  25. #24
    invite4c80defd

    Re : Dm info python

    je l'ai fais mais c'est juste apres le while que ça coince

  26. #25
    invite43901482

    Re : Dm info python

    Bon moi je choisirais le dico pour afficher les caractères et leur nombre dans le fichier.

    Sur l'interpréteur en 3 minutes

    Code:
    >>> dico = {}
    >>> with open("IHM.py", "r") as f:
    ...     for line in f:
    ...         for char in line:
    ...             if char not in dico:
    ...                 dico[char] = 0
    ...             else:
    ...                 dico[char] += 1
    ... 
    >>> dico
    {'\n': 90, ' ': 705, '"': 23, "'": 3, ')': 62, '(': 62, '+': 1, ',': 20, '.': 85, '1': 1, '0': 3, '4': 2, ':': 16, '=': 22, 'A': 4, 'C': 2, 'B': 7, 'E': 4, 'G': 6, 'I': 2, 'H': 2, 'M': 5, 'L': 18, 'N': 2, 'Q': 31, 'P': 7, 'S': 2, 'W': 17, 'V': 0, '[': 0, ']': 0, '\\': 0, '_': 54, 'a': 82, 'c': 38, 'b': 31, 'e': 182, 'd': 110, 'g': 42, 'f': 96, 'i': 115, 'h': 6, 'k': 1, 'm': 18, 'l': 120, 'o': 105, 'n': 103, 'p': 27, 's': 142, 'r': 43, 'u': 37, 't': 123, 'w': 30, 'v': 6, 'y': 18, 'x': 21}
    IHM.py est un exemple de fichier...

    Si tu veux juste placer les caractères dans une liste

    Code:
    >>> liste = []
    >>> with open("IHM.py", "r") as f:
    ...     for line in f:
    ...         for char in line:
    ...             if char not in liste:
    ...                 liste.append(char)
    ... 
    >>> liste
    ['f', 'r', 'o', 'm', ' ', 'P', 'y', 'Q', 't', '4', '.', 'G', 'u', 'i', 'p', 'A', 'l', 'c', 'a', 'n', ',', 'M', 'W', 'd', 'w', 'H', 'B', 'x', 'L', '\n', 'g', 'e', 'b', 'E', 's', 'h', 'C', 'S', 'I', 'N', '(', ')', ':', '_', '=', '0', '1', '"', 'v', 'V', 'k', '+', "'", '[', '\\', ']']

  27. #26
    Jack
    Modérateur

    Re : Dm info python

    Il faut rechercher la syntaxe de while. Tu as essayé:
    Code:
    while chaine[i].isalpha() == False:
        i = i+1

  28. #27
    invite43901482

    Re : Dm info python

    avec isalpha

    Code:
    >>> liste = []
    >>> with open("IHM.py", "r") as f:
    ...     for line in f:
    ...         for char in line:
    ...             if char.isalpha() and char not in liste:
    ...                 liste.append(char)
    ... 
    >>> liste
    ['f', 'r', 'o', 'm', 'P', 'y', 'Q', 't', 'G', 'u', 'i', 'p', 'A', 'l', 'c', 'a', 'n', 'M', 'W', 'd', 'w', 'H', 'B', 'x', 'L', 'g', 'e', 'b', 'E', 's', 'h', 'C', 'S', 'I', 'N', 'v', 'V', 'k']

  29. #28
    invite4c80defd

    Re : Dm info python

    ah oui , je' n'ai pas pensé à décomposer en ligne puis dans la ligne a décomposer pour chaque caractères avec "for char in line".
    Votre ligne " with open("IHM.py", "r") as f: " et en fait l'équivalent de f=open(fichier,"r") ou a-t-elle des fonctions différentes ?

    Merci beaucoup

  30. #29
    invite43901482

    Re : Dm info python

    with open à l'avantage d'éviter le close en fin de programme, il est donc "safe" comparé à open.

    Maintenant si vous utilisez open, surtout pour écrire, n'oubliez pas la méthode close( ), sinon vos modifications ne seront pas prise en compte.

  31. #30
    invite4c80defd

    Re : Dm info python

    ok je comprend mieux pourquoi il n'y avait pas de close() dans votre code, merci pour cette info.

    Dans la question suivante, on me dit qu'il modifier la focntion pou r qu'elle ne fasse pas la différence entre minuscules et majuscules mais n'est-ce pas déjà le cas ? ( aurions-nous mal compris la question 1 ?) je dirais à mon prof que cet énoncé est très mal expliqué...

Page 1 sur 4 12 3 DernièreDernière

Discussions similaires

  1. Python
    Par invitee851a923 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 10/12/2012, 05h25
  2. Besoin d'avis Master info ou bio-info ??? je suis perdue
    Par invitece52300a dans le forum Orientation après le BAC
    Réponses: 2
    Dernier message: 26/02/2012, 10h01
  3. Transformer une info LED en info négative ?
    Par invite6f3e0bd5 dans le forum Électronique
    Réponses: 2
    Dernier message: 18/09/2009, 22h56
  4. Python
    Par invite3e3c726d dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 13/03/2009, 11h55
  5. Licence Math-info >> DUT info
    Par invitedcc7860a dans le forum Orientation après le BAC
    Réponses: 5
    Dernier message: 10/02/2009, 15h24