2015-01-08 47 views
0

這是本書從Python開始的一個精確副本。構建一個由星號組成的三角形的程序

base_size = 8 

def main(): 

    for r in range(base_size): 
     for c in range(r + 1): 
      print('*') 
     print() 

main() 

但它不給出正確的答案:

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

這是程序的輸出,打印*每一個新的生產線。那麼最後錯誤是什麼?

* 

* 
* 

* 
* 
* 

回答

0

base_size = 8 
 

 
def main(): 
 

 
    for r in range(base_size): 
 
     for c in range(r + 1): 
 
      print('*',sep=" ",end="") 
 
     print() 
 

 
main()

也許你可以嘗試插入(SEP =」」,結束= 「」)在過去的代碼。 希望我可以幫你

,或者你可以嘗試一個更容易爲 例如:

base_size = 8 
 

 
def main(): 
 

 
    for r in range(1,(base_size)): 
 
     print("*"*r) 
 

 
main()

+0

出於某種原因,它給了我一個合成器錯誤,當使用sep和結束,我使用pytho n 2 btw。 – PlateArmor

+0

有趣的是,你的第二個代碼可以工作,儘管作者希望我做一個嵌套循環。這個工作。 – PlateArmor

+0

如果您使用Python 2,則必須在腳本的頂部放置'from __future__ import print_function'才能使用。或者你可以在Python 2中將代碼更改爲'print'*','(注意尾隨逗號)。 –

0

因爲print輸出你告訴它一個換行符什麼。如果你想輸出字符沒有一個換行符,你需要稍微不同。

Python 3中,可以指定終止了print功能:

base_size = 8 
def main(): 
    for r in range(base_size): 
     for c in range(r + 1): 
      print('*', end="") 
     print() 
main() 

但是,如果你正在使用Python 2,你可以用:

import sys 
sys.stdout.write('*') 

等效行爲,在:

import sys 
base_size = 8 
def main(): 
    for r in range(base_size): 
     for c in range(r + 1): 
      sys.stdout.write('*') 
     sys.stdout.write('\n') 
main()