Jacob S. wrote:
import random
#the above gives the program the ability to get a
#pseudo random number
file = open('test.rantxt')
listcontents = file.readlines()
#gives you the file as a list of records or it did on
#(assuming each line is a record)
file.close()
lenoflist = len(listcontents)-1
#find the length of the list and take one of because
computers count from 0


Yes, but len returns counting from 1.
Anyway, you would have to add one to correct that anyway, wouldn't you?
If randrange is start <= x *<=* end, then you don't have to add one, you
just use the length.
If randrange is start<= x < end like __builtin__ range, you have to put
randrange(1,lenoflist+1)

x = random.randrange(0,lenoflist)


I would use randint because list indices need to be integers -- unless of
course I mistaken and
randrange returns an integer also. (But that would be repetitive to have to
functions do the same thing)

A quick check of the module docs (Jacob, do you know where to find the docs?) gives

randrange( [start,] stop[, step])
Return a randomly selected element from range(start, stop, step). This is equivalent to choice(range(start, stop, step)), but doesn't actually build a range object. New in version 1.5.2.


So the limits on randrange() are the same as for range() - it is start <= x < stop. And the returned value is an integer.

Since len(listcontents) is one greater than the largest valid index of listcontents, the correct use of randrange() for this problem is
x = random.randrange(0, len(listcontents))



print listcontents[x]


HTH,
Jacob

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor

Reply via email to