Message d'erreur
Dans le message, %s marque une valeur que le moteur remplit au moment où il lève l'erreur.
L'histoire
Vous venez de demander une racine carrée, et le moteur a répondu qu'il n'y a pas de racine carrée réelle. Voici ce qui se passe. La porte math.sqrt cherche un nombre qui, multiplié par lui-même, redonne votre opérande. Pour neuf, c'est trois. Pour seize, c'est quatre. Mais pour moins quatre ? Aucun nombre réel multiplié par lui-même ne donne un résultat négatif. Il n'y a donc rien à répondre. Le moteur ne vous renvoie pas zéro, il ne vous renvoie pas une valeur bidon : il refuse et il cite l'opérande tel que vous l'avez donné, avec la raison. Même chose pour un NaN, cette valeur qui veut dire « pas un nombre » : le moteur n'en dépose jamais, donc il n'a rien à partir de quoi calculer. Autrefois, le message disait seulement qu'il avait refusé avec le code moins un. Aujourd'hui, il vous dit quoi et pourquoi. Exemple : vous écrivez math.sqrt de moins neuf. Si votre calcul devait donner un résultat positif, remontez à la source et cherchez pourquoi l'opérande est devenu négatif, une soustraction à l'envers, par exemple. Si vous voulez vraiment la racine de la valeur absolue, prenez-la d'abord. Le message vous montre l'opérande, c'est votre piste.
Texte issu du catalogue d'erreurs du moteur Rush.
