Killing and reviving TV Characters This program displays a list of TV characters. You can kill them off by random or bring them back by name. I have used the random.choice function. I've defined a couple of functions so that the while loop looks a little more clean. In two of the functions, bring_back and check_decision, we assign True to invalid_input if user input is invalid, like a flag.
This program is for learning purposes.
from random import choice

tv_characters = [
    'john', 'henry', 'maria', 'jason', 
    'max', 'lara', 'gilbert', 'paris'
    ]

killed_tv_characters = []
valid_decision_input = ['kill off', 'bring back']

start_prompt = &quot;Would you like to start (yes/no)?&quot;
decision_prompt = &quot;\nWould you like to bring back a character you killed?&quot;
decision_prompt += &quot;\nOr would you like to kill off another character?&quot;
decision_prompt += &quot;\nEnter 'kill off' or 'bring back' -&gt;&quot;
character_from_dead_prompt = &quot;\nPlease enter the name of character you would like to bring back: &quot;
confirm_kill_prompt = &quot;\nEnter 'kill off' to kill your first character: &quot;




def kill_tv_characters():
    &quot;&quot;&quot;Kills a random tv character and displays the name on the screen.&quot;&quot;&quot;
    if tv_characters:
        killed_tv_character = choice(tv_characters)
        tv_characters.remove(killed_tv_character)
        print(f&quot;You have killed off {killed_tv_character.title()}&quot;)
        killed_tv_characters.append(killed_tv_character)
    else:
        print(&quot;You have killed off all the characters!&quot;)

def bring_back(name):
    &quot;&quot;&quot;Brings back a dead character.&quot;&quot;&quot;
    name = name.lower().strip()
    if name in killed_tv_characters:
        killed_tv_characters.remove(name)
        tv_characters.append(name)
        print(f&quot;\nYou have brought {name.title()} back to life!&quot;)
    elif name in tv_characters:
        print(f&quot;{name} isn't dead!&quot;)
        invalid_input = True
    else:
        print(f&quot;{name} isn't a character!&quot;)
        invalid_input = True

def check_decision(user_input):
    &quot;&quot;&quot;Checks user input for decision.&quot;&quot;&quot;
    if user_input in valid_decision_input and user_input == 'kill off':
        return user_input
    elif user_input in valid_decision_input and user_input == 'bring back':
        return user_input
    else:
        invalid_input == True
        print(&quot;Please enter a valid input!&quot;)
print(&quot;\nYou can kill off characters randomly and add them back my name!&quot;)


start = input(start_prompt)
if start == 'yes':
    start = True
else:
    start = False


while tv_characters and start:
    invalid_input = None

    print(&quot;\nThese are the living TV characters:&quot;)
    for tv_character in tv_characters:
        print(tv_character.title()) 
    if killed_tv_characters:
        user_decision = input(decision_prompt)
        decision = check_decision(user_decision)
        if invalid_input:
            continue
        if decision == 'kill off':
            kill_tv_characters()
        if decision == 'bring back':
            character_from_dead = input(character_from_dead_prompt)
            bring_back(character_from_dead)
            if invalid_input:
                continue

    else:
        confirm_kill = input(confirm_kill_prompt)
        if confirm_kill != 'kill off':
            print(&quot;You have entered an invalid input.&quot;)
            continue
        kill_tv_characters()

            
if tv_characters == False:
    print(&quot;You have killed off all the characters.&quot;)
    print(&quot;Thanks for playing!&quot;)

else:
    print(&quot;Goodbye&quot;)
User interface decisions
Having a start option is an odd choice. If the user started the program itself, is it likely that they don't want to start the rest of its logic?
Successive concatenation
This:
decision_prompt = &quot;\nWould you like to bring back a character you killed?&quot;
decision_prompt += &quot;\nOr would you like to kill off another character?&quot;
decision_prompt += &quot;\nEnter 'kill off' or 'bring back' -&gt;&quot;

is better off as
DECISION_PROMPT = '''
Would you like to bring back a character you killed?
Or would you like to kill off another character?
Enter 'kill off' or 'bring back' -&gt;'''

Data structures
It seems that the order of killed_tv_characters does not matter, so it should be a set, not a list.
Input validation
This:
&quot;&quot;&quot;Checks user input for decision.&quot;&quot;&quot;
if user_input in valid_decision_input and user_input == 'kill off':
    return user_input
elif user_input in valid_decision_input and user_input == 'bring back':
    return user_input
else:
    invalid_input == True
    print(&quot;Please enter a valid input!&quot;)

has a few problems:

invalid_input == True doesn't do what you think it does; it's a no-effect statement
This doesn't really benefit from the combination of valid_decision_input (which should be a set) and checking for specific strings
Early-return means that you don't need to use else

Here is an alternative:
if user_input in valid_decision_input:
    return user_input
invalid_input = True
print(&quot;Please enter a valid input!&quot;)

Other concerns:

This will set a local invalid_input unless you declare it global at the top
Rather than returning a string, consider returning an Enum to narrowly represent user choice

Booleans
This:
if tv_characters == False:

should be
if not tv_characters: