2011-01-26 6 views
2

나는 길이가 length_of_word | 반복 사전 및 나는 numpy 또는 그것과 비슷한 아무것도 내장 된 파이썬 만 사용하여 아래의 링크와 같은 히스토그램을 만들고 싶습니다.파이썬에서 히스토그램을 인쇄하십시오. 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 
>>> 

확인 :

>>> 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} 

그렇다면, 나는 트릭을 수행하는 기능을 가지고 인덱스 전환은 좋은 출발이라고 생각합니다 :-)

관련 문제