<div dir="ltr"><blockquote>m = float(rise)/run &nbsp; # avoid dividing two integers ...<br>...<br>print &quot;y = %f x + %f&quot; % (m, b)<br><br>with perhaps some thoughts given to having a set number of decimal<br>
places for the floats.<br><br></blockquote>Certainly, these things makes sense, but given the strange mindset I&#39;m trying to work in, a secondary math
curriculum that is already skeptical about the relevance of programming in
math classes in the first place, worrying about
formatting issues would just further alienate both colleagues and
students.&nbsp; They want things to be as simple as possible,
otherwise, they immediately lose interest.&nbsp; So it&#39;s a tricky balance.&nbsp; One detail too much, and it&#39;s overload for them.&nbsp; As it is, the float vs. integer division issue will disappear with Python 3K, and I think that will be good for easier integration into math classes.<br>
<br>For math classes I think it&#39;s more pertinent to focus on functional interactions and not on IO issues, and that was what I was trying to get at.<br><br>What I have found fascinating is how similar students and teachers are.&nbsp; You know how math students will ask, &quot;How am I ever gonna USE this?&quot;&nbsp; Well, that&#39;s the same response I would initially receive from math colleagues when mentioning Python.&nbsp; In both cases, the questioner seldom really wants an answer, they just want to express their disinterest.&nbsp; But thankfully, this is changing.&nbsp; My colleagues might still not be interested in pursuing it themselves, but at least at this point they realize that it isn&#39;t just BS.<br>

<br><br><br><div><div><br><div class="gmail_quote">On Fri, Oct 3, 2008 at 6:51 PM, Andre Roberge <span dir="ltr">&lt;<a href="mailto:andre.roberge@gmail.com" target="_blank">andre.roberge@gmail.com</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">2008/10/3 michel paul &lt;<a href="mailto:mpaul213@gmail.com" target="_blank">mpaul213@gmail.com</a>&gt;:<br>



<br>
[SNIP]<br>
<div><br>
<br>
&gt;<br>
&gt; Here&#39;s the same solution in Python:<br>
&gt;<br>
&gt; x0, y0 = input(&#39;Enter x0, y0 ---&gt;&#39;)<br>
&gt; x1, y1 = input(&#39;Enter x1, y1 ---&gt;&#39;)<br>
&gt; rise = y1 - y0<br>
&gt; run = x1 - x0<br>
&gt; if rise == 0: print &#39;y =&#39;, &nbsp;y0<br>
&gt; elif run == 0: print &#39;x =&#39;, &nbsp;x0<br>
&gt; else:<br>
&gt; &nbsp; &nbsp; m = rise/run<br>
&gt; &nbsp; &nbsp; b = y0 - m*x0<br>
&gt; &nbsp; &nbsp; print &#39;y =&#39;, m, &#39;x +&#39;, b<br>
&gt;<br>
<br>
</div>I find that this (and even more so for the other solutions below) not<br>
as readable as it should be. &nbsp;For me, if/elif/else really gain from<br>
being indented, and blank lines can also add to divide the program<br>
into &quot;functional unit&quot;. &nbsp;So I would write instead:<br>
<div><br>
x0, y0 = input(&#39;Enter x0, y0 ---&gt; &#39;)<br>
x1, y1 = input(&#39;Enter x1, y1 ---&gt; &#39;)<br>
<br>
rise = y1 - y0<br>
run = x1 - x0<br>
<br>
if rise == 0:<br>
 &nbsp; &nbsp;print &#39;y =&#39;, y0<br>
elif run == 0:<br>
 &nbsp; &nbsp;print &#39;x =&#39;, x0<br>
else:<br>
</div> &nbsp; &nbsp;m = float(rise)/run &nbsp; # avoid dividing two integers ...<br>
 &nbsp; &nbsp;b = y0 - m*x0<br>
 &nbsp; &nbsp;print &quot;y = %f x + %f&quot; % (m, b)<br>
<br>
with perhaps some thoughts given to having a set number of decimal<br>
places for the floats.<br>
<br>
Just a thought...<br>
<br>
André<br>
<div><div></div><div><br>
<br>
<br>
&gt; You can see the same logic, but it&#39;s a bit shorter. &nbsp;That&#39;s because there&#39;s<br>
&gt; no use of GOTO. &nbsp;The elimination of GOTO was one of the important features<br>
&gt; in the development of PASCAL, and ever since those days GOTO has been<br>
&gt; considered bad style. &nbsp;It produces crazy and cumbersome code. &nbsp;Functional<br>
&gt; organization is far superior.<br>
&gt;<br>
&gt; You can see that the Python version is just as easy to read, or easier, than<br>
&gt; the BASIC. &nbsp;So, you can use Python in this simple procedural sort of way.<br>
&gt; However, &nbsp;Python supports various paradigms, so you can also organize things<br>
&gt; functionally:<br>
&gt;<br>
&gt; def slope_intercept(A, B):<br>
&gt; &nbsp; &nbsp; x0, y0 = A<br>
&gt; &nbsp; &nbsp; x1, y1 = B<br>
&gt; &nbsp; &nbsp; rise, run = y1 - y0, x1 - x0<br>
&gt; &nbsp; &nbsp; if run == 0: return None, x0<br>
&gt; &nbsp; &nbsp; m = rise/run; b = y0 - m*x0<br>
&gt; &nbsp; &nbsp; return m, b<br>
&gt;<br>
&gt; And even here, the code is longer than it needs to be. &nbsp;You can cut it down<br>
&gt; to:<br>
&gt;<br>
&gt; def slope_intercept(A, B):<br>
&gt; &nbsp; &nbsp; rise, run = A[1] - B[1], A[0] - B[0]<br>
&gt; &nbsp; &nbsp; if run == 0: return None, A[0]<br>
&gt; &nbsp; &nbsp; return rise/run, A[1] - rise/run*A[0]<br>
&gt;<br>
&gt; And you can even cut it down more, but that&#39;s not the point.<br>
&gt;<br>
&gt; This accomplishes the same thing as the original, just without printing the<br>
&gt; equations. &nbsp;You would then call this function to obtain the values of m and<br>
&gt; b for printing, if that&#39;s what you wanted to do, or, you could chain this<br>
&gt; function together with other functions to construct something more complex.<br>
&gt; It&#39;s what functional analysis is all about. &nbsp;You consider I/O stuff<br>
&gt; decoration. &nbsp;It&#39;s not the important part mathematically speaking.<br>
&gt;<br>
&gt; Functional decomposition of tasks ---&gt; sure sounds like Analysis to me! &nbsp;:<br>
&gt; ) &nbsp;Isn&#39;t it essentially the same kind of thinking?<br>
</div></div>&gt; _______________________________________________<br>
&gt; Edu-sig mailing list<br>
&gt; <a href="mailto:Edu-sig@python.org" target="_blank">Edu-sig@python.org</a><br>
&gt; <a href="http://mail.python.org/mailman/listinfo/edu-sig" target="_blank">http://mail.python.org/mailman/listinfo/edu-sig</a><br>
&gt;<br>
&gt;<br>
</blockquote></div><br></div></div></div>