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 :

deux codes non fonctionnels


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2019
    Messages : 41
    Par défaut deux codes non fonctionnels
    Salut,

    J'ai beau les relire, je vois pas pourquoi ils ne fonctionnent pas.

    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
    fichier = input("Entrez un fichier duquel sera renvoyé la phrase la plus longue : \n")
     
    try:
        with open(fichier): pass        # on vérifie si le nom du fichier existe
    except:
        print("Le nom du fichier n'existe pas.")    # s'il n'existe pas, afficher un message d'erreur
     
    # on parcourt le fichier en mettant chaque phrase dans un élément de liste via la méthode readlines()
     
    file = open(fichier, 'r')           # on ouvre le fichier
    liste = file.readlines()            # on transfère chaque ligne dans une liste de chaînes
    file.close()                        # on referme le fichier
     
    max = 0     # on initialise le compteur pour la phrase max
    i = 0       # on initialise i
     
    while i < len(liste):       # tant que i est inférieur au nombre d'éléments de la liste
        if len(liste[i]) > max: # si la longueur de l'élément i de la liste est supérieur au max
            max = len(liste[i]) # alors le max est égal à celui-ci
        i=+1        # on boucle jusqu'à la fin de la liste
     
    print(max)    # on affiche le max
    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
    fichier = open('TablesMulti', 'w')
     
    def func():
        i, res = 2, 0       
        while i < 30:
            k=1
            while k < 20:
                res = i*k
                ch = str(i) + "*" + str(k) + "=" + str(res) + "\n"
                fichier.write(ch)
            k+=1
        i+=1
     
    func()
    fichier.close()
    Serait-il possible d'avoir des explications de votre part et non pas des réponses avec des codes valides ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    try:
        with open(fichier): pass        # on vérifie si le nom du fichier existe
    except:
        print("Le nom du fichier n'existe pas.")    # s'il n'existe pas, afficher un message d'erreur
    Tu peux remplacer ça par un if os.path.exists(chemin): et dessous tu ouvres le fichier else tu affiches un message d'erreur.


    Sinon ton deuxième code est mal indenté...
    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
    fichier = open('TablesMulti', 'w')
     
    def func():
        i, res = 2, 0       
        while i < 30:
            k=1
            while k < 20:
                res = i*k
                ch = str(i) + "*" + str(k) + "=" + str(res) + "\n"
                fichier.write(ch)
                k+=1
            i+=1
     
    func()
    fichier.close()

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 681
    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 681
    Par défaut
    Salut,

    Citation Envoyé par Matthieu_12 Voir le message
    J'ai beau les relire, je vois pas pourquoi ils ne fonctionnent pas.

    Serait-il possible d'avoir des explications de votre part et non pas des réponses avec des codes valides ?
    Le première chose que vous devez faire, c'est mettre des mots sur ce qui vous semble anormal.

    Car déjà si vous disiez "pourquoi ces programmes ne se terminent pas?" vous pourriez chercher ce qu'ils font.

    Dans le brouillard, ajouter des print de messages pour savoir jusqu’où çà arrive est une première étape.

    En général, çà vous amène à des boucles qui ne sortent jamais parce que les conditions de sortie ne sont pas réalisées... et dans une boucle tant que i < N, afficher i et N vous montre tout de suite ce qui ne va pas: l'incrémentation de l'indice.

    Ce qui va vous conduire à relire les instructions correspondantes et à essayer de comprendre pourquoi ce que vous avez écrit ne fonctionne pas.

    Tout çà pour découvrir que le boulot du programmeur n'est pas tant d'écrire du code mais de trouver des stratégies pour trouver ce qui ne fonctionne pas (car çà marche rarement du premier coup) et des méthodes de construction pour savoir où chercher (lorsque vos codes seront plus gros).

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

  4. #4
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2019
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2019
    Messages : 41
    Par défaut
    Merci pour vos réponses.
    C'était deux erreurs bien ridicules.
    La seconde était un problème d'indentation, merci LeNarvalo, et la première une erreur de signe (+= et non pas =+ !), merci Wiztricks.
    Je vais pouvoir bien dormir finalement.

  5. #5
    Membre chevronné
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    [CODE]
    Tu peux remplacer ça par un if os.path.exists(chemin): et dessous tu ouvres le fichier else tu affiches un message d'erreur.
    on préfère demander pardon que permission en python, c'est à dire on préfère faire un try except plutôt qu'une vérification. En effet rien ne nous garantie que le fichier ne sera pas effacé entre la vérification et la lecture.

    Par contre il faut toujours préciser quelque chose après un except sinon n'importe quelle erreur diras que le fichier est absent. Par exemple si le fichier existe bien mais que vous n'avez pas les droits pour l'ouvrir -> "Le nom du fichier n'existe pas." alors que si pourtant. (d'ailleurs c'est le fichier qui n'existe pas, pas son nom)

    on préfère utiliser des boucles for quand le nombre d'itération est connu, ici il l'est.
    Encore mieux on peut itérer sur l'object retourné par open

    vous définissez une variable max, bonne idée, le problème c'est que python possède déjà une function max de base, si vous renommer quelque chose max vous n'y avez plus accès

    la façon la pus "pythonique" serait selon moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try:
        with open(fichier, "r") as f:
            m = max(len(l.rstrip("\n")) for l in f)
            print(m)
    except FileNotFoundError:
        print("le ficher n'existe pas")

  6. #6
    Invité
    Invité(e)
    Par défaut
    J'aime pas utiliser try et except, je trouve ça moche sûrement à tord...

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

Discussions similaires

  1. [AC-2013] Code non fonctionnel
    Par Jiben59 dans le forum VBA Access
    Réponses: 5
    Dernier message: 31/03/2016, 12h39
  2. [TinyMCE] Changement de version et code non fonctionnel
    Par heretik25 dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 14/12/2011, 18h25
  3. [POO] Code non fonctionnel
    Par xclam dans le forum Langage
    Réponses: 4
    Dernier message: 05/04/2007, 10h01
  4. Code non fonctionnel sous Firefox
    Par linar009 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 24/07/2006, 16h13
  5. Code non fonctionnel sous IE
    Par Nip dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/06/2006, 14h59

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