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 :

Dessin avec turtle


Sujet :

Python

  1. #21
    Nouveau membre du Club
    Avatar de trx337
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2015
    Messages : 61
    Points : 32
    Points
    32
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par trx337 Voir le message
    on peut écrire comme ceci mais avec mille ou dix mille lignes , c'est absurde et on perd son temps
    Pièce jointe 486171
    Citation Envoyé par wiztricks Voir le message
    Si vous avez un million de caractères, vous les écrivez dans un fichier texte et vous le lisez via glou = n.read() comme vous l'avez fait un peu plus haut.

    Si vous voulez fabriquer une chaine de caractère littérale qui occupe plusieurs lignes, il ne faut pas de retour à la ligne avant que Python ait vu la fin de la chaine de caractères. C'est ce que raconte le message SyntaxError: EOL while scanning string literal.

    - W
    effectivement cette premiere méthode avec un fichier texte fonctionne bien
    j'ai l'impression donc que c'est la seule bonne méthode
    car mettre sur une seule ligne ce texte est absurde lorsque l'on est face à 10000 lignes

  2. #22
    Nouveau membre du Club
    Avatar de trx337
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2015
    Messages : 61
    Points : 32
    Points
    32
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par marco056 Voir le message
    et en mettant 3 guillemets au lieu d'une ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    glou = """ ...........
    ............
    ..........
    ........"""
    je l'ai fait , j'ai un message d'erreur :
    NameError: name ‘glou’ is not defined

  3. #23
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 294
    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 294
    Points : 36 790
    Points
    36 790
    Par défaut
    Citation Envoyé par trx337 Voir le message
    car mettre sur une seule ligne ce texte est absurde lorsque l'on est face à 10000 lignes
    Si on dit qu'il y a 10000 lignes, il faut bien qu'il y ait autant de fins de lignes alors que s'il n'y en a qu'une...
    Donc il n'y a rien d'absurde, juste savoir décrire ce qu'on veut (des lignes ou pas) et en tenir compte lorsqu'on part à coder car çà aura des conséquences à prendre en compte.

    - W

  4. #24
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    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 720
    Points : 31 037
    Points
    31 037
    Billets dans le blog
    1
    Par défaut
    On peut créer une chaine de caractères multi-lignes de plusieurs façons
    Exemple
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    glou="Hello"\
    + "world"
    print(glou)
    Ici on protège le caractère "fin de ligne" pour ne pas qu'il soit traité comme une fin d'instruction

    Exemple
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    glou=(
    	"Hello"
    	+ "world"
    )
    print(glou)
    Ici on met des parenthèses pour regrouper l'opération.

    On doit pouvoir en trouver d'autres (m'étonne d'ailleurs que les triples quotes n'aient pas fonctionné car chez-moi ce code
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    glou="""
    Hello
    World
    """
    print(glou)
    fonctionne).

    Toutefois, toutes ces méthodes doivent aussi parfois s'effacer devant un peu de réflexion. Autant écrire deux/trois lignes peut avoir un sens et une raison dans un code, autant crer une chaine de 10000 lignes, même si c'est possible, semble un peu étonnant. Est-il vraiment nécessaire de stocker 10000 lignes en dur dans une variable ? Est-ce évolutif (si demain la 8745° ligne doit changer, ce changement sera-t-il aisé) ? Que faire de cette variable une fois remplie ? Ne peut-on pas avoir le même résultat en s'appuyant sur des solutions plus dédiées à ce genre de données (fichier, bdd, etc) ?
    Un bon code ce n'est pas seulement un code qui fonctionne mais c'est aussi un code qu'on peut relire et faire évoluer facilement.

    Surtout que des solutions alternatives existent. On peut par exemple créer un fichier texte "toto" contenant les 10000 lignes et si on veut ensuite les stocker dans "glou", suffit de lire et concaténer
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    glou=""
    with open("toto", "r") as fp:
    	for l in fp: glou+=l
    print(glou)

    Et si besoin on peut aussi s'appuyer sur des librairies externes. Telle "json" qui peut gérer des données structurées ou "sqlite" (intégrée en natif) qui contient un moteur complet de gestion bdd. On peut créer des tables, des index, faire du requêtage SQL. Bref autant d'outils puissants permettant de traiter facilement une data de 10000 lignes...

  5. #25
    Nouveau membre du Club
    Avatar de trx337
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Décembre 2015
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2015
    Messages : 61
    Points : 32
    Points
    32
    Billets dans le blog
    1
    Par défaut
    merci pour cette réponse très précise; après une nuit agitée , ce matin j'ai tout compris
    le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    glou="""
    Hello
    World
    """
    print(glou)
    a fini par fonctionné
    en fait j'avais une erreur dans le chemin de mon import

    si j'emploie une chaine aussi longue c'est parce que c'est un génome de bactérie
    et les génomes peuvent être d'une longueur xxl

Discussions similaires

  1. Dessiner avec wxWidgets
    Par SuperPat dans le forum wxWidgets
    Réponses: 5
    Dernier message: 24/02/2009, 00h06
  2. Le dessin avec VC dans une fenetre windows
    Par ccensam dans le forum MFC
    Réponses: 3
    Dernier message: 03/11/2005, 23h40
  3. Création dessin avec données saisies
    Par javajay dans le forum 2D
    Réponses: 5
    Dernier message: 26/10/2005, 02h55
  4. Réponses: 1
    Dernier message: 26/02/2005, 12h55

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