<br><br><div><span class="gmail_quote">On 10/27/07, <b class="gmail_sendername">Dick Moores</b> &lt;<a href="mailto:rdm@rcblue.com">rdm@rcblue.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="margin:0;margin-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex">
Win XP, Python 2.5.1<br><br>========================<br>#!/usr/bin/env python<br>#coding=utf-8<br><br>n = 10000000000 # 10 billion<br>print &quot;type of 10 billion is&quot;, type(n)<br>n = 1000000000 # 1 billion<br>print &quot;type of 1 billion is&quot;, type(n)
<br><br>raw_input(&quot;press enter to continue&quot;)<br><br>n = 10000000000<br>print type(n)<br>while True:<br>&nbsp;&nbsp;&nbsp;&nbsp; if type(n) == long:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n -= 1000000<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print n, type(n)<br>&nbsp;&nbsp;&nbsp;&nbsp; else:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break
<br>print n<br>print type(n), &#39;HERE&#39;<br>==========================<br><br>As an exercise in using type() I was thinking I could use it to begin<br>to find where (without looking it up) a long becomes an int. I show
<br>that the boundary is somewhere between 10 billion and 1 billion. But<br>the above script never ends--never gets to &#39;HERE&#39;.<br><br>Here&#39;s part of the output:<br><br>6000000 &lt;type &#39;long&#39;&gt;<br>5000000 &lt;type &#39;long&#39;&gt;
<br>4000000 &lt;type &#39;long&#39;&gt;<br>3000000 &lt;type &#39;long&#39;&gt;<br>2000000 &lt;type &#39;long&#39;&gt;<br>1000000 &lt;type &#39;long&#39;&gt;<br>0 &lt;type &#39;long&#39;&gt;<br>-1000000 &lt;type &#39;long&#39;&gt;
<br>-2000000 &lt;type &#39;long&#39;&gt;<br>-3000000 &lt;type &#39;long&#39;&gt;<br>-4000000 &lt;type &#39;long&#39;&gt;<br>-5000000 &lt;type &#39;long&#39;&gt;<br>-6000000 &lt;type &#39;long&#39;&gt;<br><br>Note that it shows even 1 million and 0 to be longs, whereas
<br> &gt;&gt;&gt; type(1000000)<br>&lt;type &#39;int&#39;&gt;<br> &gt;&gt;&gt; type(0)<br>&lt;type &#39;int&#39;&gt;<br> &gt;&gt;&gt;<br><br>What&#39;s going on?<br><br>Thanks,<br><br>Dick Moores<br><br>_______________________________________________
<br>Tutor maillist&nbsp;&nbsp;-&nbsp;&nbsp;<a href="mailto:Tutor@python.org">Tutor@python.org</a><br><a href="http://mail.python.org/mailman/listinfo/tutor">http://mail.python.org/mailman/listinfo/tutor</a><br></blockquote></div><br>Hi Dick,
<div><br class="webkit-block-placeholder"></div><div>I would expect that a type change will happen if there is a need. Hence if type(n) is already long it does not have to get converted to int to accommodate something small.
</div><div><br class="webkit-block-placeholder"></div><div>I changed your program to increase from 1B to 10B and the results are as expected :)</div><div><br class="webkit-block-placeholder"></div><div>&lt;snip&gt; - your old code
</div><div>&nbsp;</div><div><div>n = 1000000000 &nbsp;# 1 billion</div><div>print type(n)</div><div>while n &lt; 10000000000 : &nbsp;# 10 billion</div><div>&nbsp;&nbsp; &nbsp;if type(n) == int:</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;n += 1000000</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;print n, type(n)
</div><div>&nbsp;&nbsp; &nbsp;else :</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;break</div><div><br class="webkit-block-placeholder"></div>&lt;snip&gt; - your old code<br clear="all"><br>HTH<br>Aditya
</div>