I have this code:
while True:
    i=input'enter #enter or character:'
    if not i:
        break
This breaks the program if they enter enter, but I want it to break immediately if they don't answer after 3 seconds.
How would I do this?
Python 3 Timed Input (@mediocrity : maybe you vote his answer up if you like the result, since he had to put effort in answering the question and deserves credit) shows a nice example of what you are looking for.
I copied it here for you:
import time
from threading import Thread
answer = None
def check():
    time.sleep(3)
    if answer != None:
        return
    print "Too Slow"
Thread(target = check).start()
answer = raw_input("Input something: ")
print(answer)
print ("done")
I think the minor differences of this answer and your question you can yourself.
I hope that helps
EDIT: I found something really cool for Linux (I do not know if it runs with Windows) here: http://www.garyrobinson.net/2009/10/non-blocking-raw_input-for-python.html
I know it is not yet what you need, but I still post it, because it might help someone else. That is what Gary Robinson wrote:
OCTOBER 17, 2009 Non-Blocking Raw_input For Python [Edited Aug. 30, 2010 to fix a typo in the function name and generally improve formatting]
I needed a way to allow a raw_input() call to time out. In case it's useful to anyone, I wrote this solution which works under Unix-like OS's.
import signal
class AlarmException(Exception):
    pass
def alarmHandler(signum, frame):
    raise AlarmException
def nonBlockingRawInput(prompt='', timeout=20):
    signal.signal(signal.SIGALRM, alarmHandler)
    signal.alarm(timeout)
    try:
        text = raw_input(prompt)
        signal.alarm(0)
        return text
    except AlarmException:
        print '\nPrompt timeout. Continuing...'
    signal.signal(signal.SIGALRM, signal.SIG_IGN)
    return ''
ans = None
ans = nonBlockingRawInput("Input Something: ", 3)
print ans