<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Nov 27, 2013 at 11:08 AM, Rafael Knuth <span dir="ltr"><<a href="mailto:rafael.knuth@gmail.com" target="_blank">rafael.knuth@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hej there,<br>
<br>
I am trying to figure out how exactly variables in nested loops are<br>
generated, and don't get it 100% right yet. Here's my code:<br>
<br>
for n in range(2, 10):<br>
    for x in range(2, n):<br>
        if n % x == 0:<br>
            print(n, 'equals', x, '*', n//x)<br>
            break<br>
    else:<br>
        print(n, 'is a prime number')<br>
<br>
And here's what I assume happens inside these for loops:<br>
<br>
#1 Round:<br>
n = 2<br>
x = no result<br>
>>><br>
2 is a prime number<br>
<br>
#2 Round:<br>
n = 3<br>
x = 2<br>
>>><br>
3 is a prime number<br>
<br>
#3 Round:<br>
n = 4<br>
x = 3<br>
>>><br></blockquote><div><br></div><div>Round 3 would be n = 4, x = 2.  The inner loop starts from its own beginning (x = 2) and repeats as often as necessary to get the break condition or complete to the x  = n condition <br>
</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
My assumption about the way these two for loops work is wrong, because<br>
the output cannot be "4 is a prime number" for obvious reasons.<br>
<br>
Can anyone help me understand?<br>
I am using Python 3.3.0. Thank you!<br>
<br>
All the best,<br>
<br>
Raf<br></blockquote><div><br></div><div>I copied your code into a python 2.7 shell and got this:<br><br><br>>>> for n in range(2, 10):<br>...     for x in range(2, n):<br>...         if n % x == 0:<br>...             print(n, 'equals', x, '*', n//x)<br>
...             break<br>...     else:<br>...         print(n, 'is a prime number')<br>... <br>(2, 'is a prime number')<br>(3, 'is a prime number')<br>(4, 'equals', 2, '*', 2)<br>(5, 'is a prime number')<br>
(6, 'equals', 2, '*', 3)<br>(7, 'is a prime number')<br>(8, 'equals', 2, '*', 4)<br>(9, 'equals', 3, '*', 3)<br> <br></div><div>What exactly do you get when you run the code?<br>
<br><br></div><div>Since print is a function in python 3, my output will look slightly different than yours<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

_______________________________________________<br>
Tutor maillist  -  <a href="mailto:Tutor@python.org">Tutor@python.org</a><br>
To unsubscribe or change subscription options:<br>
<a href="https://mail.python.org/mailman/listinfo/tutor" target="_blank">https://mail.python.org/mailman/listinfo/tutor</a><br>
</blockquote></div><br><br clear="all"><br>-- <br><div dir="ltr"><div>Joel Goldstick<br></div><a href="http://joelgoldstick.com" target="_blank">http://joelgoldstick.com</a><br></div>
</div></div>