随机密码生成(Python vs Perl)=) [英] Random passwords generation (Python vs Perl) =)

查看:63
本文介绍了随机密码生成(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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆