2014-03-04 56 views
0

這是我的代碼,但我很難讓金字塔像金字塔一樣正確地間隔,並且每行只有奇數個星號。當你爲基地進入7應該是星號金字塔沒有間隔正確

* 
    *** 
***** 
******* 

輸出這是我的代碼:

base = int(input('enter an odd number for the base : ')) 
for i in range(0, base): 
    print '*' * i 
+1

哇,這是從過去的爆炸:http://stackoverflow.com/questions/4911341/pyramid-of-asterisks-program-in-python/4911427# 4911427 –

回答

2

你可以使用str.center()

for i in range(1, base + 1, 2): 
    print ('*' * i).center(base) 

但要儘量用2步長,並調整你的範圍。第一行始終爲1星,而range()不包含最後一個值。

對於7,這意味着你想打印1,3,5和7顆星,每次迭代增加2。

+0

如果我現在想用奇數和2來做每次迭代的同樣的事情,但做出一個菱形,我該怎麼做?我假設你將不得不有三角形鏡子本身,但我不知道該怎麼做 – user3317056

+0

使用*兩個*循環;第二個將使用負面步驟來縮小範圍。第一個循環可以從'range(1,base,2)'開始,第二個循環可以到'range(base,0,-2)'。 –

+0

其實我只是在我看到你的評論之前試過,但是我無法擺脫顯示兩倍的基數 – user3317056

1

有在你的代碼中的一些錯誤:

  1. 由於您使用print '...'而不是函數print,你可能會在python2,在那裏,而不是需要的inputraw_input;
  2. range(1, base+1, 2)需要改爲您的示例輸出。

演示:

In [6]: base = int(raw_input('enter an odd number for the base : ')) 
    ...: for i in range(1, base+1, 2): 
    ...:  print ('*' * i).center(base) 

enter an odd number for the base : 7 
    * 
    *** 
***** 
*******