Reputation: 79
The user is prompted for a file, which in this case is 'histogram.txt'. The program takes each score in the text file and makes a histogram out of all the grades in the file, organizing them so that the user can see how many of each range there are. I wrote out a very simple code:
filename = raw_input('Enter filename of grades: ')
histogram10 = 0
histogram9 = 0
histogram8 = 0
histogram7 = 0
histogram6 = 0
histogram5 = 0
histogram4 = 0
histogram3 = 0
histogram2 = 0
histogram1 = 0
histogram0 = 0
for score in open(filename):
if score >= 100:
histogram10 = histogram10 + 1
elif score >= 90:
histogram9 = histogram9 + 1
elif score >= 80:
histogram8 = histogram8 + 1
elif score >= 70:
histogram7 = histogram7 + 1
elif score >= 60:
histogram6 = histogram6 + 1
elif score >= 50:
histogram5 = histogram5 + 1
elif score >= 40:
histogram4 = histogram4 + 1
elif score >= 30:
histogram3 = histogram3 + 1
elif score >= 20:
histogram2 = histogram2 + 1
elif score >= 10:
histogram1 = histogram1 + 1
elif score >= 0:
histogram0 = histogram0 + 1
print
print 'Grade Distribution'
print '------------------'
print '100 :',('*' * histogram10)
print '90 - 99 :',('*' * histogram9)
print '80 - 89 :',('*' * histogram8)
print '70 - 79 :',('*' * histogram7)
print '60 - 69 :',('*' * histogram6)
print '50 - 59 :',('*' * histogram5)
print '40 - 49 :',('*' * histogram4)
print '30 - 39 :',('*' * histogram3)
print '20 - 29 :',('*' * histogram2)
print '10 - 19 :',('*' * histogram1)
print '00 - 09 :',('*' * histogram0)
however whenever i run the program, all twenty grades get recorded onto the >= 100 like this:
100 : ********************
90-99 :
80-89 :
etc. ... How do I make it so that the program puts the stars in the correct places?
Upvotes: 0
Views: 766
Reputation: 46027
You need to convert score
to int before comparing.
score = int(score) # convert to int
if score >= 100:
histogram10 = histogram10 + 1
# other cases
If you have blank lines in input file then you have to add necessary check before converting to int. Also instead of ten different variables you can easily use a list.
Upvotes: 2
Reputation: 798456
Data read from a file is a string. Convert it to an integer first by passing it to int()
.
>>> int('25')
25
Upvotes: 4