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 :

syntaxe max, ,


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Octobre 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut syntaxe max, ,
    Bonjour,

    Je débute en Python en suivant le livre de Swinnen, et en p56 il y a un exemple avec la ligne 5 que je ne comprends pas bien .... et plus particulièrement la syntaxe : max, .... , .....

    Une bonne âme pourrait elle m'expliquer cette ligne ?

    Merci d'avance et bonne journée à tous

    ----------------------

    1 print("Ce script recherche le plus grand de trois nombres")
    2 print("veuillez entrer 3 nombres séparés par des virgules")
    3 ch=input()
    4 nn=list(eval(ch))
    5 max, index=nn[0],'premier'
    6 if nn[1]> max:
    7 max=nn[1]
    8 index='second'
    9 if nn[2]>max:
    10 max=nn[2]
    11 index = 'troisième'
    12 print("Le plus grand de ces nombres est",max)
    13 print("ce nombre est le ",index," de la liste")

    --------------------------------

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Cette ligne max, index=nn[0],'premier' est l'équivalent de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    max = nn[0]
    index = premier'

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Octobre 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci de cette rapide réponse from Belgique...

    c'est bien ce que je pensais, mais pourrais tu m'expliquer brièvement cette syntaxe max, ..., ...

    Se suffit elle à elle même ou est ce qu'elle dépend des lignes de code précédentes ?
    Peut on généraliser cette syntaxe ?
    peut on l'avoir avec d'autre fonction ?

    et toujours merci d'avance de prendre du temps pour moi ...

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par kikielo3000 Voir le message
    mais pourrais tu m'expliquer brièvement cette syntaxe max, ..., ...
    Il t'a donné un exemple, tu aurais pu en tirer tout seul l'explication correspondante !!!
    Ca te permet d'affecter en une seule instruction plusieurs valeurs dans plusieurs variables (une valeur par variable). Son fonctionnement est basé sur le packing/unpacking de tuples
    Tu auras noté j'espère qu'un tuple se définit par des valeurs séparées par une virgule et non par des parenthèses. Ainsi i=2, 3 définit "i" comme un tuple tandis que j=(2) reste un simple entier (les parenthèses permettent toutefois d'expliciter et clarifier la notion de tuple => i=(2, 3) est plus explicite que i=2, 3).

    Ainsi l'exemple (x, y, z)=(1, 2, 3) qui met en jeu deux tuples affectera alors "1" dans "x", "2" dans "y" et "3" dans "z". Mais ça reste généralement du gadget car dans 99% des cas, on peut écrire les affectations de façon individuelle.

    Le seul moment où ça devient utile c'est pour un échange de valeurs. Ainsi un échange de "x" et "y" qui devrait, dans beaucoup d'autres langages passer par une variable intermédiaire "tmp" s'écrira en Python assez facilement avec (x, y)=(y, x).

    Ici l'auteur a utilisé cette écriture pour "montrer" au lecteur une liaison forte entre le remplissage de la variable "max" et celui de la variable "index" (les deux variables vont ensembles et doivent évoluer ensembles).

    Citation Envoyé par kikielo3000 Voir le message
    peut on l'avoir avec d'autre fonction ?
    Là je reste sec. De quelle fonction parles-tu ?
    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]

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Octobre 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    merci de ta réponse détaillée et pédagogue,

    en fait ce qui me gène (en tant que débutant, novice mais très motivé) c'est qu'il n'y a pas de signe d'affectation entre "max" et "index=..." puis entre "index=..." et "'premier'".
    Cette syntaxe de type a,b,c voudrait dire que j'affecte b à la variable a et c à la variable b !

    l'explication avec les exemples de tuple ne m'aide pas car dans ces cas j'ai bien un signe d'affectation : (x,y,z) = (1,2,3) ou i = (1,2) ou i = 1,2 c'est exemples je les comprends bien.

    donc dans l'exemple "max" serait égal à "index" (auquel on a la valeur nn[0])
    MAIS alors et c'est là que j'ai du mal à comprendre on a affecté la valeur nn[0] à la variable index et on affecterait en même temps "premier" à la variable "index" !!!!

    je sèche ...

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par kikielo3000 Voir le message
    Cette syntaxe de type a,b,c voudrait dire que j'affecte b à la variable a et c à la variable b !
    Non. Dans (a, b, c)=(1, 2, 3) l'affectation "=" sépare deux groupes (a, b, c) d'un côté et (1, 2, 3) de l'autre (groupes ayant le même nombre d'éléments).
    Tu prends alors le premier élément du groupe de droite "1" qui sera affecté au premier élément du groupe de gauche "a". Ensuite pareil pour le second "2" qui ira dans "b" et pareil pour le 3° "3" qui va dans "c".
    C'est la même chose avec a, b, c=1, 2, 3 sans parenthèse (les parenthèses pour un tuple simple ne sont pas obligatoires mais j'espère que tu commences à remarquer que leur présence clarifie souvent la lecture).

    Citation Envoyé par kikielo3000 Voir le message
    l'explication avec les exemples de tuple ne m'aide pas car dans ces cas j'ai bien un signe d'affectation : (x,y,z) = (1,2,3)
    Et tu n'as pas d'affectation dans l'instruction max, index=nn[0], "premier" ? Moi je vois pourtant bien la présence d'un signe "=". Mais cela sera peut-être plus clair si tu écris (max, index)=(nn[0], "premier") avec des parenthèses explicites...

    Citation Envoyé par kikielo3000 Voir le message
    donc dans l'exemple "max" serait égal à "index" (auquel on a la valeur nn[0])
    (max, index)=(nn[0], "premier") signifie que la variable "nn[0]" va dans la variable "max" (simple copie de valeurs de variables) tandis que la chaine "premier" va dans la variable "index".
    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
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Octobre 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci tout s'éclaire !

    En fin de compte je dois être un peu fatigué car maintenant c'est évident.

    Pour simplifier, je voyais a,b,c avec b = "index=nn[0]
    alors qu'en fait il fallait voir a,b = c,d je suis confus de cette illusion d'optique de très jeune débutant (de 50 ans...),

    merci de votre patience à tous

    Pour moi le sujet est clos.

Discussions similaires

  1. Max ou Min de Sumifs probleme de syntaxe?
    Par draynaud dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/03/2018, 16h30
  2. Syntax error sur fonction max
    Par the java lover dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 07/08/2008, 13h46
  3. [MySQL] Récuperer la valeur d'un select max() en php - Syntaxe
    Par skystef dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/05/2008, 00h40
  4. Syntaxe MAX() mysql
    Par jmarey dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 30/05/2007, 22h36
  5. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38

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