# Need help in understanding a python code

Benjamin Kaplan benjamin.kaplan at case.edu
Mon Nov 17 02:27:17 CET 2008

On Sun, Nov 16, 2008 at 7:34 AM, John Machin <sjmachin at lexicon.net> wrote:

> On Nov 16, 11:04 pm, Steven D'Aprano <st... at REMOVE-THIS-
> cybersource.com.au> wrote:
> > On Sun, 16 Nov 2008 02:41:03 -0800, John Machin wrote:
> > > On Nov 16, 9:31 pm, Steven D'Aprano <st... at REMOVE-THIS-
> > > cybersource.com.au> wrote:
> > >> On Sun, 16 Nov 2008 01:50:16 -0800, John Machin wrote:
> > >> > > def A(w, v, i,j):
> > >> > >     if i == 0 or j == 0: return 0
> > >> > >     if w[i-1] > j:  return A(w, v, i-1, j) if w[i-1] <= j: return
> > >> > >     max(A(w,v, i-1, j), v[i-1] +
> > >> > >       A(w,v, i-1, j - w[i-1]))
> > >> >> I am reading this blog
> >
> > >> >>http://20bits.com/articles/introduction-to-dynamic-programming/
> >
> > >> > I suggest that you don't bother reading a blog written by somebody
> > >> > who (presumably consciously) keyed in that "if w[i-1] <= j: " above.
> >
> > >> That is a translation of standard terminology for a hybrid function.
> > >> Mathematics doesn't have an "else", so you write hybrid functions by
> > >> enumerating each branch as an if.
> >
> > > An else is not required.
> > >     if w[i-1] > j:
> > >        return A(w, v, i-1, j)
> > >     return max(A(w,v, i-1, j), v[i-1] + A(w,v, i-1, j - w[i-1]))
> >
> > Which is also not valid terminology for hybrid functions.
>
> I couldn't care less. It's valid and efficient (compared to the
> original) Python.
>
> > >> While it's not especially good Python technique, it's a perfectly
> > >> idiomatic mathematical expression, and shouldn't be the basis for
> > >> dismissing an entire blog.
> >
> > > He's meant to be writing Python code, not mathematical expressions.
> >
> > And he's written Python code. Perfectly valid Python code. Just because
> > it is not what you consider to be idiomatic Python code isn't a good
> > reason to dismiss his entire blog.
> >
> > What you've done is rather like me saying that because you failed to use
> > a colon after "required", and therefore haven't written what *I* consider
> > good English style, not only is your specific post best avoided, but
> > *all* your posts should be avoided. I trust you understand the logical
> > fallacy I would be making, which you have already made.
>
> Nothing to do with style. It was the screaming inefficiency of:
>   if non_trivial_condition: return x
>   if not non_trivial_condition: return y
> that fired me up.
>
> > http://en.wikipedia.org/wiki/Style_over_substance_fallacy
>
> Quoted Wikipedia -> instant disqualification -> you lose. Good night.
>

If you really believe that, you haven't been following this list long
enough. Every terminology dispute always includes at least 1 Wikipedia link.

Also, you might want to look at this study:
http://news.cnet.com/2100-1038_3-5997332.html

> --
> http://mail.python.org/mailman/listinfo/python-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20081116/c6b683a7/attachment.html>