Calculating chmod based on user input
Concise coding

After moving the documentation of the function after the line containing def as the convention stands we have:

def whoCan(doThis):
    '''
    This is a simple function that prevents me from repeating myself.
    Usage:
        whoCan('execute')
    will return 'Who can execute?'

    If I use `print` instead of `return` here, this is the output:

     Who can read?
     None

    Why is that?
    '''
    return "Who can %s?" % doThis


The second paragraph is just a doubt that is not really relevant to this function (the reason is that: using print creates a function with no return of which the return is implicitly None, that is printed by raw_input), so we can remove it:

def whoCan(doThis):
    '''
    This is a simple function that prevents me from repeating myself.
    Usage:
        whoCan('execute')
    will return 'Who can execute?'
    '''
    return "Who can %s?" % doThis


I can already see that it is a (simple) function, and functions are usually used to avoid repetition so we can remove it too:

def whoCan(doThis):
    '''
    Usage:
        whoCan('execute')
    will return 'Who can execute?'
    '''
    return "Who can %s?" % doThis


In fact we may remove this whole function as it is just doing "Who can {}?".format(action) where x is the input.

To avoid repetition we will use a generator expression:

read, write, execute = (raw_input("Who can {}?".format(action)) for action in ('read', 'write', 'execute'))


The last part can be shortened with a dictionary and a function that calls sum on a generator expression:

name_to_val = {'ow' : 4, 'gr' : 2, 'ot' : 1}

def chmod_value(x):
    return sum(name_to_val(name) for name in name_to_val.keys() if name in x)


You also do not need to initialize variables with zero, in fact you do not need variables at all:

print [chmod_value(x) for x in (read, write, execute)]