While loop help

Larry Hudson orgnut at yahoo.com
Wed Apr 10 23:00:28 EDT 2013


On 04/09/2013 11:44 PM, Larry Hudson wrote:
> On 04/09/2013 09:49 AM, thomasancilleri at gmail.com wrote:
>> So what would be the proper way to perform a loop of this program. I still can't quite figure
>> out the best way to do it.
>>
>
> My suggestion... (pseudocode)
>
> #   Print a heading/introduction here
> while True:
>      #   Print menu, with an added selection to quit
>      #   Get the user's choice (as an int)
>      if choice == 1:
>          #   Print prompt for this choice
>          #   Enter the value (as float, not int.  Why limit your values to ints anyway?)
>          #   Display the calculated result
>      elif choice == 2:
>          #   Same procedure as above
>      elif ... etc
>          #   etc
>      elif choice == (value for quit):
>          break    #   This breaks out of the while loop
>      else:
>          #   Invalid choice, print error message
> #   End of loop
>
> Further suggestion:
> Since each of the choices use the same basic procedure, it could be written as a separate single
> function.  It would just need to be passed the appropriate prompt string(s) and conversion
> factor.  The results display _could_ be in this function also, but that would require passing
> even more strings.  It would probably be better to simply return the two values (the input value
> and the converted value) back to the calling block and print the results there.
>
> Also, don't use the round function here, that does NOT guarantee it will be _printed_ to two
> decimal places.  Use string formatting in the print statements.  For example: (using your
> original variable names, and assuming they are now both floats)
>
> old style:
>
>      print '%.2f inches = %.2f meters' % (number, calc)
>
> or new style:
>
>      print '{:.2f} inches = {:.2f} meters'.format(number, calc)
>
> You also mentioned that you don't like the editor you're using.  For a simple substitute you
> might try Idle (which normally comes with Python).  This gives you the advantage of an
> interactive environment as will as an editor.  There are many other choices, of course, but as a
> newbie you might find this more comfortable than what you're currently using.
>
> I hope this jump-starts your thinking.  Keep at it, it's worth the effort.
>
>       -=- Larry -=-
>
On a little further thought, I realized the "single function" I suggested is even easier than I 
originally thought -- even with the results printed in the function.  Here's an example:

def convert(frm, to, factor):
     #   frm and to are strings, factor is a float

     print 'Converting {} to {}:'.format(frm, to)
     value = float(raw_input('How many {}?  '.format(frm)))
     print '{:.2f} {} is {:.2f} {}'.format(value, frm, value * factor, to)

You would use it like:
     convert('inches', 'meters', 0.0254)
or
     convert('meters', 'inches', 39.37)

      -=- Larry -=-




More information about the Python-list mailing list