[Tutor] fortune-like utility

2011-08-30 Thread Cranky Frankie
On Tue, Aug 30, 2011 at 5:23 AM, Martin A. Brown  wrote:
>
> Good morning and welcome to the list,
>
>  : Just planning it out in my head so far, like pseudocode. I hope
>  : to get started soon. I'm just looking to have a little dialog box
>  : come up, display a random quote of the day, and then hit enter
>  : and it's gone. Should be a nice, simple way to get started with
>  : Python.
>
> N.B. Most of the questions and answers here are about the python 2.x
> series, so just note that there are some minor differences with
> python 3.x.
>
> I would suggest starting with the data/format.

snip

Thanks Martin for the excellent suggestions.

I read in the book that you have to use escape like /n when you want
to span lines. I don't want to have to do that to each of my quotes,
many of which span several lines, so I will look into your
suggestions.

Thanks again.

-- 
Frank L. "Cranky Frankie" Palmeri
Risible Riding Raconteur & Writer

" . . . and the extended forecast,
until you come back to me, baby,
is high tonight, low tomorrow,
and precipitation is expected."
- Tom Waits, "Emotional Weather Report"
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] fortune-like utility was [Tutor Digest ...]

2011-08-30 Thread Martin A. Brown

Good morning and welcome to the list,

 : Just planning it out in my head so far, like pseudocode. I hope 
 : to get started soon. I'm just looking to have a little dialog box 
 : come up, display a random quote of the day, and then hit enter 
 : and it's gone. Should be a nice, simple way to get started with 
 : Python.

N.B. Most of the questions and answers here are about the python 2.x 
series, so just note that there are some minor differences with 
python 3.x.

I would suggest starting with the data/format.  I think somebody 
else has already remarked that with a few thousand quotations, you 
will not have much difficulty loading it all into memory, so here 
are some tips on how to approach the problem by creating a CLI 
application first, moving onto the GUI parts after you have worked 
out the functionality to read a file and produce the quotation.

I don't have the book you are recommending, but here are some things 
that I would be thinking about if I were writing a utility which 
behaves like the venerable unix game called 'fortune'.

  1. Learn how to read line-oriented data from a file [0].  Let's 
 assume that your first pass at this has only one quotation per 
 line.

 This little functon works much like the 'cat' utility:

   import sys
   def main(fname):
   f = open(fname,'r')
   for line in f:
   print line.rstrip()
   f.close()
   main(sys.argv[1])  # python this.py 

 Now, put the lines into a list instead of printing them:

   def main(fname):
   quotations = list()
   f = open(fname,'r')
   for line in f:
   quotations.append( line.rstrip() )
   f.close()
   return quotations

  2. Play with the random module to get your 'pick a quotation at 
 random' behaviour.

import random
print random.choice(quotations)

  3. Experiment with the vagaries of 'print'.  It produces a 
 newline.  Learn how to suppress the newline when printing 
 (even if you don't want to do that this time).

  4. Experiment with string handling.  Learn how to break a string 
 into lists.  Learn how to make a single string out of the 
 contents of a list.  In short, become familiar with using

split()  http://docs.python.org/library/stdtypes.html#str.split
join()   http://docs.python.org/library/stdtypes.html#str.join

  5. Start thinking about what you would have to change in order to 
 handle multi-line or formatted quotations.  This is where you 
 can start thinking about treating your data as records rather 
 than lines, as above.

I suspect that you will have all of the above understood in fairly 
short order.  At that point, you could make the foray into the 
various GUI bits.  I will be no help there, as I have never used any 
of the GUI toolkits--but this list has many others who should be 
able to help here.

I hope the 'Sweet Irene the Disco Queen' flooding in your region was 
not too bad, Frank.

-Martin

P.S. Here's a possibly obnoxious tip, assuming the 'fortune' file 
 format [1] suits your tastes for storing your quotations:

   f = open(fname,'r')
   quotations = ''.join(f.readlines()).split('%')

 [0] http://docs.python.org/library/stdtypes.html#file-objects
 [1] http://www.faqs.org/docs/artu/ch05s02.html


-- 
Martin A. Brown
http://linux-ip.net/
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor