lock&_lock Ответов: 1

Как определить условие для цикла while в Python ?


Я уже закончил задание, просто мне нужно объяснение. Я пытаюсь вычислить ближайший квадрат числа, меньшего предела, используя python. Допустим, если мой предел равен 40, то ближайший квадрат будет равен 36 (от 6*6).

Что я уже пробовал:

Я уже нашел ответ, но мне нужно какое-то объяснение :

limit = 40
num = 0

while (num+1)**2 < limit:
    num += 1
nearest_square = num**2

print(nearest_square)

Это работает, выходной ответ-36. Но я все еще немного смущен необходимым условием. Первоначально я поместил это :
while (num**2) < limit:

Но ответ-49, что означает 7*7 и больше, чем предел. Зачем вообще "+1" нужен в этом состоянии ? Разве это не похоже на цикл "для"?

1 Ответов

Рейтинг:
5

Patrice T

Сначала опечатка: "но ответ-49, что означает 7*7"

Цитата:
Я пытаюсь вычислить ближайший квадрат числа, меньшего предела, используя python.

Если предел равен 36, то какой ответ вы ожидаете получить-25 или 36 ?
Цитата:
Это работает, выходной ответ-36. Но я все еще немного смущен необходимым условием.

Вы петляете до тех пор, пока условие не будет неправильным, и оно становится неправильным, когда num является 1 шаг слишком далеко.
Ты мог бы сделать это и так:
limit = 40
num = 0
while num**2 < limit:
    num += 1
nearest_square = (num-1)**2
print(nearest_square)


lock&amp;_lock

Спасибо, что указали на мою опечатку и дали объяснение. Если мой лимит равен 36, я ожидаю результата = 36, с которым, как мне кажется, я справлюсь. Когда это один шаг слишком далеко, теперь я понимаю, как это работает, спасибо. Я буду помнить об этом.

CPallini

5.

Patrice T

Спасибо