[Tutor] A file containing a string of 1 billion random digits.
Richard D. Moores
rdmoores at gmail.com
Mon Jul 19 13:28:49 CEST 2010
On Mon, Jul 19, 2010 at 03:59, Alan Gauld <alan.gauld at btinternet.com> wrote:
> "Richard D. Moores" <rdmoores at gmail.com> wrote
>> Still, I understand yours, and not his (the return line).
> return "%0*d" % (n, random.randrange(10**n))
> The asterisk is quite unusual but basically means substitute the next
> argument but treat it as part of the format string. So:
>>>> "%0*d" % (2,8) # becomes same as "%02d"
>>>> "%0*d" % (7,8) # becomes same as "%07d"
> So for the return statement with n = 4 it would give
> "%04d" % x
> where x is a random number from range(10000).
> That becomes
> where dddd is the random number
Just tried it with 4 and executed many times. Seems the 0 in 0dddd is
there when a dddd is a 3-digit number such as 123. In that case a zero
is prefixed to 123 to produce 0123. Or if just 23, 2 zeros are
prefixed, etc. Correct?
> The same thing can be done in two steps with:
> fmt = "%0%dd" % n # eg. gives "%04d" if n is 4
> return fmt % randrange(....)
> But the asterisk is neater (and faster) but can become hard to read, and
> debug, if over-used - like if there are many arguments in a single string!
> Alan Gauld
> Author of the Learn to Program web site
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
More information about the Tutor