Sign up ×
Programming Puzzles & Code Golf Stack Exchange is a question and answer site for programming puzzle enthusiasts and code golfers. It's 100% free, no registration required.

I'm work on a problem which I set myself for fun, which is to create a python script which prints the even numbers from 0 to 100. The challenge is to make the script as small as possible. This is what I have so far:

for x in range(0, 101):
    if (x % 2 == 0):
        print x

Currently it is 60 bytes. Can anyone think of a way to make it smaller?

Edit: print(*range(2,101,2),sep='\n') which is 30 bytes. Any smaller?

share|improve this question
i=2;exec"print i;i+=2;"*50 –  bitpwner Aug 11 '14 at 14:37
This tip is located in the python golfing tips page…. –  bitpwner Aug 11 '14 at 14:52
Is this supposed to start at 0 or 2? I don't python much, but it looks to me like your two examples do different things. Please correct me if not. –  Geobits Aug 11 '14 at 16:03
print "0 10 100" (is binary OK?) –  squeamish ossifrage Aug 11 '14 at 19:13
@squeamishossifrage don't forget to golf out the space ;) –  isaacg Aug 11 '14 at 19:25

13 Answers 13

Python 2 - 12 characters

print 8**999

The decimal representation of all even numbers from 0 to 100 can be found in the output:


As a bonus, so can the odd numbers.

share|improve this answer
Only problem: It prints the odd numbers and a lot more too. –  Seeq Aug 13 '14 at 16:33
+1 for making me laugh. –  paqogomez Aug 13 '14 at 17:14
@Sieg, even and odd... kinda got all the bases covered, not sure how you find "a lot more" in that. ;) –  paqogomez Aug 13 '14 at 17:16
Isn't the first time I have a different opinion than other users. I like your answer anyways. –  Seeq Aug 13 '14 at 17:24
@paqogomez even numbers 0-100, the odd numbers, and a lot more even numbers >100 –  Ollie Ford Aug 14 '14 at 10:33

Python 3, 22 (Possibly not allowed)

If the challenge is "to create a python script which prints the even numbers from 0 to 100" and not "to create a python script which prints the even numbers from 0 to 100, newline separated", then the shortest solution is:


Remember, it's very important in code golf not to put any limitations on yourself you don't have to - do what the problem asks, and no more.

share|improve this answer
Wouldn't OP's second answer in the edit make you think he wanted it newline separated? –  Moop Aug 11 '14 at 17:31
That's entirely possibly, and is why possibly not allowed is in the title. On the other hand, it's also possible that he/she got caught up in matching the output of his initial program, and forgot the initial problem spec. Since I don't know which is the case, I gave this answer. –  isaacg Aug 11 '14 at 17:33

Python2 26

i=0;exec"print i;i+=2;"*51

independent discovery of @bitpwner's solution

share|improve this answer
I get a SyntaxError when I try to run that. Should this answer's top line say "Python 2, 26"? –  Ricky Demer Aug 12 '14 at 0:53
+1, you appear to have been 58 seconds faster to post this solution. :) –  Ilmari Karonen Aug 17 '14 at 14:47

Python 2 - 26

i=0;exec"print i;i+=2;"*51

Based on the tip on exec with string multiplication found at Tips for golfing in Python.

share|improve this answer
Should include 0, see Sparr's solution. –  isaacg Aug 11 '14 at 17:23
I get a SyntaxError when I try to run that. Should this answer's top line say "Python 2 - 26"? –  Ricky Demer Aug 12 '14 at 2:57

Python 2, 26 (possibly not allowed)

while i:i-=2;print i

It wasn’t strictly specified, in which order the numbers were to be printed.

share|improve this answer

Python 2, 28

for i in range(51):print 2*i
share|improve this answer

Python 2 - 20 (Possibly not allowed)

This is python 2 specific and probably cheating since it prints the list, but since all numbers end up on the screen:

print range(0,101,2)
share|improve this answer

Python 2 in *NIX, 24

os.system('seq 0 2 100')

If you need to add

import os

Then the total is 33 characters.

share|improve this answer
Clever - This might well be superior in some cases. Is it OS specific? –  isaacg Aug 11 '14 at 19:54
@isaacg Very much so, as os.system calls a system program. –  Seeq Aug 11 '14 at 20:31
If that's allowed, then os.system('a'), because I happen to have a program called a with the desired behaviour on my system.. –  Ollie Ford Aug 13 '14 at 12:33
@OllieFord seq is part of gnu coreutils. You don't have quite as much clout. –  Sparr Aug 14 '14 at 1:55

Python 3, 29


If you're in Python 2 and happen to have already imported the print function, you don't have to make the iterator object into a list and it becomes 25 characters:


I don't know that that's entirely fair though.

Here's another fun idea that works in python 2 or 3. It's a tad longer.

def p(i):
    if i+2:p(i-2);print i
share|improve this answer
The Python 3 version can be shortened to *a,=map(print,range(0,101,2)) using Extended Iterable Unpacking. –  flornquake Aug 13 '14 at 23:12
@flornquake Thanks, I've updated it. –  IanH Aug 14 '14 at 1:47

Python 2 - 24

0;exec"_+=2;print _;"*50

(based on bitpwner and Sparr solution)

In the shell, "_" contains the value of the previously evaluated expression

share|improve this answer
You should note that this only works, if pasted into the interactive mode of some Python interpreters (e.g., it does not work in IPython) and not as a script. –  Wrzlprmft Aug 12 '14 at 12:10
you're right, i forgot to mention that. (btw works in the standard Python console) –  le_vine Aug 12 '14 at 12:13
-1 -- The question explicitly mentions a python script, which means the code should be written to a file and executed. Otherwise a better solution would simply be:range(0,102,2) since this would display all the even numbers (plus some commas and two brackets) on the screen. –  Bakuriu Aug 13 '14 at 11:41

Python List Comprehension - 39

This uses a list comprehension, one trick to make it shorter is to multiply the index by 2 rather than going from 0 to 100 and a trailing if x % 2 check for even.

print'\n'.join(`2*x`for x in range(51))

Using a map and @isaacg's suggestion it ends up being the same 39 characters:


Edit: After separating values by newline it is by far not the shortest.

share|improve this answer
This doesn't answer the question - OP says prints the even numbers from 0 to 100, not just generate them. Also, if you just want the list, range(0,101,2) is shorter. –  isaacg Aug 11 '14 at 19:51
@isaacg Updated to answer the question, now much longer, needing to embed each value in str() for the join kills it. –  Ed Griebel Aug 11 '14 at 21:11
@Wrzlprmft Thanks for the suggestion, didn't know I could do that! Code changed to reflect this new knowledge. –  Ed Griebel Aug 12 '14 at 15:01

Python 2 - 20 (questionable)

If isaacg's space-separated solution is OK, then presumably the normal list formatting is as well:

print range(0,101,2)

For further rule-twisting, apply SirBraneDamuj's suggestion from the comments:

print range(101)

and you are at 16. So what if there's some extra garbage separating them?

share|improve this answer

33 bytes

print [x for x in range(0,101,2)]
share|improve this answer
You can edit your previous post if you want to make changes. And please include a byte count of your code. –  Martin Büttner Dec 1 '14 at 14:02
This does not provide an answer to the question. To critique or request clarification from an author, leave a comment below their post - you can always comment on your own posts, and once you have sufficient reputation you will be able to comment on any post. –  NinjaBearMonkey Dec 1 '14 at 15:01

protected by Community Dec 5 '14 at 22:00

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.