حدس بزن، بررسی کن
چطور ریشهٔ دوم را تعریف میکنیم؟ «g ریشهٔ دوم x است اگر g * g == x». این تعریف نمیگوید جواب را چطور پیدا کنیم، ولی میگوید یک حدس را چطور بررسی کنیم. پس حدسها را بهترتیب تولید میکنیم و هر کدام را چک میکنیم:
n = int(input())
g = 0
while g * g < n:
g = g + 1
این حلقه روی اولین g که مجذورش کمتر نیست میایستد. بعد از حلقه باید دقیق بررسی کنیم که آیا همان جواب درست بود یا از آن رد شدهایم:
if g * g == n:
print(f"{n} is a perfect square")
else:
print(f"{n} is not a perfect square")
این الگو حدس و بررسی (یا جستوجوی جامع) نام دارد: همهٔ حالتهای ممکن را یکییکی امتحان میکنیم. ساده است و اگر جواب وجود داشته باشد، حتماً پیدایش میکند؛ عیبش کندی برای فضای جستوجوی بزرگ است.
سه ویژگی متغیر حلقه را اینجا هم میبینی: g بیرون حلقه مقدار گرفته، داخلش زیاد میشود و شرط پایان بر اساس آن است. درس کامل حدس و بررسی با مثال ریشهٔ سوم (و اعداد منفی) را ببین.