Изменяемое поведение в циклах while - PullRequest
0 голосов
/ 09 мая 2020

Я пытался решить онлайн-головоломку, и мое решение было

def solution(area):
    squares = []
    while area > 0:
        squares.append((int(area**(1/2))**2))
        area = area - (int(area**(1/2))**2)
    return squares

, но оно прошло только один из десяти тестов. Я нашел в Интернете решение, которое казалось похожим

def solution(area):
    res = []
    while (area > 0):
        biggest_square_side = int(area ** 0.5)
        biggest_square = biggest_square_side ** 2
        area -= biggest_square
        res.append(biggest_square)
    return res

Я не могу понять, почему онлайн-решение прошло все тестовые случаи, а мое - только один. Когда я запустил их на своем локальном компьютере, я получил тот же результат. Код был запущен на Python 2.7. Спасибо!

...