aboutsummaryrefslogtreecommitdiff
path: root/challenge-032/paulo-custodio/python/ch-2.py
blob: 6a0b7385c7ec759d532866b3225ac736c60ab311 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/python3

# Challenge 032
#
# Task #2
# Contributed by Neil Bowers
# ASCII bar chart
# Write a function that takes a hashref where the keys are labels and the
# values are integer or floating point values. Generate a bar graph of the
# data and display it to stdout.
#
# The input could be something like:
#
# $data = { apple => 3, cherry => 2, banana => 1 };
# generate_bar_graph($data);
# And would then generate something like this:
#
#  apple | ############
# cherry | ########
# banana | ####
# If you fancy then please try this as well: (a) the function could let you
# specify whether the chart should be ordered by (1) the labels, or (2) the
# values.

data = { 'apple':3, 'cherry':2, 'banana':1 }

def chart(data):
    # get size of keys
    width = max([len(x) for x in data])

    # output data
    for key in sorted(data):
        print(("{:"+str(width)+"s} | {}").format(key, "##"*data[key]))

chart(data)