# ===== CodeLab: Python 条件判断与循环 =====
# 来源: https://aoerliang.dpdns.org/articles/python-control-flow
# 以下代码片段按文章出现顺序拼接, 共 6 段

# ----- 片段 1 (python) -----
age = 20
print(age > 18)          # True
print(age == 20)         # True
print("py" in "python")  # True 子串判断
print([1, 2] == [1, 2])  # True 值相等
print([1, 2] is [1, 2])  # False 不是同一对象

# ----- 片段 2 (python) -----
score = 85
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
else:
    grade = "D"
print(f"等级:{grade}")   # 等级:B

# ----- 片段 3 (python) -----
user = None
# 短路:user 为 None 时,不会执行 len(user)
if user is not None and len(user) > 3:
    print("用户名合法")

# 利用短路实现"默认值"
name = user or "访客"
print(name)   # 访客

# ----- 片段 4 (python) -----
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
    print(f"我喜欢吃{fruit}")

# 同时拿到下标:enumerate
for i, fruit in enumerate(fruits):
    print(i, fruit)

# range(起点, 终点, 步长) 终点不包含
for i in range(0, 10, 2):
    print(i, end=" ")   # 0 2 4 6 8

# ----- 片段 5 (python) -----
n = 0
while True:
    n += 1
    if n % 10 == 0:
        continue        # 跳过 10 的倍数
    if n > 25:
        break           # 超过 25 停止
    print(n, end=" ")

# ----- 片段 6 (python) -----
nums = [3, 5, 7, 11]
for x in nums:
    if x == 6:
        print("找到了")
        break
else:
    print("没有 6")   # 循环未被 break,输出此行

# 推导式:循环 + 条件一行搞定
squares = [x * x for x in range(6) if x % 2 == 0]
print(squares)   # [0, 4, 16]
