Path: csiph.com!feeder.erje.net!1.eu.feeder.erje.net!news.roellig-ltd.de!open-news-network.org!poup.poupinou.org!news.izac.org!reader From: Benoit Izac Newsgroups: fr.comp.lang.python Subject: Re: conflit entre modules ? surcharge de sqrt Date: Sun, 14 Jan 2018 11:46:09 +0100 Message-ID: <87bmhwzpji.fsf@izac.org> References: <5a5b2e78$0$4843$426a74cc@news.free.fr> Reply-To: benoit.izac@free.fr Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Injection-Info: keg.izac.org; logging-data="7178"; mail-complaints-to="usenet@izac.org" Xref: csiph.com fr.comp.lang.python:3012 Bonjour, Le 14/01/2018 à 11:18, Fabrice a écrit dans le message <5a5b2e78$0$4843$426a74cc@news.free.fr> : > je suis débutant en Python mais pas en programmation (j'ai fait du C++) > J'aimerai calculer la racine carré d'un réel dans un programme > utilisant aussi des complexes. > > je fais : > > from math import * > from cmath import * > if sqrt(2)<3: > print('oui') > > et j'ai une erreur : > TypeError: unorderable types: complex() < int() > > pourtant sqrt(2) n'est pas un complexe ! Pourquoi Python me renvoie un > complexe dans ce cas ? Parce que sqrt() provient du module cmath. > Lors de la surcharge de la fonction, Python n'est pas capable de > choisir la bonne version ? Il n'y a pas de surcharge de fonction comme en C++ ; la fonction sqrt() du module math n'est plus accessible car remplacée par celle de cmath. Trois solutions : import math import cmath if math.sqrt(2) < 3: print('oui') -------------------------------------------------- from math import sqrt from cmath import sqrt as csqrt if sqrt(2) < 3: print('oui') -------------------------------------------------- if 2**0.5 < 3: print('oui') -- Benoit Izac