# One element at a time. Every element.
# iterating over lists — for, enumerate, zip, while

squad = ["Raven", "Wolf", "Ghost", "Viper", "Bull"]

# ─────────────────────────────────────────────
# Basic for loop
# ─────────────────────────────────────────────

for member in squad:
    print(member)

# Raven
# Wolf
# Ghost
# Viper
# Bull

# ─────────────────────────────────────────────
# Doing something with each element
# ─────────────────────────────────────────────

scores = [85, 74, 91, 63, 98]

for score in scores:
    if score >= 80:
        print(f"{score} — passed")

# 85 — passed
# 91 — passed
# 98 — passed

total = 0
for score in scores:
    total += score

print(f"Total: {total}")        # Total: 411
print(f"Average: {total / len(scores):.1f}")   # Average: 82.2

# ─────────────────────────────────────────────
# enumerate() — index and value together
# ─────────────────────────────────────────────

for index, member in enumerate(squad):
    print(f"{index} — {member}")

# 0 — Raven
# 1 — Wolf
# 2 — Ghost
# 3 — Viper
# 4 — Bull

# start counting from 1
for index, member in enumerate(squad, 1):
    print(f"{index}. {member}")

# 1. Raven
# 2. Wolf
# 3. Ghost
# 4. Viper
# 5. Bull

# ─────────────────────────────────────────────
# zip() — two lists in parallel
# ─────────────────────────────────────────────

names = ["Raven", "Wolf", "Ghost"]
scores = [85, 74, 91]

for name, score in zip(names, scores):
    print(f"{name}: {score}")

# Raven: 85
# Wolf: 74
# Ghost: 91

# zip stops at the shortest list
names_long  = ["Raven", "Wolf", "Ghost", "Viper", "Bull"]
scores_short = [85, 74, 91]

for name, score in zip(names_long, scores_short):
    print(f"{name}: {score}")

# Raven: 85
# Wolf: 74
# Ghost: 91
# Viper and Bull are ignored — scores_short ran out

# ─────────────────────────────────────────────
# while loop — manual index control
# ─────────────────────────────────────────────

squad = ["Raven", "Wolf", "Ghost", "Viper", "Bull"]
i = 0

while i < len(squad):
    print(squad[i])
    i += 1

# same output as for loop
# useful when you need to skip, reverse, or stop early by logic

# going backwards
i = len(squad) - 1
while i >= 0:
    print(squad[i])
    i -= 1

# Bull
# Viper
# Ghost
# Wolf
# Raven

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

# for item in list:              — one element per iteration
# for i, item in enumerate(list) — index + element
# for i, item in enumerate(list, 1) — index starting at 1
# for a, b in zip(list1, list2)  — two lists in parallel
# while i < len(list):           — manual index, more control
#
# don't modify a list while looping over it
# use enumerate() instead of range(len(list)) for index + value
# zip() stops at the shortest list — no error
