﻿# ------------------------------------------
# Le modèle : on définit les fonctions = les outils

def print_exo5(n):
    '''
    fonction d'affichage
    in : n, le nombre maximum traité
    return : non
    out : affichage
    '''
    # la solution algorithmique standard
    compteur = 0
    for i in range(1, n+1): # boucle de 0 à n compris
        if i*i %2 == 0: # test de parité
            compteur+= 1
            print(compteur, ": n=", i, "carré=", i*i) 

def print_exo9(n):
    # on définit le titre des 3 colonnes
    c1="i"
    c2="n"
    c3="carré"

    # on récupère la taille max de chaque colonne
    max_c1=max(len(c1), len(str(n//2)))
    max_c2=max(len(c2), len(str(n)))
    max_c3=max(len(c3), len(str(n*n)))

    i = 0
    print(f"{c1:>{max_c1}s}: {c2:>{max_c2}s} {c3:>{max_c3}s}")
    print((max_c1+max_c2+max_c3+3)*"-")
    for cpt in range(1, n+1): # boucle de 0 à n compris
        if cpt*cpt %2 == 0: # test de parité
            i+= 1
            print(f"{i:{max_c1}d}: {cpt:{max_c2}d} {cpt*cpt:{max_c3}d}")


# ------------------------------------------
# main : programme principal = le controleur 
# 1 : saisie des données
nb_carres=input("Entrez le nombre de carrés : ") # on récupère une string

# 2 : traitements des données
if nb_carres.isnumeric() == True: # on teste si c'est un entier
    nb_carres=int(nb_carres)
else:
    nb_carres=0

# ------------------------------------------
# 3 : la vue : c'est l'affichage
# print_exo5(nb_carres)

'''
print_exo6(nb_carres)
print_exo7(nb_carres)
print_exo8(nb_carres)
'''
print_exo9(nb_carres)
