On 20/04/19 4:41 AM, Rob Gaddi wrote:
On 4/19/19 12:23 AM, Sayth Renshaw wrote:
On Friday, 19 April 2019 17:01:33 UTC+10, Sayth Renshaw  wrote:
Set the first item in the list as the current largest.
         Compare each subsequent integer to the first.
                 if this element is larger, set integer.

def maxitwo(listarg):
     myMax = listarg[0]
     for item in listarg:
         if item > myMax:
             myMax = item

     return myMax

When you understand what it is you intend to write (barring DL Neil's comments), and THEN write it, you write the correct thing.  Thus endith the lesson.


+1, Rob's guidance saves time and embarrassment...

Upon opening a new module in one's text-editor/IDE one of the first steps should be to write an explanatory docstring. Similarly, after typing the letters "def" or "class"!

On the basis of this conversation, you might also benefit from reading about the use of doctests! (seeing we're talking docstrings - can always move to other test methods later)

I find this a useful habit, particularly if I am outlining an entire module or class, and only later coming back to flesh-out the code.

Further reading: Test-Driven Development


Of course all the comments in the world won't help if code != comment!!! Before congratulating ourselves that the code 'works': did you spot the difference in the better-developed 'English' description and the implementation in Python?


Regarding 'testing': Start with the scope and your objectives [as yet unstated, so we can only imagine what they might be]. When should it work, eg data-types. Why doesn't the code work with string data? Does it work if the list mixes different data-types? Should it work if a list element is itself a collection/class?

Regarding 'optimisation': rather than 'disappearing' into high-volume and 'exotic' situations (see earlier comment), why not stick with the simple stuff? For example, once 'max' is initialised, is there a need to compare max with 'list[ 0 ]'?


Extension: if, instead of merely finding the largest value in the list (cf which element of the list is the largest!), what if the code also 'moved' that element to the end of the list? Then, what if that function was called again but this time to operate on all of the list EXCEPT the last (which we already know is the largest) - and if this 'outer loop' were repeated 'len( list )' number of times (either by loop or (perhaps a later coding exercise) by recursion; what would be the final condition of the 'list'?

--
Regards =dn
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to