分享

Python基础知识:以实例学随机数产生和字符/ASCII码转换

 lgk88888 2018-11-21

实例说明

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

基本实现方法1

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

 

  

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

改进方法2

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

 

  

改进方法3

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

 

  

改进方法4

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

 

  

改进方法5

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

 

  

完整的测试代码

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

 

  

 

运行结果如下图所示:

 

  

总结

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

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多