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 :

Traduire une ligne arithmétique en français courant


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 117
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 117
    Par défaut Traduire une ligne arithmétique en français courant
    Bonsoir,

    je suis face à cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.bmsg.set("# Beats %s" % (self.beatcount + 1))
    et sachant que j'ai self.bmsg=StringVar(() et que le symbole % correspond au reste d'une division euclidienne, je me demande où se cache le premier terme de la division : "# Beats %s" ?
    Ce bout encadré de double quotes fait plutôt penser à l'affichage d'une string genre "# Beats = une_valeur", non ?

    Par ailleurs, sachant que Python est extrêmement sensible à la typographie, est-ce que l'espace surnuméraire dans la partie entre parenthèses a une importance (self.beatcount + 1) ? ( : le forum transforme les deux espaces entre t et + par un seul, désolé... Du coup, je me fends d'une image de la ligne :
    Nom : double-espace.png
Affichages : 222
Taille : 3,4 Ko)

    Pour info, j'ai aussi, au démarrage d'un timer, une initialisation self.bmsg.set('# Beats 1'), et le code complet se trouve sur cette page : https://www.mellowood.ca/countbeats/index.html

    Merci pour les retours,

  2. #2
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    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 : 923
    Billets dans le blog
    8
    Par défaut
    Bonjour,

    "# Beats %s" % (self.beatcount + 1) formate une string...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> "# Beats %s" %5
    '# Beats 5'
    >>>

  3. #3
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 193
    Billets dans le blog
    47
    Par défaut
    Bonsoir,

    formatage des chaînes de caractères en Python, méthode old school Le formatage originel

  4. #4
    Invité
    Invité(e)
    Par défaut
    Les espaces n'ont pas d'importance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> x   =        (    10+   5 -3)    *    3.14
    >>> x
    37.68

  5. #5
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 117
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 117
    Par défaut
    OK merci et donc j'avais tout faux avec mon histoire de division euclidienne.

    Allez hop !,

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    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 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Jipété Voir le message
    Par ailleurs, sachant que Python est extrêmement sensible à la typographie
    Pas sensible à la typographie mais sensible à la même verticalité de lignes. Toutes les lignes placées à la même verticale appartiennent au même bloc de travail.
    Ainsi...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if True:
       print("ok1")
       print("ok2")
    ... ne sera pas la même chose que
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if True:
       print("ok1")
      print("ok2")
    (un espace de moins pour ok2 => erreur d'indentation)

    Mais ceci...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if True:
       print("ok1")
       print("ok2")
     
    if True:
            print("ok3")
            print("ok4")
    ... même si c'est pas super agréable à lire, reste fonctionnel.

    Pour les espaces interne aux instructions (ex print__________________________("ok2")) pareil, pas super lisible mais pas d'importance pour Python (j'ai mis des "_" parce que le forum supprime les espaces de trop mais il faut y voir ici des espaces). Et pour la verticalité des lignes, perso je préfère les tabulations, moins de risque de se planter.

    Citation Envoyé par Jipété Voir le message
    donc j'avais tout faux avec mon histoire de division euclidienne.
    Oui et non. Python est 100% objet. Les opérateurs sont donc vus comme des actions associées à deux objets. Et l'action codée dans l'opérateur est donc au choix du créateur de l'objet. Si un débile décide d'inventer son propre objet mathématique dans lequel l'opérateur ">" représente une multiplication, il le peut. Et toi tu te demanderas pourquoi 2>3 donne 6
    L'opérateur "%" a le rôle de division euclidienne pour des objets numériques, et d'associateur entre texte et expression pour les strings. De même l'opérateur "+" additionnera des nombres et concatènera des chaines (et des tuples et des listes). Et tu pourras trouver d'autres exemples qui ont tous une logique valable dans leur point de vue. Par exemple l'objet "pathlib.Path" permet de manipuler des chemins. Il contient l'opérateur "/" (division mathématique) qui dans sa logique, symbolise le changement de dossier
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> import pathlib
    >>> pathlib.Path("/") / "usr" / "lib" / "xorg" / "module"
    PosixPath('/usr/lib/xorg/module')

    Ensuite il y a ceux qui se sentent pas à l'aise avec ces opérateurs et qui préfèrent une méthode explicite. Pour ça, Python3 a apporté aux strings la méthode "format" ("# Beats {0}".format(self.beatcount + 1)) ainsi que (et c'est bizarre que LeNarvalo, un de ses plus grands fan , n'en ait pas parlé) les f-strings qui permettent d'inclure directement l'expression dans la string (f"# Beats {self.beatcount + 1}").
    Et pour pathlib il y a joinpath (qui a ma préférence sur le "/") => pathlib.Path("/").joinpath("usr", "lib", "xorg", "module").
    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]

  7. #7
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 117
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 117
    Par défaut
    Ok, merci pour tout (ton joinpath a l'air sympa, )

    Bon dimanche,

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

Discussions similaires

  1. Traduire en langage humain une ligne un peu ésotérique
    Par Jipété dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 03/02/2017, 00h19
  2. [Batch] Copier le fichier .bat courant vers un répertoire et supprimer une ligne
    Par Memphis27 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 04/10/2016, 14h03
  3. Réponses: 9
    Dernier message: 12/08/2002, 07h38
  4. [TP]lire une ligne de l'ecran et la stocker dans une chaine
    Par Bleuarff dans le forum Turbo Pascal
    Réponses: 26
    Dernier message: 02/07/2002, 10h08
  5. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 15h23

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