【问题标题】:Print Hexagonal pattern using asterisk [closed]使用星号打印六边形图案[关闭]
【发布时间】:2017-02-23 07:49:16
【问题描述】:

我正在练习打印各种类型的图案,但我被困在六边形图案上。我正在使用 Asterisk(*) 打印它。

它应该是动态的。我几乎完成了它,但在最后一部分卡住了。我已将所有部分分成块,并使用 while 循环和 if 条件执行所有块。

sideLength = 5

totalLength = (sideLength)*2 + (sideLength-2)

loop =1

while loop<=totalLength :
    if (loop==1) or (loop==totalLength):
        print " "*((totalLength - sideLength)//2) + "*"* sideLength + " "*((totalLength- sideLength)//2)

    if loop>(sideLength-1) and loop<= (sideLength-1)+sideLength:
        print "*" + " "*(totalLength-2) + "*"

    if (loop>=1) and (loop)<(sideLength-1):
        print " "*(sideLength- 1- loop) + "*" +  " " * ((sideLength-2) + 2*(loop)) + "*" + " "*(sideLength- 1- loop)

    if loop>((totalLength//2) + (sideLength//2)) and loop<(totalLength-1):
        print " "*(loop - 1 - sideLength ) + "*"

    loop+=1

最后一个 if 条件出现的问题。

【问题讨论】:

  • 欢迎来到stackoverflow,而不是放图片。请自行复制粘贴代码。
  • 在发布您的代码截图时,您希望我们重新输入整个代码。既然您需要帮助,请尽量提供帮助。这包括代码相关部分的文本副本,以及您收到的错误(或错误输出)。见How to Askminimal reproducible example

标签: python python-2.7


【解决方案1】:

要处理任意长度>1,您必须更改第二个 if 语句。我为你修好了最后一个:

sideLength = 5
totalLength = (sideLength) + 2*(sideLength-1)

loop = 1

while loop<=totalLength :
    if loop==1 or loop==totalLength:
        print " "*(sideLength-1) + "*"* sideLength + " "*(sideLength-1)

    if loop>sideLength-1 and loop<= 2*sideLength-1:
        print "*" + " "*(totalLength-2) + "*"

    if loop>=1 and loop<sideLength-1:
        print " "*(sideLength- 1- loop) + "*" +  " " * ((sideLength-2) + 2*(loop)) + "*" + " "*(sideLength- 1- loop)

    if loop>=2*sideLength-1 and loop<totalLength-1:
        print " "*(loop-totalLength+sideLength) + "*"+  " " *(totalLength-2*(loop-totalLength+sideLength+1)) + "*" + " "*(sideLength- 1- loop)

    loop+=1

【讨论】:

  • 没问题。如果我的回答对您有帮助,请考虑投票并将其标记为已接受(我的回答左侧的复选标记)。
猜你喜欢
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 2022-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多