随机密码生成(Python vs Perl)=) [英] Random passwords generation (Python vs Perl) =)
问题描述
Perl:
@char =(" A" .." Z"," a" .." z",0..9);
做{print join("",@ char [map {rand @char}(1..8)])} while(<>);
!!生成密码,直到你按ctrl-z
Python(来自CookBook):
来自随机导入选项的
import string
print''''。join([choice(string.letters + string.digits)for i in
range(1,8)] )
!!生成密码一次:(
谁可以写这个较小或没有''import''?
Perl:
@char=("A".."Z","a".."z",0..9);
do{print join("",@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 :(
who can write this smaller or without ''import''?
推荐答案
NoName写道:
NoName wrote:
来自随机导入选择
import string
print''''。join([choice(string.letters + string.digits)for i in
range(1,8)])
!!生成一次密码:(
from random import choice
import string
print ''''.join([choice(string.letters+string.digits) for i in
range(1,8)])
!!generate password once :(
所以添加一个true:line。
So add a while true: line.
谁可以写这个较小或没有''import''?
who can write this smaller or without ''import''?
为什么这些是你的目标?
Why are those your goals?
" NoName" < za **** @ gmail.comwrites:
"NoName" <za****@gmail.comwrites:
来自随机导入选项的
导入字符串
print''''。join([choice(string.letters + string.digits)for i in
range(1,8)])
!!生成密码一次:(
谁可以写这个较小或没有''import''?
from random import choice
import string
print ''''.join([choice(string.letters+string.digits) for i in
range(1,8)])
!!generate password once :(
who can write this smaller or without ''import''?
如果你不介意可能会得到一些非字母数字字符:
import os,binascii
print binascii.b2a_base64(os.urandom(6))
If you don''t mind possibly getting a few nonalphanumeric characters:
import os,binascii
print binascii.b2a_base64(os.urandom(6))
1月28日晚上10:58,NoName< zaz ... @ gmail.comwrote:
On Jan 28, 10:58 pm, "NoName" <zaz...@gmail.comwrote:
Perl:
@char =(" A" .." Z"," a" .." z",0..9);
做{print join("",@ char [map {rand @char}(1..8)])} while(<>);
!!生成密码,直到你按ctrl-z
Python(来自CookBook):
来自rando的
m导入选择
导入字符串
打印''''。join([choice(string.letters + string.digits)for i in
范围(1,8)])
!!生成密码一次:(
谁可以写这个更小或没有''导入''?来自随机进口选择的
Perl:
@char=("A".."Z","a".."z",0..9);
do{print join("",@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 :(
who can write this smaller or without ''import''?
pwdchars =''''。join(cr范围内的chr(c)(ord('' a''),ord(''z'')+ 1)+
范围(ord(''A''),ord(''Z'')+ 1)+
范围(ord(''0''),ord(''9'')+ 1))
while(True):print''' '.join(我在范围内选择(pwdchars)(8))
(注意你要使用范围(8),而不是范围(1,8),因为范围给出
如果给出两个参数,则为[a,b]值;如果只给出一个
,则为[0,a),并且您似乎需要8个字符的密码。 )
但实际上,使用import并没有什么问题,重新使用已知的字符串模块中的优质代码优于重新实现
新代码就像我做的那样(代码减少=错误的机会减少)。
rand不是内置的,因为它显然是在Perl中,但是随机的是部分
的核心库,所以所有的Python安装将有它 -
同样为字符串。
- 保罗
from random import choice
pwdchars = ''''.join(chr(c) for c in range(ord(''a''),ord(''z'')+1)+
range(ord(''A''),ord(''Z'')+1)+
range(ord(''0''),ord(''9'')+1) )
while(True) : print ''''.join(choice(pwdchars) for i in range(8))
(Note that you want to use range(8), not range(1,8), since range gives
you the values [a,b) if two arguments are given, or [0,a) if only one
is given, and it appears that you want 8-character passwords.)
But really, there''s nothing wrong with using import, and reusing known
good code from the string module is better than reimplementing it in
new code as I have done (less code === fewer opportunities for bugs).
rand is not a built-in as it apparently is in Perl, but random is part
of the core library, so all Python installs will have it available -
likewise for string.
-- Paul
这篇关于随机密码生成(Python vs Perl)=)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!