I believe this does what you are looking for. Note this is likely not the way that you want to store the individual statuses (a defaultdict would likely make more sense), but hopefully this makes sense from a conceptual standpoint:
def comparisons(value):
"""Only change here is using x <= y < z syntax."""
if value < 5:
status = 'nill'
total = 0
elif 5 <= value < 8:
status = 'valid'
total = 1
elif 8 <= value < 12:
status = 'superb'
total = 5
else:
status = 'over-qualified'
total = 10
# Here we return the status and the total for each item
# This may not be what you want, so this can be adjusted
return status, total
# Create a list that will contain your 15 items
items = ['Engineering', 'Carpentry']
# Create a container to hold the results.
# Note that we don't use different variables names each time -
# instead, we create an entry in a dictionary corresponding to
# our 'items' values.
results = {}
# Now we iterate through each item in our items list, running
# our function and storing the results. Note that this is a guess
# as to how you want to handle 'status' - a more useful solution
# could be to use a nested dictionary where each item has a dictionary
# with two sub-fields: 'status' and 'total'.
for item in items:
status, total = comparisons(int(raw_input('{0}: '.format(item))))
results[item] = [status, total]
# Print out each item
print '\nIndividual items:'
for item, values in results.iteritems():
print item, values
# Example of how you could sum the totals
print '\nTotal score:'
print sum((results[x][1] for x in results))
Output:
Engineering: 10
Carpentry: 5
Individual items:
Engineering ['superb', 5]
Carpentry ['valid', 1]
Total scores:
6