Cleaning and simplifying function that returns a number based on certain values
some style issues to consider:

1) it's conventional to use ALL_CAPS for constants such as 'supers' and w1, etc.

2) for long term maintenance, it's also a good idea to use longer more descriptive names - not only is this hard to parse for the uninitiated, it's also prone to hard-to-catch typos which will be hard to spot.  It's especially bad when you do multiple assignments on a single line.

3) supers could be a dictionary

4) you can simplify the range logic by excepting for incomplete groups:

&lt;snip&gt;
enter code here
group = group.replace("-", "q") 
fnv, lnv = None
try:    
   fnv = group[:5] 
   lnv = group[6:9]
except IndexError:
   raise ValueError "group string %s is malformed"
fn_value = int(fnv, 36)
ln_value = max(int(lnv, 36), 1000) or 1000


5) maxNum is always the same, it should be a constant or a cached module-level field:

informative_name = sum(map(lambda x: x[1], supers)) 


at the top will execute at module load and wont need to be recalced for every call.