EDIT: I saw your post before you deleted it, also it takes about 20 mins to learn python.
Qfox, you've got some valid points. Executing the keyword print generates a new line every time, so it doesn't fit with requirements if you use print more than once. Also, (OmnipotentEntity got me with this one), you can't use print, you must use sys.stdout.write, because if you use print, a new line is generated after the program executes which is considered trailing whitespace.
Your first one actually runs, but all the numbers are in a giant column, they are the right numbers though. The second one gets a div0 error, but correcting you:
print 1
for x in range(1001):
for y in range(2,x):
if x%7!=0 and x%y==0:
print str(x)+' '
you still get a giant column of numbers, and many of the numbers repeat themselves, but to give you credit, they are the right numbers, and you do know nothing about python.
the last one give syntatical errors, you need that new line, you can't just have one giant line of code.
Believe me,it seems sensible to try any of the alternatives that you provided, but I am about as knowledgeable at python as you are (I learned all the python i know yesterday) . I have tried most of these things, and they need extra code to make them work, if you were to ask me my opinion, I would say ytterbiums solution is the absolute fastest one there is. A 'sets' approach may be more efficient.
on a semi unrelated note, I was going for the "other" category and decided to use NASM because it looked interesting. (it compiles into machine code). Anyways I started off with a nice easy print the first 1000 numbers on screen. It compiled to only 30 bytes and when run produces a window that will not close, makes an indefinitely occuring beeping noise, and displays random characters in the command prompt. Now where the hell did I go wrong to produce such an abomination.
ƻ뤀ϨḁĀᚋĀ⇍ูĀ䲴⇍
that's the code. name it anything.com. use at your own risk