如何在 python 中打印星形 hypen 图案

how to print star hypen pattern in python

如何打印这样的图案:

(需要打印n-1)

输入=3

----@
--@-@-@

输入=6

----------@
--------@-@-@
------@---@---@
----@-----@-----@
--@-------@-------@

我的代码:

row = int(input())
for i in range(1, row):
    for j in range(1,row-i+1):
        print("-", end="")
    for j in range(1, 2*i):
        if j==1 or j==2*i-1:
            print("@", end="")
        else:
            print("-", end="")
    print()

我的输出: 输入=5

----@
---@-@
--@---@
-@-----@

请解释一下怎么做?

您的代码中缺少一些需要改进的地方:

  • 无需循环即可一次又一次地打印相同的字符:在 python 上,您可以使用该产品将字符重复 x 次。例如:"-" * 3 == "---"
  • 你计算中间连字符的方法很好,但你需要计算两次并在中间添加一个 "@"
  • 您可以先逐部分构建字符串,然后打印整行,避免在循环结束时打印空行。
  • 就个人而言,由于第一行将有一个 "@" 而不是三个,所以我更喜欢计算它并单独打印它。

通过这些改进,您的问题的解决方案可能是:

row = int(input())
print("-" * (row - 1) * 2 + "@")
for i in range(row - 2, 0, -1):
    left_hyphens = "-" * i * 2
    mid_hyphens = "-" * (1 + 2 * (row - 2 - i))
    print(left_hyphens + "@" + mid_hyphens + "@" + mid_hyphens + "@")
row = int(input())
for i in range(1, row):
    for j in range(1,2*(row-i)+1):
        print("-", end="")
    for j in range(1, 4*i):
        if j==1 or j==2*i-1 or j==4*i-3:
            print("@", end="")
        elif j<=4*i-3:
            print("-", end="")
    print()