Aller au contenu

E01 - 42⚓︎

Le problème

42

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())