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