2016-03-04 144 views
-5

我試圖創建一個由文字'o'組成的「文字三角形」。這是我寫的代碼:如何獲得O的三角形

base = 6 
print("Part Two: Triangle with o's") 
for r in range(base, 0, -1): 
    for c in range(r): 
     print(' ', end='') 
    print('o', sep='') 

我寫的代碼輸出這樣的:

 o 
    o 
    o 
    o 
    o 
o 

,但我想要的輸出是這樣的:

 o 
    oo 
    ooo 
    oooo 
ooooo 
oooooo 

可能有人請幫我鑑定我做錯了什麼?

+6

也許你應該將你的代碼複製粘貼到問題中,而不是向我們展示它的圖片。 –

+0

請將您的圖片內容作爲您的帖子中的代碼提交 – phenxd

+0

您的老師是否允許您在網上尋求幫助?因爲他們有很多工具可以幫助找到試圖欺騙的學生。 – JDB

回答

-1

這裏有一個函數來做到這一點:

def text_triangle(base, char): 
    return '\n'.join(' ' * (base-i) + char * i for i in range(1, base+1)) 

print(text_triangle(6, 'o')) 

不打算舉行的事實,你剛剛張貼的截圖反對你,因爲這個問題有很多事情要做的格式,這是很難在降價來表示。

編輯

你得到的每行空格正確的號碼(好樣的!)。您的代碼存在的問題是,您只需在每行上放置一個'o',而不是用'o'填充行的其餘部分。

base = 6 
for r in range(base-1, -1, -1): 
    for blank in range(0, r): 
     print(' ', end='') 
    for o in range(r, base): 
     print('o', end='') 
    print() 

要做到這一點,我們可以只寫另一個嵌套的循環,其中最後嵌套的循環不放過,在r,並且去,直到行,base結束拾取。最後,我們需要調用print(),在主for循環的底部沒有參數來獲取換行符。我希望這比我以前的快速回答更具解釋力。

上述內容符合老師的要求,但遠不是最好的解決方案。如果讓我來回答這個問題,沒有任何限制(即使用嵌套的for循環),我可能會做這樣的事情:

base = 6 
for r in range(base): 
    print('{:>{}}'.format('o' * (r+1), base)) 

該解決方案使用str.format()format specification mini-language右對齊'o'的。

+0

下決心是否願意解釋我的回答有什麼問題?它以相當有效的方式產生了OP所需的確切輸出。 – pzp

+4

也許是因爲你正在回答看起來像是*「爲我做作業」的問題*通過提供代碼轉儲來解答問題的原因,以及代碼在問題中出了什麼問題。提問者將如何學習從這個回答編程? – AdrianHHH

+0

答案必須嚴格使用for循環。而且我實際上希望被引導向正確的方向而不是僅僅得到答案。 – CWeech