要求:当剩余符号为零或打印图案大于5次时,退出循环。每组图案之前显示图案的符号总数,每组之间有1个空行,间隔1秒打印。

连续自动输出沙漏图案:根据随机生成的符号数量(1000以内),自动打印沙漏图案,并输出剩余符号个数。要求:当剩余符号为零或打印图案大于5次时,退出循环。每组图案之前显示图案的符号总数,每组之间有1个空行,间隔1秒打印。

效果如图 , 太多了 截不全 , 如有帮助给个采纳谢谢 :

img


代码如下:


```python



import random
import time


def print_diamond(symbol_num):
    """
    打印沙漏图案与剩余符号数量
    :param symbol_num: 符号数量
    """
    # 打印符号数量
    print("Symbol number:", symbol_num)

    # 设置沙漏每一层的符号数目,从 1 开始递增直到大于等于 symbol_num,然后再递减回去
    step = 1
    while (step * (step + 1) // 2) <= symbol_num:
        step += 1
    step -= 1

    # 打印沙漏上半部分
    for i in range(step, 0, -1):
        print(" " * (step - i) + "*" * (2 * i - 1))

    # 打印沙漏中部
    print("*" * (2 * step + 1))

    # 打印沙漏下半部分
    for i in range(1, step + 1):
        print(" " * (step - i) + "*" * (2 * i - 1))

    # 打印剩余符号数量
    print("Remaining symbol number:", symbol_num - (step * (step + 1) // 2))
    print()
    time.sleep(1)


if __name__ == '__main__':
    count = 0
    while True:
        # 随机生成符号数量
        symbol_num = random.randint(1, 1000)

        # 打印沙漏图案与剩余符号数量
        print_diamond(symbol_num)

        count += 1
        # 如果已经打印了 5 次或剩余符号数量为零则退出循环
        if count >= 5 or symbol_num == 0:
            break

```

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
import random
import time

def print_diamond(symbols):
    for i in range(symbols):
        print(" " * i + "*" * (symbols - i))
    for i in range(symbols-2, -1, -1):
        print(" " * i + "*" * (symbols - i))

count = 0
while True:
    symbols = random.randint(1, 1000)
    if count > 5 or symbols == 0:
        break
    print("还剩:", symbols, "个")
    print_diamond(symbols)
    print()
    count += 1
    time.sleep(1)