2016-03-08 118 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