Skip to content

Instantly share code, notes, and snippets.

@fabian57
Last active August 29, 2015 14:10
Show Gist options
  • Save fabian57/19ae6952f21e214470da to your computer and use it in GitHub Desktop.
Save fabian57/19ae6952f21e214470da to your computer and use it in GitHub Desktop.
def max_length(elements):
acc = ""
for element in elements:
if len(element) > len(acc):
acc = element
return len(acc)
def print_boxed_text(elements):
max_length_of_elements = max_length(elements)
print "#" * (max_length_of_elements + 4)
for element in elements:
print "# " + element + (max_length_of_elements - len(element)) * " " + " #"
print "#" * (max_length_of_elements + 4)
@laowantong
Copy link

Pas mal du tout, mais il y a plusieurs choses à revoir:

  • Ta première fonction ne respecte pas les spécifications de l'énoncé:

écrire une fonction max_length renvoyant la longueur du plus long élément d'une liste d'objets (chaînes, listes ou autres) donnés.

La fonction attendue est non seulement plus générale, mais (marginalement) plus courte et plus rapide.

  • Un problème de nommage. Tu appelle text l'argument de max_length, mais c'est trompeur. Le lecteur va croire qu'il s'agit d'une chaîne de caractères. C'est accentué par le choix de c comme nom de la variable d'itération. for c in text se lit par convention «pour chaque Caractère du TEXTe», alors que chez toi il correspond à «pour chaque élément de la séquence (de chaînes, de listes, etc.)». Je conseille respectivement elements et element pour bien marquer la caractère générique de la fonction.
  • Un problème d'efficacité que je te laisse trouver dans print_boxed_text.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment