# GESP等级:一级 | GESP Python 一级考点
# ============================================
# while语法复习 —— 三要素缺一不可
# GESP #11 #12 #13
# ============================================

# ----- 1. for vs while 对比回顾 -----
print("===== for vs while =====")
print()
print("for 循环（知道次数）:")
for i in range(10):
    print(i, end=" ")
print()
print("→ for:你心里有个计数器,嘀嗒嘀嗒数到 10")
print()

print("while 循环（知道条件）:")
i = 0                # ① 初始值:站在起跑线上
while i < 10:        # ② 条件:当 i 还没到 10 的时候
    print(i, end=" ")
    i = i + 1        # ③ 更新:每走一步,靠近终点
print()
print("→ while:闷头走直到撞墙")
print()

# ----- 2. 三要素精讲 -----
print("===== while 三要素（缺一不可!）=====")
print()
print("① 初始值（循环前）:   count = 1")
print("② 条件（while 后面）: while count <= 5")
print("③ 更新（循环里面!）: count = count + 1")
print()

count = 1
while count <= 5:
    print('  第', count, '次循环')
    count = count + 1
print('循环结束!count =", count, "不再 <= 5')
print()

# ----- 3. ⚠️ 忘了更新会怎样?死循环演示 -----
print("===== 死循环演示（仅演示,已注释）=====")
print()
print("如果把更新语句注释掉:")
print("""
  count = 1
  while count <= 5:
      print('第', count, '次循环')
      # count = count + 1    ← 注释掉!
""")
print("→ count 永远是 1,永远 <= 5,循环永远不停!")
print("→ 这就是【死循环】——程序卡死,需要强制关闭!")
print()

# ----- 4. 死循环还原（加安全保护）-----
print("===== 死循环还原（设置安全计数器）=====")
print('下面模拟"忘了更新"的效果,但加了安全阀防止真的卡死:')
print()

count = 1
safe_limit = 0       # 安全计数器
while count <= 5:
    print('  第', count, '次循环（模拟:条件永远为真）')
    # count = count + 1    ← 模拟"忘了更新"!
    safe_limit = safe_limit + 1
    if safe_limit >= 10:   # 安全阀:最多跑 10 次就强制退出
        print('  ⛔ 安全阀触发!已循环', safe_limit, '次,强制退出!')
        print("  → 如果没这个安全阀,这就是死循环!")
        break

print()
print("✅ 记住了:忘了更新 = 死循环!")
print("   while 三要素——初始值、条件、更新——缺一不可!")

input("按回车键退出...")
