print("*", end="")
print("*", end="")
print("*", end="")
print("*", end="")
print()
print("*", end="")
print("*", end="")
print("*", end="")
print("*", end="")
print()
print("*", end="")
print("*", end="")
print("*", end="")
print("*", end="")
print()

#简化成双for循环
for r in range(3):  # 外层循环控制行
    for c in range(4):  # 内层循环控制列
        print("*", end="")
    print()
"""
    练习1:
        画出:
        *#*#*#
        *#*#*#
        *#*#*#
        *#*#*#
"""
for r in range(4):
    for c in range(6):
        if c % 2 == 0:
            print("*", end="")
        else:
            print("#", end="")
    print()

 

"""
    练习2:
        *
        **
        ***
        ****
"""
for r in range(4):  # 0 1 2 3
    for c in range(r + 1):  # 1 2 3 4
        print("*", end="")
    print()

 

"""
    练习3:
        列表排序(升序 小 -> 大)
        [3,80,4,45,5,7,9,1]
        目标:列表中所有元素两两比较
        思想:
            1.取出第一个元素,与后面的元素进行比较,
            2.取出第二个元素,与后面的元素进行比较,
            3.取出第三个元素,与后面的元素进行比较,
            ....
            N.取出倒数第二个元素,与后面元素进行比较
            如果取出的元素大于(>)后面的元素,
                则交换。
"""
list01 = [3, 80, 4, 45, 5, 7, 9, 1]
# 思路:
# 取出第一个元素,与后面元素进行比较
# list01[0] list01[1]
# list01[0] list01[2]
# list01[0] list01[3]
# for c in range(1, len(list01)):
#     # list01[0] list01[c]
#     pass
#
# 取出第二个元素,与后面元素进行比较
# for c in range(2, len(list01)):
#     # list01[1] list01[C]
#     pass
#
# 取出第三个元素,与后面元素进行比较
# for c in range(3, len(list01)):
#     # list01[2] list01[c]
#     pass
for r in range(len(list01) - 1):  # 0
    # 作比较
    for c in range(r + 1, len(list01)):
        # list01[2] list01[c]
        if list01[r] > list01[c]:
            list01[r], list01[c] = list01[c], list01[r]  # 元素交换
print(list01)

 

"""
    练习4:
    判断列表[3, 80, 45, 5, 80, 1]
    思路:
        所有元素两两比较,发现相同的则打印结果
        所有元素比较结束,都没有发现相同项,则打印结果。
"""
list02 = [3, 81, 45, 5, 80, 1]
# 取出第一个,与后面比较
# list02[0] list02[1]
# list02[0] list02[2]
# list02[0] list02[3]

# for c in range(1, len(list02)):
#     # list02[0]  list02[c]
#     pass
# for c in range(2, len(list02)):
#     # list02[1]  list02[c]
#     pass
# for c in range(3, len(list02)):
#     # list02[2]  list02[c]
#     pass

# 结果:假设没有相同项
result = False
for r in range(0, len(list02) - 1):
    for c in range(r + 1, len(list02)):
        # list02[r]  list02[c]
        if list02[r] == list02[c]:
            print("具有想同项:")
            result = True
            break  # 退出循环
    if result:
        break

if not result:
    print("没有相同项:")

 

"""
    练习5:
        list03=[
            [1, 2, 3, 4],
            [5, 6, 7, 8],
            [9, 10, 11, 12],
            [13, 14, 15, 16],
        ]
    1.打印第二行第三个元素
    2.打印第三行每个元素
    3.打印第一列每个元素
"""
list03 = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
    [13, 14, 15, 16],
]
# 1.打印第二行第三个元素
print(list03[1][2])
# 2.打印第三行每个元素
for itme in list03[2]:
    print(itme)
# 3.打印第一列每个元素
# 00 10 20 30 [行索引][列索引]
for r in range(len(list03)):
    print(list03[r][0])

 

"""
    练习6:
        矩阵转置
        将二维列表的列,变成行,形成一个新列表
        第一列变成第一行
        第二列变成第二行
        第三列变成第三行
        list04 = [
            [1, 2, 3, 4],
            [5, 6, 7, 8],
            [9, 10, 11, 12],
            [13, 14, 15, 16],
        ]
"""
list04 = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
    [13, 14, 15, 16],
]
# 方法一:
result = []
for c in range(4):
    line = []  # 行
    result.append(line)
    # 00 10 20 30
    for r in range(4):
        line.append(list04[r][c])
print(result)
# 思路:内循环出现多个,所以套用一个外层for
# line = []
# # 00 10 20 30
# for r in range(4):
#     line.append(list03[r][1])
# print(line)
# line = []
# # 00 10 20 30
# for r in range(4):
#     line.append(list03[r][2])
# print(line)
# 方法二:
result = []
for c in range(len(list04[0])):
    result.append([])
    # 00 10 20 30
    for r in range(len(list04)):
        result[c].append(list04[r][c])
print(result)