Q:

Syntax error with def

I am designing a program to test how fast you can type random quotes. I keep trying to run it, but it keeps giving me a syntax error and highlighting the def command. I have tried tampering with the indentations, thinking that is the problem. Here is all of the code:
import time, sys, random
random = ["Behind every great man is a woman rolling her eyes.", "A day without  sunshine is like, you know, night.", "If the facts don't fit the theory, change the facts.","Housework can't kill you, but why take a chance?", "Weather forecast for tonight: dark."
def main():          
 ready = raw_input("Are you ready to begin?")
 if ready == 'yes' or 'y':
    print "3..."
    time.sleep(1)
    print "2..."
    time.sleep(1)
    print "1..."
    time.sleep(1)
    now = time.time()
    quote = random.choice(random)
    print quote
    enter = raw_input()
    future = time.time()
    time = future - now
    if enter == quote:          
        correct = "You had no mistakes."
    else:
        correct = "You had mistake(s)."
    quote2 = len(quote)
    wordlen = quote2 / 5
    print "Results:"
    print "The quote was "+quote2+" letters long and approx. "+wordlen+" words long."+correct+"Good job!"

if ready == 'no' or 'n':
    print "Take your time."
    sys.exit()
else:
    print "What was that?"
    main()

A:

You didn't close your list:
random = ["Behind every great man is a woman rolling her eyes.", "A day without  sunshine is like, you know, night.", "If the facts don't fit the theory, change the facts.","Housework can't kill you, but why take a chance?", "Weather forecast for tonight: dark."]

A:

Your other error comes from using time = future - now.
Don't use the module name as a variable name, you have also done this using random as your list name.
Change time = future - now to something like time_diff = future - now
Change random as your list name to something like random_list changing it in your code also.
Keep in mind if statements are always evaluated so  the the order of your statements matter, if you have two conditions to check use if/elif as if the first if is True you don't need to evaluate the second statement.  elif statements are only evaluated if the first if statement is False. 
This code will work:
import  time,sys, random
# changed name from random to random_list
random_list = ["Behind every great man is a woman rolling her eyes.", "A day without  sunshine is like, you know, night.", "If the facts don't fit the theory, change the facts.","Housework can't kill you, but why take a chance?", "Weather forecast for tonight: dark."]
def main():
    ready = raw_input("Are you ready to begin?")

    if ready == 'yes' or ready =='y': # need to use or ready =='y' not or == "y"
        print "3..."
        time.sleep(1)
        print "2..."
        time.sleep(1)
        print "1..."
        time.sleep(1)
        now = time.time()
        quote = random.choice(random_list)
        print quote
    elif ready == 'no' or ready =='n':# moved from bottom to here and changed to elif.
        print "Take your time."
        sys.exit()
    else:
        print "What was that?"
        main()
    enter = raw_input("Enter the quote: ")
    future = time.time()
    time_diff = future - now # changed name to time_diff instead of time
    if enter == quote:
        correct = "You had no mistakes."
    else:
        correct = "You had mistake(s)."
    quote2 = len(quote)
    wordlen = quote2 / 5
    print "Results:"      # quote2 and wordlen are ints you need to cast as strings to join to another string.
    print "The quote was "+str(quote2)+" letters long and approx. "+str(wordlen)+" words long."+correct+"Good job!"

main()

