# while also has a plan B
# while...else — else runs when loop completes without break

import random

# ─────────────────────────────────────────────
# Basic while...else
# ─────────────────────────────────────────────

count = 0

while count < 3:
    print(count)
    count += 1
else:
    print("Loop complete.")

# 0
# 1
# 2
# Loop complete.

# ─────────────────────────────────────────────
# When else does NOT run — break interrupts
# ─────────────────────────────────────────────

count = 0

while count < 5:
    if count == 3:
        break
    print(count)
    count += 1
else:
    print("Loop complete.")    # never runs — break interrupted

# 0
# 1
# 2

# ─────────────────────────────────────────────
# Real use case — limited attempts
# ─────────────────────────────────────────────

secret = random.randint(1, 5)
attempts = 0

while attempts < 3:
    guess = int(input("Guess (1-5): "))
    attempts += 1
    if guess == secret:
        print(f"Correct! Got it in {attempts} attempt(s).")
        break
else:
    print(f"Out of attempts. The number was {secret}.")

# correct guess → break fires → else skipped
# 3 attempts used → condition False → else runs

# ─────────────────────────────────────────────
# Quick reference
# ─────────────────────────────────────────────

# while condition:
#     # loop body
# else:
#     # runs when condition becomes False naturally
#
# else runs     — condition became False, no break
# else skipped  — break interrupted the loop
# else runs     — loop never ran (condition False from start)
