William Morgan wrote:

>Excerpts from Gergely Kontra's mail of 19 Sep 2005 (CDT):
>  
>
>>Is there a similar construct to python's:
>>
>>    
>>
>>>>>for n in range(2, 10):
>>>>>          
>>>>>
>>...     for x in range(2, n):
>>...         if n % x == 0:
>>...             print n, 'equals', x, '*', n/x
>>...             break
>>...     else:
>>...         # loop fell through without finding a factor
>>...         print n, 'is a prime number'
>>... 
>>    
>>
>
>I don't think there's a direct idiom. I'd write this in Ruby as:
>
>(2...10).each do |n|
>  fac = (2...n).find { |x| n % x == 0 }
>  if fac
>    puts "#{n} equals #{fac} * #{n / fac}"
>  else
>    puts "#{n} is a prime number"
>  end
>end
>
>This is much clearer IMO.
>
Yeah, this isn't any clearer, but here's one that demonstrates the 
possibilities in tying iterators and conditionals together.  It works 
because `break' causes the iterator to return nil.

  for n in 2...10
    puts "#{ n } is a prime number" if
      for x in 2...n
        if n % x == 0
          puts "#{ n } equals #{ x }*#{ n/x }"
          break
        end
      end
  end

_why