Simple function to generate a list of letters
Some notes on your code:


def f(arg = False) -> def f(arg=False) (PEP8)
case = case.lower() Usually it's not a good idea to reuse variables: new values, new variable names.
else + indent + if = elif
Use (true_value if condition else false_value) for short conditional expressions.
ascii_uppercase[i] for i in range(n). This will fail if n is greater than the size of letters.
[choice(alphabet) for i in range(n)]. This repeats characters, is that ok? It seems more fitting to use random.sample(alphabet, n), which does not repeat elements.
case: It's not idiomatic to send strings this way. Use a boolean argument instead (as @oliverpool proposed). 


I'd write:

from random import sample
from string import ascii_uppercase, ascii_lowercase

def get_letters(n, random=False, uppercase=False):
    """Return n letters of the alphabet."""
    letters = (ascii_uppercase if uppercase else ascii_lowercase)
    return (sample(letters, n) if random else list(letters[:n]))