Condition if

a marqué ce sujet comme résolu.

Bonjour, S’il vous plaît quelqu’un peut m’aider à résoudre ce problème ?

Écrire un programme qui imprime la moyenne géométrique \sqrt{a.b} (la racine carrée du produit de a par b) de deux nombres positifs a et b de type float lus en entrée.

Si au moins un de ces nombres est strictement négatif, le programme imprime le texte « Erreur ».

C’est le code dont j’ai écris.

import math
a = float(input())
b = float(input())
if math.sqrt(-a * b):
    print("Erreur")
else:
    print(math.sqrt(a * b ** (1 / 2)))
+0 -0

Bonjour,

Je me suis permis d’éditer ton message pour ajouter les balises de code.

Aussi je vois plusieurs problèmes dans ton code :

  • Tu testes la valeur de la racine carré de -a * b pour savoir si tes deux nombres sont positifs ? Cet appel va systématiquement échouer en cas de nombres valides.
  • Et même s’il fonctionnait comme tu l’entends, ça ne détecterait pas le cas où a et b sont tous deux négatifs.
  • Ligne 7, tu calcules a×b\sqrt{a \times \sqrt{b}}, la puissance ½ revenant effectivement à la racine carrée.

Si on suit à la lettre ton énoncé, il faut vérifier que les 2 nombres sont positifs et non pas le produits des 2 (pas forcément logique)

Pour vérifier qu’un nombre est positif, on le compare tout simplement à 0

if a < 0:
   print("Erreur")
else:
   ...

Et on peut "cumuler" les tests via un or

if a < 0 or b < 0:
   print("Erreur")
else:
   ...

Tu peux faire le calcul dans else (en faisant attention à l’utilisation de math.sqrt)

+3 -0

Précédement tu avais écris:

else:
    print(math.sqrt(a b))

J’imagine que tu parles de ce message, où la multiplication n’est pas visible simplement parce que le symbole * est interprété comme le marqueur d’emphase.

Ici, il ne te manque qu’une virgule pour que ça soit bon.

else:
    print(math.sqrt(a, b))

ache

Je ne sais pas ce que tu imagines que ce code fait, mais il est invalide ; math.sqrt(a * b) est ce qui est demandé. La condition n’était déjà pas bonne de toute façon.

Si on suit à la lettre ton énoncé, il faut vérifier que les 2 nombres sont positifs et non pas le produits des 2 (pas forcément logique)

C’est tout de même plutôt logique étant donné qu’il s’agit de calculer une moyenne géométrique et que ça se généralise pas aux nombres négatifs. Même si on peut effectivement calculer e.g. (2)×(2)\sqrt{(-2)\times (-2)} sans passer par les complexes, dire que la moyenne géométrique de 2-2 et 2-2 est 22 me parait pas super satisfaisant… :-°

+1 -0

Oh là là ! Merci @adri1 ! Je ne sais pas pourquoi je pensais à une virgule. J’ai répondu beaucoup trop vite.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte