This repository has been archived on 2019-08-09. You can view files and clone it, but cannot push or open issues or pull requests.
s1-tp/S1/TP 2/Taille d un entier en base 10.py

51 lines
1.7 KiB
Python
Raw Normal View History

# PREUD'HOMME BONTOUX Geoffrey - PeiP 12 - 2014/2015
# TP n°2 donné le 19/09/2014 - Taille d'un entier en base 10
# http://www.fil.univ-lille1.fr/~wegrzyno/portail/Info/Doc/HTML/tp_donnees_expressions.html
# Q1
from math import log10
# Q2
from math import floor
print("Q2", "floor(3.14159265359) retourne", floor(3.14159265359))
# Q3
def taille(entier):
"""
Calcule la taille décimale dun entier positif.
CU : entier int 0
Exemple :
>>> taille(2014)
4
"""
return floor(log10(entier)) + 1
# Q4
print("Q4", "taille(2**100) retourne", taille(2**100))
# Q5
# Le code qui suit a été éxecuté dans l'interpréteur puis inseré ici en tant
# que commentaire pour garder le fichier valide car il provoque des erreurs
# >>> taille(-2014)
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# File "<stdin>", line 12, in taille
# ValueError: math domain error
# Lors de l'éxecution de ce script, Python détecte une erreur. Il affiche donc
# dans la console la liste des fonctions appelées en dernier afin de nous aider
# à voir d'où vient l'erreur. Ici, cette dernière vient de la fonction taille(),
# plus précisément de la ligne contenant l'instruction suivante :
# ```return floor(log10(entier)) + 1```
# Le texte de l'erreur est le suivant : "ValueError: math domain error". Cela
# signifie qu'une fonction a été appelée avec un argument en dehors de son
# domaine de définition. La fonction en question est log10 (nous pouvons le
# vérifier en tapant dans l'interpréteur ```log10(-2014)```, qui est une étape
# de la fonction taille(), ce qui affiche la même erreur), qui est définie
# pour tout réel strictement positif. Or, -2014 n'en est pas un, ce qui
# déclenche l'erreur.