"""任务 4 · 把下标循环换成 enumerate 与 zip

下标版要在三个地方写对同一个下标（i、names[i]、scores[i]），两种新写法各只剩一处：

  · enumerate(a, start=1)：位置与值一次取出；计数默认从 0 起，要按题号从 1 数就写 start=1；
  · zip(a, b)：两个序列一一配对，在最短的那个用完时就停 —— 长度不齐不报错，只会悄悄变短；
  · 想单独取配对里的某一列，用 [score for _, score in zip(...)]，用一个不对应的名字接住另一列；
  · 转置矩阵：下标版是两层循环取 row[i]，配对版把每一行当成一个参数交进去，它按位置配列。

带 print 的行是判分接口，别改；要写的是标着 TODO 的那几行（现在都是占位值）。

跑： py task4_zip_enum.py
判： py run_tests.py
"""

names = ['第一题', '第二题', '第三题']                        # 别改
scores = [80, 95, 60]                                      # 别改
matrix = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]      # 别改


# ══ TODO 01 ═════════════════════════════════════════════════
# 下标版：
#     for i in range(len(names)):
#         print('01 编号', i, names[i], scores[i])
# 改成「位置与值一起取」配「两个序列配对」的写法，编号从 1 起。
# 提示：两个可以叠起来用：for i, (name, score) in ____(____(names, scores), start=1)
# 注意：'01 编号' 这个标签与后面三项的先后别动（判分按它读三行结果）。
for i in range(len(names)):
    print('01 编号', i, names[i], scores[i])


# ══ TODO 02 ═════════════════════════════════════════════════
# 把「位置与值」的结果收成一张表看一眼，编号从 1 起。
enum_list = None
print('02 enumerate 表', enum_list)          # 别改：期望 [(1, '第一题'), (2, '第二题'), (3, '第三题')]


# ══ TODO 03 ═════════════════════════════════════════════════
# 两个序列长度不齐时，配对会停在哪？数一数实际配出了几对。
cut_len = None
print('03 zip 截断长度', cut_len)             # 别改：期望 2


# ══ TODO 04 ═════════════════════════════════════════════════
# 把上面那个截断后的配对结果直接打出来看。
cut_pairs = None
print('04 zip 截断表', cut_pairs)             # 别改：期望 [('第一题', 80), ('第二题', 95)]


# ══ TODO 05 ═════════════════════════════════════════════════
# 只要分数那一列（用一个不对应的名字接住另一列）。
score_col = None
print('05 分数列', score_col)                 # 别改：期望 [80, 95, 60]


# ══ TODO 06 ═════════════════════════════════════════════════
# 完整的配对表（长度齐的时候三对都在）。
pairs = None
print('06 配对表', pairs)                     # 别改：期望 [('第一题', 80), ('第二题', 95), ('第三题', 60)]


# ══ TODO 07 ═════════════════════════════════════════════════
# 转置：下标版是两层循环把 row[i] 收成一列。
# 提示：把三行当成三个参数交给配对函数，它按位置把同列的元素配成一组；
#       配对给出的是元组，外面再用推导式把每组收成列表。
transposed = None
print('07 转置', transposed)                  # 别改：期望 [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
