def centrer(texte, largeur=40):
    
    len_spaces = (largeur - len(texte)) / 2 - 1
    spaces = " " * int(len_spaces)
    return f"#{spaces}{texte}{spaces}#"
    

def encadrer(texte, largeur=40):
    
    assert isinstance(texte, str)
    assert largeur > 0 or largeur == -1
    
    if largeur == -1:
        largeur = len(texte) + 4
        
    return ("#" * largeur
            + "\n" + centrer(texte=texte, largeur=largeur)
            + "\n" + "#" * largeur)


print(encadrer(texte="J'aime le python", largeur=20))
print(encadrer(texte="Une phrase tres tres longue", largeur=-1))
print(encadrer(texte=3.1415, largeur=10))