← 返回题库
初级

打印沙漏

未完成
初级参考 完整示例代码供参考,建议自己理解后重新输入
def solve(n, c):
    n, c = int(n), str(c).strip()
    # 找最大奇数k使得k^2 <= n
    k = 1
    while (k + 2) ** 2 <= n:
        k += 2
    rows = []
    w = k
    while w >= 1:
        spaces = ' ' * ((k - w) // 2)
        rows.append(spaces + c * w)
        w -= 2
    w = 3
    while w <= k:
        spaces = ' ' * ((k - w) // 2)
        rows.append(spaces + c * w)
        w += 2
    for row in rows:
        print(row)
    print(n - k * k)

示例

输入
solve(19, '*')
期望输出
***
 *
***
10
Python 代码 🔒 登录后使用
🔒

登录后即可练习

注册免费账号,在浏览器中直接运行 Python 代码