E01 - 42⚓︎
Le problème
Proposition 1⚓︎
🐍 Script Python
n = 42
print(n)
Commentaires :
n
n'est pas un nom de variable adapté, ici !- On attendait ici aussi une fonction, avec doctest.
Proposition 2⚓︎
🐍 Script Python
""" Ce programme renvoie la réponse à la question universelle, sur la vie, l'univers, et le reste qui est le nombre 42
"""
valeur = 42
print(valeur)
# tests
import doctest
doctest.testmod()
Commentaires :
- Une ligne trop longue, c'est peu lisible.
- On attend ici aussi une fonction...
- Pourquoi un doctest sans fonction ?
- Ce programme ne renvoie pas 42, mais il l'affiche ! Le commentaire initial est donc à revoir.
Proposition 3⚓︎
🐍 Script Python
def question_universelle() -> int:
"""Cette fonction renvoie la réponse à la question universelle, sur la vie, l'univers, et le reste.
>>>
42
"""
return 42
# tests
import doctest
doctest.testmod()
# Entrée
# Sortie
print(question_universelle())
Commentaires :
- Plutôt bien.
- Le doctest est faux ; il est incomplet.
Proposition 4⚓︎
🐍 Script Python
def réponse(question_universelle = 42) :
""" Renvoie l'entier qui répond à la 'question_universelle'.
>>> réponse(question_universelle = 42)
42
"""
return question_universelle
# tests
import doctest
doctest.testmod()
# Sortie
print (réponse(question_universelle = 42))
Commentaires :
- Le paramètre par défaut, ici, n'est pas très judicieux.
- 42 n'est pas une question, donc
question_universelle
est mal choisi.
Proposition 5⚓︎
🐍 Script Python
# 0- Coeur du programme
def réponse_universelle() -> int:
""" Renvoie la réponse à la question universelle, sur la vie, l'univers, et le reste, c'est à dire 42.
>>> réponse_universelle()
42
"""
return 42
# 1- Tests
import doctest
doctest.testmod()
# 2- Appel de la fonction / Sortie
print(réponse_universelle())
Commentaires :
- On préfère les lignes qui ne dépassent pas 80 caractères.
- On préfère sauter une ligne avant et après chaque doctest.
- Sinon, c'est très bien !
Corrigé du professeur⚓︎
🐍 Script Python
"""
author: Franck CHAMBON
problem: https://prologin.org/train/2003/semifinal/42
"""
def reponse_question_universelle() -> int:
"""Renvoie la réponse à la question universelle,
sur la vie, l'univers, et le reste.
Pour ceux qui ne le sauraient pas déjà,
la réponse à cette question est le nombre 42.
>>> reponse_question_universelle()
42
"""
return 42
# Tests
import doctest
doctest.testmod()
# Entrée / Sortie
print(reponse_question_universelle())