2016-03-08 51 views
-1

豆機,也被稱爲梅花或Galton盒,是以英國科學家Sir Francis Galton命名的統計實驗設備。它由一個直立板在一個三角形的形式均勻分佈的釘子(或釘):豆機功能 - Python

見圖下面的總體思路

enter image description here

我有想出將打印的方法麻煩列出(豆類的積累)的直方圖,列出每列中豆的數量。

end_location = [1, 0, 3, 5, 7, 0, 0, 3]

注意,end_location列表可能並不總是8列,它會有所不同,所以這將是美妙的,如果該方法不依賴於有隻爲8列。解決這個問題的一種可能方式可能是num_column = len(end_location),它將分配num_column變量所需的列數。

最後,這樣的事情應該被輸出(返回或印刷,優選返回):

end_location = [1, 0, 3, 5, 7, 0, 0, 3]

0 
    0 
    00 
    00 
    000 0 
    000 0 
0 000 0 

有一個豆在所述第一位置,0在第二,三在第三,五,第四,7在第五,等...

感謝

回答

1

給這個:

end_location = [1, 0, 3, 5, 7, 0, 0, 3] 

最多會有max(end_location)行。

''.join('0' if x >= v else ' ' for x in end_location) 

哪裏v是從max(end_location)1

每一行可通過計算。

因此打印的行的代碼是:

>>> end_location = [1, 0, 3, 5, 7, 0, 0, 3] 
>>> for v in reversed(range(1, max(end_location)+1)): 
...  print(''.join('0' if x >= v else ' ' for x in end_location)) 
... 
    0 
    0 
    00 
    00 
    000 0 
    000 0 
0 000 0