Deutsch   English   Français   Italiano  
<62383555$0$8899$426a74cc@news.free.fr>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!cleanfeed2-a.proxad.net!nnrp5-1.free.fr!not-for-mail
Date: Mon, 21 Mar 2022 09:20:44 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
 Thunderbird/91.7.0
Subject: Re: fonction python qui ne se lance pas toute seule et dont 1/5
 marche
Content-Language: fr
Newsgroups: fr.comp.lang.python
References: <3rqdne8aYaZ4ya7_nZ2dnUU7_83NnZ2d@giganews.com>
 <623357f5$0$29483$426a74cc@news.free.fr> <t13hgh$18ii$1@gioia.aioe.org>
From: Nicolas <nicolasp@aaton.com>
In-Reply-To: <t13hgh$18ii$1@gioia.aioe.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Lines: 71
Message-ID: <62383555$0$8899$426a74cc@news.free.fr>
Organization: Guest of ProXad - France
NNTP-Posting-Date: 21 Mar 2022 09:20:37 CET
NNTP-Posting-Host: 195.101.33.1
X-Trace: 1647850837 news-2.free.fr 8899 195.101.33.1:50513
X-Complaints-To: abuse@proxad.net
Bytes: 3551

Bonjour,

Le 19/03/2022 à 04:09, Dominique a écrit :
> Le 17/03/2022 à 16:47, yves a écrit :
> 
>> Explorer lentement et méticuleusement les bases de l'input utilisateur en
>> Python:
>>
>> https://www.w3schools.com/python/python_user_input.asp
> 
> Bonjour,
> Je suis allé jeter un œil sur ce site. Quel est l'intérêt du "+" par 
> rapport à la virgule dans le print :
> 
> print("Username is: " + username)
> Username is: Test
> 
> print("Username is: ",username)
> Username is:  Test
> 
> Je ne vois, comme différence, qu'une espace avec le + dans le premier 
> cas, contre deux avec la virgule...
> 
Dans le cas présent, il n'y a effectivement qu'un espace de différence.
L'utilisation du "+" fonctionne parce que "username" est une chaine de 
caractères, Python permettant la concaténation de chaines de caractères 
avec l'opérateur "+".

Prenons un autre cas :
print ("Age utilisateur :", age) # age est un entier

Ici, utiliser "+" n'est pas possible car age n'est pas une chaine de 
caractères. On ne peut pas ajouter un entier à une chaine de caractères.

Pourquoi cela fonctionne avec une virgule ? C'est parce que la fonction 
print() affiche, pour chaque argument x :
- Lorsque x est une chaine de caractère, affiche x
- Lorsque x est n'est pas une chaine de caractères, affiche str(x)

L'exemple ci-dessus est donc équivalent à
print ("Age utilisateur :", str(age))

Ceci est valable pour tous les objets.

Pour aller plus loin, str(x) appelle x.__str__().
Tous les objets prédéfinis ont une méthode __str__ qui est appelée 
automatiquement lorsque str() est utilisée.
Pour une classe que l'on définit soit même, ont peut ajouter la méthode 
à la classe pour lui faire afficher ce que l'on veut :
def __str__(self):

Lorsque la méthode __str__ n'est pas définie, str(x) appelle la fonction 
repr(x) qui elle-même appelle la méthode x.__repr__() lorsqu'elle est 
définie.
Idem que pour __str__, on peut définir __repr__ soit même.
Lorsque __repr__ n'est pas définie, repr() affiche le nom et l'adresse 
de l'objet.

Les infos sont dans la doc officielle :
- print : https://docs.python.org/3/library/functions.html#print
- str   : https://docs.python.org/3/library/stdtypes.html#str
- repr  : https://docs.python.org/3/library/functions.html#repr

Bonne semaine

Nicolas

> Merci et bon weekend,
> 
> Dominique