# GESP等级：三级 | GESP Python 三级考点

"""
04_undo_with_pop_append.py — 用 pop + append 实现"撤销"（实操③）
课程：第2节 列表操作
知识点：利用 append(记录) + pop(撤销) 实现栈结构
"""

print("=" * 60)
print("  实操③：用 pop + append 实现颜色添加的撤销功能")
print("=" * 60)

# ============================================================
# 初始化
# color_list：展示在货架上的颜色
# history：记录每一次添加操作（栈结构）
# ============================================================
color_list = []
history = []        # 记录每次添加的颜色，用来"撤销"


# ============================================================
# TODO ①：添加颜色
# ============================================================
def add(color):
    """
    将颜色添加到 color_list 末尾，同时记录到 history

    提示：
    1. color_list.append(color)  — 添加颜色
    2. history.append(color)     — 记录操作（用于撤销）
    """
    # TODO: 请在下面补全代码
    pass


# ============================================================
# TODO ②：撤销最后一次添加
# ============================================================
def undo():
    """
    撤销最后一次添加操作

    提示：
    1. 检查 history 是否为空（if history:）
    2. 如果 history 不为空，用 pop() 弹出最后一次记录
    3. 用 remove() 从 color_list 中删除该颜色（从末尾删）

    注意：因为总是撤销最后一次添加，所以颜色在 color_list 的最后
    """
    # TODO: 请在下面补全代码
    pass


# ============================================================
# 辅助函数：显示当前颜色
# ============================================================
def show():
    """显示当前颜色列表"""
    if color_list:
        print(f"  当前颜色: {color_list}")
    else:
        print("  当前颜色: (空)")


# ============================================================
# 测试 —— 不要修改下面的代码
# ============================================================
print("\n【开始添加颜色】")
add("red")
add("blue")
add("green")
show()              # 期待: ['red', 'blue', 'green']

print("\n【撤销一次】")
undo()
show()              # 期待: ['red', 'blue']

print("\n【撤销第二次】")
undo()
show()              # 期待: ['red']

print("\n【再添加两个颜色】")
add("yellow")
add("pink")
show()              # 期待: ['red', 'yellow', 'pink']

print("\n【撤销一次】")
undo()
show()              # 期待: ['red', 'yellow']

print("\n【连续撤销到空】")
undo()
undo()
show()              # 期待: (空)

print("\n【空列表时尝试撤销】")
undo()              # 期待: 提示"没有可撤销的操作"

print("\n" + "=" * 60)
print("  全部完成！撤销功能实现成功！")
print("=" * 60)
