Python生成随机密码

方案:

1.导入random模块,通过random静态对象调用choice()方法,从自定义字符串中获取随机项

2.将获取到的随机字符进行拼接,将最终字符串结果返回给函数

3.for循环每循环一次获取一个随机字符,密码位数由循环次数决定,循环次数由传递参数值决定。

 

此程序需要注意的部分在于:

1.导入String模块,其中ascii_letters是生成所有字母,从a-z和A-Z,digits是生成所有数字0-9

2.将整个生成随机密码的代码封装进gen_pass()函数中,当模块文件直接执行时,调用函数即可输出结果

3.参数传递问题:调用函数无实参时,函数调用默认参数,有实参时,函数调用实际参数

 

1.第一种写法

#!/usr/bin/env python3

import random
import string

all_chs=string.digits+string.ascii_letters     #包含0-9+a-z+A-Z的字符 一共62个字符


def gen_pass(n=8):
    result=''
    for i in range(n):
        ch=random.choice(all_chs)                #从all_chs中选择一个字符
        result+=ch                                          #拼接
    return result

print(gen_pass())                                        #输出8个随机字符
print(gen_pass(20))                                    #输出20个随机字符

.....

.....

$python 4.py 
d8BOvxmP
yIyOapReg7nnDMcXJFkh

 

2.第二种写法

利用列表推导式

#!/usr/bin/env python3

import random
import string

all_chs=string.digits+string.ascii_letters


def gen_pass(n=8):
  result = [random.choice(all_chs) for i in range(n)]                  
  return ''.join(result)

print(gen_pass())
print(gen_pass(20))

....

.....

$python 4.py 
3sXDurdL
1PFTIWpSlnUfhS0CbIm0

提示:

我们来分析这一段代码

result = [random.choice(all_chs) for i in range(n)]  

result为一个列表

列表的值由一个循环形成,大小为n

[random.choice(all_chs) for i in range(n)]  叫做列表解析,取random.choice(all_chs)作为值

表达式为[expression for iter_val in iterable if cond_expr]

例子:

12 >>>L = [ i for i in range(1,11)]
13 >>>print L
14 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值