2013-05-13 88 views
1

我來自Google的App Inventor背景。我正在參加在線課程。Asterisk Triangle

任務:用嵌套的while循環圈出星號。三角形有19個星號的基數和10個星號的高度。

這就是我的位置。

Num = 1 

while Num <= 19: 

     print '*' 
     Num = Num * '*' + 2 
print Num 

回答

0

可以使用從字符串對象的「center'法:

width = 19 

for num in range(1, width + 1, 2): 
    print(('*' * num).center(width)) 

     *   
     ***   
     *****  
     *******  
    *********  
    ***********  
    ************* 
    *************** 
***************** 
******************* 
1

你與 民=民做* '*' + 2 如下:

  • 您創建一個字符串(民倍 '*'),這是你想要的
  • 然後嘗試添加兩個,你可能會看到如下錯誤不能連接「海峽」和「廉政」對象,因爲沒有辦法一個添加到INT(至少在Python中)。相反,您可能希望僅將兩個添加到Num
1

這是一個很酷的技巧 - 在Python中,你可以乘以一個數一個字符串*,它將成爲連接在一起字符串的許多副本。

>>> "X "*10 
'X X X X X X X X X X ' 

你還可以用+連接兩個字符串在一起:

>>> " "*3 + "X "*10 
' X X X X X X X X X X ' 

所以Python代碼可以是一個簡單的for循環:

for i in range(10): 
    s = "" 
    # concatenate to s how many spaces to align the left side of the pyramid? 
    # concatenate to s how many asterisks separated by spaces? 
    print s 
0

通常你不會使用嵌套while this loop for this problem,but here's one way

rows = 10 
while rows: 
    rows -=1 
    cols = 20 
    line = "" 
    while cols: 
     cols -=1 
     if rows < cols < 20-rows: 
      line += '*' 
     else: 
      line += ' ' 
    print line 
+0

謝謝您的建議!這對我來說合乎邏輯...但我唯一的問題是現在弄清楚如何使這看起來像這裏的例子一樣:https://sites.google.com/site/colinclaytonappinventor/python-work(我couldn' t因爲我是一個新成員,以任何其他方式張貼金字塔的圖像)我將如何翻轉它? – user2376566 2013-05-13 09:13:06

1
n = 0 
w = 19 
h = 10 
rows = [] 
while n < h: 
    rows.append(' '*n+'*'*(w-2*n)+' '*n) 
    n += 1 
print('\n'.join(reversed(rows))) 

可生產

  *   
     ***   
     *****  
     *******  
    *********  
    ***********  
    ************* #etc... 
    *************** #2 space on both sides withd-4 * 
***************** #1 space on both sides, width-2 * 
******************* #0 spaces 
>>> len(rows[-1]) 
19 
>>> len(rows) 
10 
0

(count - 1) * 2 + 1計算每行中的星號的數目。

count = 1 
while count <= 10: 
    print('*' * ((count - 1) * 2 + 1)) 
    count += 1 

當然你可以去簡單的方法。

count = 1 
while count <= 20: 
    print('*' * count) 
    count += 2 
+0

感謝您的建議!這對我來說似乎也很容易理解,但我需要找到一種方法來調整它,使其看起來更像這裏的照片示例https://sites.google.com/site/colinclaytonappinventor/python-work我想這是在哪裏我會使用嵌套while循環,但我很困惑我會調整。從應用發明者這樣的塊語言到Python的過渡一直有點困難...... – user2376566 2013-05-13 09:17:13