2012-11-06 97 views
2

我想創建一個程序,該程序允許我在Python程序中使用星號創建「金字塔」或「三角形」。我已經開始了代碼,但似乎無法弄清楚。Python中的星號三角形

下面是我設法找出代碼:

def triangle(): 
      totalRows = int(eval(input("How big? "))) 
      for currentRows in range(1,totalRows+1): 
       for currentCol in range (1, currentRows+1): 
          print("*", end = " ") 
    triangle() 

最終的結果應該反映這個!

How big? 1 
* 
------------------------------------------------------ 
How big? 2 
* 
* * 
------------------------------------------------------ 
How big? 3 
    * 
* * 
* * * 
------------------------------------------------------ 
+2

'的eval(輸入( 「...」))'*不寒而慄* – NullUserException

+3

當totalRows是4,還有9星在三角形或10?當totalRows爲5時,星號是12還是15?也就是說,三角形是空心的,還是填滿了? –

+1

你目前的代碼有什麼問題? – Marcin

回答

2
n = 10                   
for i in range(n-1):                
    numwhite = n-i                
    print ' '*numwhite + '*'*i + '*'*i 



     ** 
     **** 
     ****** 
     ******** 
    ********** 
    ************ 
    ************** 
    **************** 
+0

當我把它放在一起,我得到一個語法錯誤。 下面是它現在的樣子: def triangle(): totalRows = int(eval(input(「How much?(1,currentRows + 1): print(「*」,end =「」) (範圍內的currentRows(totalRows + 1): ) 1): numWhite = totalRows - 我 打印 '' * numWhite + '*' *我 三角形() –

5

輕微修改RParadox的解決方案,以滿足需求:

for i in range(totalRows + 1): 
    numWhite = totalRows - i 
    print ' ' * numWhite + '* ' * i 
+0

當我把它放在一起,我得到一個語法錯誤 下面是它現在的樣子: DEF (1,currentRows + 1)中的currentCol: : (): totalRows = int(eval(input(「How large?」))) : 0打印( 「*」,結束=「「) 爲i的範圍(totalRows + 1): numWhite = totalRows - I 打印 '' * numWhite + '*' * I 三角形() –

+0

如果採取出你的'currentRows ...'循環(全部三行)並複製上面的代碼片段,而不是你應該沒事的 - 讓我知道如果失敗了。 –

0
def xmastree(maxwidth): 
    for i in xrange(1,maxwidth,2): 
     print '{0}'.format('*'*i).center(maxwidth) 

或:

def xmastree2(maxrows): 
    for i in xrange(1,maxrows*2,2): 
     print '{0}'.format('*'*i).center(maxrows*2) 

嗯,還是沒有反應,也許不是很通用? OK試試這個;-):

def triangle(pattern, n): 
    maxwidth = n*len(pattern)*2 
    for i in xrange(1,n*2+1,2): 
     print '{0}'.format(pattern*i).center(maxwidth) 

>>> triangle(' ^', 5) 
     ^  
     ^^^  
    ^^^^^ 
    ^^^^^^^ 
^^^^^^^^^
1
def build_pyr(depth): 
      rows = [ (depth-i)*' ' + i*2*'*' + '*' for i in range(depth-1) ] 
      for i in rows: 
        print i 

這個工作,但是,它在每個深度增加了2N + 1的星號。只需從列表理解中刪除+ 1個星號,然後在行列表中添加一個初始星號。

0

哇,夥計們,你從一個非常複雜的角度來看它!爲什麼你只是使用這個程序? :

asterisknum = int(raw_input('How many asterisks? Input here: ')) 
base = 0 
if asterisknum % 2 == 0: 
    print ('Added 1 to even number') 
    asterisknum = asterisknum + 1 
while asterisknum != -1 : 
    print (' ' * base + '*' * asterisknum) 
    base = base + 1 
    asterisknum = asterisknum - 2 
raw_input('Press <Enter> to exit') 

我只是讓這個程序工作了一次,但我用了大家應該知道的極其簡單的python部分。它可以被調整,以便在同一個程序,或任何再工作......

0

它可以在短短几個步驟來完成:

def main(): 

    rows = input(" enter the number of rows : ") 
    for i in range (rows): 
     print ' '*(rows-i-1) + '*'*(2*i+1) 
main() 
0
def triangle(height): 
    maxstars = 1+ 2*(height -1) 
    spaces = int(maxstars/2) 
    for i in range(0,height): 
     print(" " * spaces +"*" * (1+ 2*i)) 
     spaces = spaces -1 

number = int(input("Please enter height of triangle: ")) 
triangle(number) 
0

想象一下,你有明星和空間「塊」 。現在將它們添加到畫布上。 這是Python。 它在這種特殊情況下將物體粘合在一起

此代碼打印一顆鑽石,第一個循環是上半部分,第二個循環是下半部分。 請注意,我必須爲第二個循環創建新的變量(對象)。

希望這有助於人:)

star = "*" 
space = "." # dots are for presentation purposes 
rows = 10 
star_counter = 1 
space_counter = rows 
for i in range(rows): 
    print((space * (space_counter - 1)) + (star * star_counter) + 
    (star * (star_counter - 1)) + (space * (space_counter - 1))) 
    star_counter += 1 
    space_counter -= 1 

star_counter_new = (rows - 1) # one row less for the lower triangle 
          # the upper triangle takes the base row 
          # that's why rows - 1 
space_counter_new = 1 
for j in range(rows - 1): # same goes here 
    print((space * (space_counter_new)) + (star * (star_counter_new)) + 
    (star * (star_counter_new - 1)) + (space * (space_counter_new))) 
    space_counter_new += 1 
    star_counter_new -= 1