python随机抽号_Python基础:手把手以实例教你学随机数产生和字符/ASCII码转换

实例说明

使用Python语言,产生20个“a”-“z”之间的随机字符序列。

基本实现方法1

使用python内置的random模块产生随机数,我们知道字符“a”和“z”对应的ASCII码分别为97和122,所以对于题目要求产生“a”-“z”之间的随机字符序列,只需使用random模块产生97-122之间的随机数,然后将其转换为对应的字符即可。其中,字符转数字的函数为ord函数,数字转字符的函数为chr函数。根据这个思路,实现代码如下图所示:

u=2571895741,3248782652&fm=173&app=25&f=JPEG?w=480&h=83&s=BA9431C0CDC43F700CF8CC0F0200A0C2

上面代码中,先创建一个空列表a,在for循环中,每次产生一个ord(‘a’)-ord(‘z’)之间(即97-122之间)的随机数,再将其使用chr转换为字符,添加到列表a中,循环20次后,即可产生20个“a”-“z”之间的随机字符序列。

改进方法2

将方法1中列表a的产生,使用map函数实现,列表中每个随机字符的产生在lambda函数内部实现,代码如下图所示:

u=1570880698,215676033&fm=173&app=25&f=JPEG?w=600&h=52

改进方法3

思路是先使用列表推导式产生一个“a”-“z”之间的顺序字符序列,然后在map的lambda函数里面,每次使用random模块的choice函数从顺序字符序列中随机抽取一个字符,得到最后的随机字符序列a,代码如下图所示:

u=2861857878,3843069822&fm=173&app=25&f=JPEG?w=449&h=65

改进方法4

思路同方法3完全一样,唯一的区别是,在产生一个“a”-“z”之间的顺序字符序列时,使用的了Python内置string库的ascii_lowercase得到这个顺序序列。代码如下图所示:

u=1085456180,1084350395&fm=173&app=25&f=JPEG?w=414&h=65

改进方法5

这种方法使用了numpy库,用该库提供的random模块的randint函数直接产生20个97-122之间的随机数数组,然后再用列表推导式将每个随机数使用chr函数将其转换为字符,从而得到整个“a”-“z”之间的随机字符序列。代码如下图所示:

u=865677674,2311861689&fm=173&app=25&f=JPEG?w=425&h=70

完整的测试代码

完整的测试代码如下图所示:

u=1963420967,198613647&fm=173&app=25&f=JPEG?w=628&h=511&s=B29431C8D2BEB76E527DC40B0200E0C3

运行结果如下图所示:

u=4095792697,1150602051&fm=173&app=25&f=JPEG?w=640&h=165&s=B284B148DFE5997244DDA10F0200F0C9

总结

这个题目虽小,但涉及到的Python编程的基础知识点挺多,包括:随机数的产生、字符/ASCII码相互转换、列表推导式、map/lambda/for等函数的使用。

上面给出了5种实现方法,大家如果有更好的实现方法,欢迎大家留言讨论。

欢迎加关注,共同交流。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值