Path: ...!news.mixmin.net!aioe.org!FdrTMw7+RJa5kGNwdwd/KQ.user.46.165.242.91.POSTED!not-for-mail From: Dominique Newsgroups: fr.comp.lang.python Subject: Re: fonction python qui ne se lance pas toute seule et dont 1/5 marche Date: Tue, 22 Mar 2022 20:25:26 +0100 Organization: Aioe.org NNTP Server Message-ID: References: <3rqdne8aYaZ4ya7_nZ2dnUU7_83NnZ2d@giganews.com> <623357f5$0$29483$426a74cc@news.free.fr> <62383555$0$8899$426a74cc@news.free.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Info: gioia.aioe.org; logging-data="46540"; posting-host="FdrTMw7+RJa5kGNwdwd/KQ.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org"; User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 Content-Language: fr X-Notice: Filtered by postfilter v. 0.9.2 Bytes: 3665 Lines: 71 Le 21/03/2022 à 09:20, Nicolas a écrit : > 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 pour ces précisions et liens, Nicolas :-)