2017-02-23 28 views
-6

我正在練習打印各種圖案,並且卡在六角形圖案中。我使用星號(*)打印它。打印使用星號的六角形圖案

它應該是動態的。我已經差不多完成了它,但是仍然停留在最後部分我已經把所有部分分成幾塊,並且使用while循環和條件執行所有塊。

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 

從這最後如果條件發生的問題。

+3

歡迎使用stackoverflow,而不是放置圖像。請複製粘貼代碼在這裏。 –

+2

發佈代碼截圖時,您希望我們重新鍵入整個代碼。既然你想得到幫助,儘可能地儘可能地有幫助。這包括代碼相關部分的文本副本,以及您收到的錯誤(或錯誤輸出)。見[問]和[mcve]。 –

回答

0

要在任意長度> 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 
+0

非常感謝。 :) –

+0

沒問題。如果我的回答對您有幫助,請考慮將其投票並將其標記爲已接受(我答案左側的複選標記)。 –