Random passwords generation (Python vs Perl) =)
James Stroud
jstroud at mbi.ucla.edu
Mon Jan 29 07:01:37 EST 2007
NoName wrote:
> Perl:
> @char=("A".."Z","a".."z",0..9);
> do{print join("", at char[map{rand @char}(1..8)])}while(<>);
>
> !!generate passwords untill U press ctrl-z
>
>
>
> Python (from CookBook):
>
> from random import choice
> import string
> print ''.join([choice(string.letters+string.digits) for i in
> range(1,8)])
>
> !!generate password once :(
Make a loop.
> who can write this smaller
I won't write it for you, but I'll tell you how:
Write a function for the whole loop and the password generator and from
then on it will be a one-liner (as a function call).
> or without 'import'?
Yes, make sure you do the import inside the function.
If you follow my advice, you will be able to get as many passwords as
you want with one line (and no spaces, even!):
generate_passwords()
It also reads much clearer than the perl version, don't you think?
By the way, you can also make a script. Call it "genpass", then at the
command prompt, it will be far less than one line:
% genpass
Or, if you are using DOS/Windows:
C:> genpass
A lot of systems don't have a standard command called "g", so then you
can turn it into *ONE LETTER*!!! That beats the pants off perl!
% g
Or, of course, for DOS:
C:> g
Good luck!
James
More information about the Python-list
mailing list