2011-01-26 18 views
2

私は単語がlength_of_word |私は以下のリンクにあるようなヒストグラムを作成したいのですが、numpyやそれに類するものはありません。ヒストグラムをpythonで印刷する3

http://dev.collabshot.com/show/723400/

少なくともいくつかのポインタで私を助けてください。

+0

少なくとも入力の例と期待される出力を提供する必要があります。辞書からの5つのエントリーとそれに対応するヒストグラムを言う。 – aaronasterling

+0

これは、OreillyのPython 1クラスの最終試験の一部であると言わざるを得ないでしょう。 :) – Justin

答えて

3

dictはこのように見えますか?左の値を表示すると、10より大きい数字は持っていない、正しくフォーマットするために少しより多くの仕事があります、

>>> def histo(dict_words): 
    # Get max values, plus delta to ease display 
    x_max = max(dict_words.keys()) + 2 
    y_max = max(dict_words.values()) + 2 
    # print line per line 
    print '^' 
    for j in range(y_max, 0, -1): 
     s = '|' 
     for i in range(1, x_max): 
      if i in dict_words.keys() and dict_words[i] >= j: 
       s += '***' 
      else: 
       s += ' ' 
     print s 
    # print x axis 
    s = '+' 
    for i in range(1, x_max): 
     s += '---' 
    s += '>' 
    print s 
    # print indexes 
    s = ' ' 
    for i in range(1, x_max): 
     s += ' %d ' % i 
    print s 


>>> histo(d) 
^ 
|       
|       
| ******     
| ******     
| ******     
| ******     
| *********    
| ************    
| ***************   
| ***************   
| ******************  
|************************ 
+---------------------------> 
    1 2 3 4 5 6 7 8 9 
>>> 

OK:

>>> d = {1:1, 2:10, 3:10, 4:6, 5:5, 6:4, 7:2, 8:1} 
>>> d 
{1: 1, 2: 10, 3: 10, 4: 6, 5: 5, 6: 4, 7: 2, 8: 1} 

もしそうなら、私は、トリックを行う機能を持っていますインデックスの変更がありますが、それは良いスタートだと思います:-)