from math import ceil

def sqr(s, n):
    # format décimal
    x = s[:] if '.' in s else s + '.0'
    # Séparation suivant la décimale
    a, b = x.split('.')
    # Groupement par 2
    a = a.rjust(2 * ceil(len(a) / 2), '0')
    b = b.ljust(2 * ceil(len(b) / 2), '0')
    e, f = [int(a[i: i + 2]) for i in range(0, len(a), 2)], [int(b[i: i + 2]) for i in range(0, len(b), 2)]
    l = e + f
    # Initialisation de la réponse
    ans = ""
    # compteur du nombre de décimales, premer nombre impair à retrancher
    i, k = 0, 1
    # Nombre auquel on retranche les imapirs successifs
    m = l[0]
    # Tant qu'on a pas obtenu la précision obtenue
    while i < n:
        # compteur du nombre d'impairs retranchés
        c = 0
        # tant qu'on peut retirer un nombre impair
        while m - k >= 0:
            m -= k
            k += 2
            c += 1
        # on a obtenu une nouvelle décimale
        ans += str(c)
        i += 1
        # La partie entière est obtenue, la partie décimale commence
        if i == len(e):
            ans += '.'
        # mise à jour de l'entier auquel on retranche les imapirs successifs
        m = (l[i] if i < len(l) else 0) + 100 * m
        # mise à jour du premier impair que l'on retranche
        k = (k - 1) * 10 + 1
    return ans
# exemple universel
x = "34.136"
t = sqr(x, 30)
print(t)

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: