📜  程序打印图案1020304017018019020 ** 50607014015016 **** 809012013 ****** 10011…(1)

📅  最后修改于: 2023-12-03 14:56:36.210000             🧑  作者: Mango

程序打印图案

这个题目要求我们编写一个程序,打印出一些数字和星号构成的图案。下面我们来分析一下这个图案的规律:

1 0 2 0 3 0 4 0 1 7 0 1 8 0 1 9 0 2 0
* * 5 0 6 0 1 4 0 1 5 0 1 6 * * * * 
* * * * 8 0 9 0 1 2 0 1 3 * * * * * *
1 0 0 1 1 * * * * * * * * * * * * 

可以发现,这个图案主要分为四部分,每一部分的规律不同。下面我们就来分别编写每一部分的程序。

第一部分

第一部分是最简单的一部分,它按照 1 0 2 0 3 0 4 0 1 7 0 1 8 0 1 9 0 2 0 的顺序输出数字,并在每个非 0 数字之后输出一个空格。

for i in [1, 0, 2, 0, 3, 0, 4, 0, 1, 7, 0, 1, 8, 0, 1, 9, 0, 2, 0]:
    if i != 0:
        print(i, end=" ")
    else:
        print(i, end="")
第二部分

第二部分稍微有点复杂,它的规律是:先输出两个星号,然后按照 5 0 6 0 1 4 0 1 5 0 1 6 的顺序输出数字,但需要注意的是,数字 5、6 在输出时应该用两个星号代替。

print("**", end=" ")
for i in [5, 0, 6, 0, 1, 4, 0, 1, 5, 0, 1, 6]:
    if i == 5 or i == 6:
        print("**", end=" ")
    else:
        print(i, end=" ")
print("**", end=" ")
第三部分

第三部分是最复杂的一部分,它的规律是:先输出三个星号,然后按照 8 0 9 0 1 2 0 1 3 的顺序输出数字,但需要注意的是,数字 8、9 在输出时应该用三个星号代替,数字 2、3 在输出时应该用两个星号代替。

print("***", end=" ")
for i in [8, 0, 9, 0, 1, 2, 0, 1, 3]:
    if i == 8 or i == 9:
        print("***", end=" ")
    elif i == 2 or i == 3:
        print("**", end=" ")
    else:
        print(i, end=" ")
print("***", end=" ")
第四部分

第四部分是最简单的一部分,它的规律是:先输出数字 1、0、0、1,然后在第 5、6、7、8、9、10、11、12、13、14、15、16、17、18、19 个位置上输出一个星号。

for i in range(1, 21):
    if i in [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]:
        print("*", end="")
    else:
        print("1" if i in [1, 4] else "0", end="")

综上所述,完整的程序如下:

for i in [1, 0, 2, 0, 3, 0, 4, 0, 1, 7, 0, 1, 8, 0, 1, 9, 0, 2, 0]:
    if i != 0:
        print(i, end=" ")
    else:
        print(i, end="")
print()
print("**", end=" ")
for i in [5, 0, 6, 0, 1, 4, 0, 1, 5, 0, 1, 6]:
    if i == 5 or i == 6:
        print("**", end=" ")
    else:
        print(i, end=" ")
print("**", end=" ")
print()
print("***", end=" ")
for i in [8, 0, 9, 0, 1, 2, 0, 1, 3]:
    if i == 8 or i == 9:
        print("***", end=" ")
    elif i == 2 or i == 3:
        print("**", end=" ")
    else:
        print(i, end=" ")
print("***", end=" ")
print()
for i in range(1, 21):
    if i in [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]:
        print("*", end="")
    else:
        print("1" if i in [1, 4] else "0", end="")
print()

完整的代码片段已经自动生成了markdown代码,如下所示:

```python
for i in [1, 0, 2, 0, 3, 0, 4, 0, 1, 7, 0, 1, 8, 0, 1, 9, 0, 2, 0]:
    if i != 0:
        print(i, end=" ")
    else:
        print(i, end="")
print()
print("**", end=" ")
for i in [5, 0, 6, 0, 1, 4, 0, 1, 5, 0, 1, 6]:
    if i == 5 or i == 6:
        print("**", end=" ")
    else:
        print(i, end=" ")
print("**", end=" ")
print()
print("***", end=" ")
for i in [8, 0, 9, 0, 1, 2, 0, 1, 3]:
    if i == 8 or i == 9:
        print("***", end=" ")
    elif i == 2 or i == 3:
        print("**", end=" ")
    else:
        print(i, end=" ")
print("***", end=" ")
print()
for i in range(1, 21):
    if i in [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]:
        print("*", end="")
    else:
        print("1" if i in [1, 4] else "0", end="")
print()