Python text-based game
As @l0b0 pointed out, you probably messed up your indents upon copying. Assuming they work:

First, looking at your question() functions, you can see a pattern, they prompt the user with a question. The user then has only two choices (binary like). If the user fails to enter a valid answer, they get prompted again. So why not create a function that gets passed the question and the binary answers? This also allows for easier expansion down the line like so:

def binary_question(question, answers):
    while True:
        print(question)
        Answer = input()
        if Answer in answers:
            print(answers[Answer])
            break
        else:
            print('try again...')


Questions = [
    '\nDo you get up and see what could be the source of this light? \nOr do you wait?',
    '\nThe light turns out to be a torch. Do you take this torch? enter y / n.',
]

Answers = [
    {
        'get up': 'You begin to walk towards the light.',
        'I get up': 'You begin to walk towards the light.',
        'wait': 'you wait, no one comes and you die...',
    },
    {
        'y': 'good choice, you pick up the torch and walk the out of the cave.',
        'n': 'well now your blind and dead...',
    },
]

game()
for que, ans in zip(Questions, Answers):
    binary_question(que, ans)


If you are not familiar with dictionaries or zip() look them up.

Second, you can allow for more choices by changing the user input strings to lower case and populating your Answers list to be only lower case. That way the user can enter "I get up" or "i get up", or "I GET UP", etc, and still get a valid response. Like so:

def binary_question(question, answers):
    while True:
        print(question)
        Answer = input()
        Answer = Answer.lower()
        if Answer in answers:
            print(answers[Answer])
            break
        else:
            print('try again...')


Questions = [
    '\nDo you get up and see what could be the source of this light? \nOr do you wait?',
    '\nThe light turns out to be a torch. Do you take this torch? enter y / n.',
]

Answers = [
    {
        'get up': 'You begin to walk towards the light.',
        'i get up': 'You begin to walk towards the light.',
        'wait': 'you wait, no one comes and you die...',
    },
    {
        'y': 'good choice, you pick up the torch and walk the out of the cave.',
        'n': 'well now your blind and dead...',
    },
]

game()
for que, ans in zip(Questions, Answers):
    binary_question(que, ans)


As you can see, we made use of str.lower() function and wrote lowercase only answers in our Answers dict.

Third, I just realized that if the player dies in question one, question two still gets asked. You need a return value to your main loop so you can break in case you are dead:

def binary_question(question, answers):
    while True:
        print(question)
        Answer = input()
        Answer = Answer.lower()
        if Answer in answers:
            print(answers[Answer][0])
            return answers[Answer][1]
        print('try again...')


Questions = [
    '\nDo you get up and see what could be the source of this light? \nOr do you wait?',
    '\nThe light turns out to be a torch. Do you take this torch? enter y / n.',
]

# can use named tuples here to make code more readable
# read about it if interested.
Answers = [
    {
        'get up': ('You begin to walk towards the light.', True),
        'i get up': ('You begin to walk towards the light.', True),
        'wait': ('you wait, no one comes and you die...', False),
    },
    {
        'y': ('good choice, you pick up the torch and walk the out of the cave.', True),
        'n': ('well now your blind and dead...', False),
    },
]

game()
for que, ans in zip(Questions, Answers):
    alive = binary_question(que, ans)
    if not alive:
        break


The new boolean values in Answers[] signify if that answer kills the player. In this case, True = alive and False = dead.