On Sat, Nov 23, 2013 at 08:57:54PM +0100, Rafael Knuth wrote: > I have only one question left. > Here's my original program again: > > for x in range(2, 10): > for y in range(2, x): > if x % y == 0: > print(x, "equals", y, "*", x//y) > break > else: > print(x, "is a prime number") > > So the first output of the outer loop is: 2. > It's then passed to the inner loop: > > for y in range(2,x): > if x % y == 0: > ... > > And I was wondering what is happening inside that loop.
Absolutely nothing! The inner loop doesn't get executed. Python first generates the range object range(2, 2) which is empty (it starts at 2 and stops at 2). Since y iterates over an empty list, the loop immediately exits and the body gets executed zero times. > The output of > > for y in range (2,2): > > should be ... none - correct? Not quite "none", more like *nothing*. There's no output at all, because the body isn't executed even once. [...] > Just want to understand how Python deals with "no values" within a program. It doesn't. Things always have a value, if they are executed at all. But if they don't get executed, then they don't exist at all. if False: # This code never runs! print("This will never be printed") x = 23 print(x) At this point (unless x happened to have been defined even earlier in the code), trying to print x will cause a NameError -- the name 'x' doesn't exist. -- Steven _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor