Python, carré et cubique [Fermé]

Signaler
Messages postés
3
Date d'inscription
mercredi 29 avril 2015
Statut
Membre
Dernière intervention
30 avril 2015
-
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
-
Bonjour,

Je dois construire un programme qui demande a l'utilisateur d'entrer un nombre, et de ce nombre je dois valider s'il est cubique et carré. J'ai quelques difficultés à l'écrire car, malgrès les commandes SQRT() ainsi que MATH.POW(x, 1.0/3) qui me rendent le carré ou cube du nombre , je ne sais comment valider pour dire si le nombre est carré et cubique ... il me manquerait la validation et je ne suis pas capable de la faire, je ne trouve pas asser de documentation.
Merci



5 réponses


Salut,

Un nombre est carré si ça racine carré est entière ? De même pour cubique ?
4
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 59081 internautes nous ont dit merci ce mois-ci

Messages postés
3
Date d'inscription
mercredi 29 avril 2015
Statut
Membre
Dernière intervention
30 avril 2015

Oui bien sûr... Mais le seul probleme est que la valeur de retour est un float ( donc exemple 36=6.0.... As-t-il une maniere de faire en sorte que si le nombre est entier( même s'il est représenté par un float), executer une ligne de code spécifique, sinon, dire a l'utilisateur que le nombre n'est pas carré/cubique
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 686
Bonjour,

Le mieux est de ne pas utiliser sqrt() qui retourne un float. D'une manière générale lorsqu'on souhaite travailler avec les entiers, il faut mieux rester avec les entiers pour éviter les erreurs d'arrondis.

Ici tu peux par exemple faire :
def estCarre(nb):
x = 1
while True:
tmp = x
x = (x**2 + nb)/(2*x)
if abs(x - tmp) < 2: break
return nb==x**2
Messages postés
9016
Date d'inscription
dimanche 22 août 2010
Statut
Contributeur
Dernière intervention
16 février 2020
2 253
Tu peux vérifier si la valeur retournée est entière en utilisant X.is_integer() en supposant que ton float soit nommé X.
Messages postés
3
Date d'inscription
mercredi 29 avril 2015
Statut
Membre
Dernière intervention
30 avril 2015

D'accord, donc 6.1 return false et 6.0 return true?
Messages postés
9016
Date d'inscription
dimanche 22 août 2010
Statut
Contributeur
Dernière intervention
16 février 2020
2 253 >
Messages postés
3
Date d'inscription
mercredi 29 avril 2015
Statut
Membre
Dernière intervention
30 avril 2015

Oui.

Tu sais, une des forces de Python est sa console. Tu peux trés rapidement tester ce genre de fonction sans rien importer et c'est beaucoup plus rapide qu'un forum ;)

Tu peux aussi comparer 6.0 à 6. Ici, c'est égal. Mais par exemple, prenons la racine carré de 2 qui vaut 1.4 environ. En int, ça donnerai 1 ou 2 mais c'est différent de 1.4 donc 2 n'est pas un nombre carré
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 686
Bonjour,

Le mieux est de ne pas utiliser sqrt() qui retourne un float. D'une manière générale lorsqu'on souhaite travailler avec les entiers, il faut mieux rester avec les entiers pour éviter les erreurs d'arrondis.

Ici tu peux par exemple faire :
def estCarre(nb):
    x = 1
    while True:
        tmp = x
        x = (x**2 + nb)/(2*x)
        if abs(x - tmp) < 2
           break
    return nb==x**2