python-生成随机字符
2016-05-29 13:38
495 查看
需求:
随机生成6位的大写字母:
方法一:
#!/usr/bin/env python # -*- coding:utf-8 -*- import random li = [] for i in range(6): temp = random.randrange(65,91) c = chr(temp) li.append(c) result = "".join(li) print(result)
结果:会随机生成6个字母
功能实现了,但是感觉有点low,例如:生成的字符比较单一,只能生成字母。我在想能不能让6个字符中出现两个数字呢?好,开始搞吧。
方法二:
#!/usr/bin/env python # -*- coding:utf-8 -*- import random li = [] for i in range(6): if i == 2 or i == 4: num = random.randrange(0,10) li.append(str(num)) #将数字转换为字符串,因为.join()方法无法处理数字类型,只能出现字符类型的数据 else: temp = random.randrange(65,91) c = chr(temp) li.append(c) result = "".join(li) print(result)
结果:
DM5T9B
方法二满足了需求,6个字符中包括了2个数字。但是 大家有没有发现两个数字的位置比较固定,这也不符合正常人的逻辑啊。要求随机的啊,随机,随机。 好,知道了要求数字和字母出现的次数和位置随机。开始搞吧。
方法三:
#!/usr/bin/env python # -*- coding:utf-8 -*- import random li = [] for i in range(6): r = random.randrange(0,5) if r == 2 or r == 4: num = random.randrange(0,10) li.append(str(num)) else: temp = random.randrange(65,91) c = chr(temp) li.append(c) result = "".join(li) print(result)
结果:
384M4J
方法三:方法二的优化
#!/usr/bin/env python # -*- coding:utf-8 -*- import random li = [] for i in range(6): r = random.randrange(0,5) if i == r: num = random.randrange(0,10) li.append(str(num)) else: temp = random.randrange(65,91) c = chr(temp) li.append(c) result = "".join(li) print(result)
结果:
N7WIHL
好了,已经实现了需求。
总结:
(1)random 是随机生成数字。
(2)i = random.randrange(0,5) 表示生成0-4的随机数,记住不包括5哦。 取值范围为: 1=< i < 5
(3)"".join(li) 表示把列表li 的值生成一个字符串中间不用任何符号分隔,所以用了 ""
例如:
li = ['A','B','C','D','E'] result = "".join(li) print(result)
结果:这里使用了 "".join()
ABCDE
我们用 “_” 下划线 来分隔。使用"_".join()
li = ['A','B','C','D','E'] result = "_".join(li) print(result)
结果:
A_B_C_D_E
(4)join() 只能处理字符,不能处理数字,不信? 好,那么我们试试吧。
#!/usr/bin/env python # -*- coding:utf-8 -*- li = [1,2,3,4,5] result = "_".join(li) print(result)
结果:
所以我们代码中使用了:str()
num = random.randrange(0,10) li.append(str(num)) #将数字转换为字符串,因为.join()方法无法处理数字类型,只能出现字符类型的数据
(5)chr 和 ord
chr 将数字转换为ASII码中对应的字母
ord 将字母转换为ASII码中对应的数字
r = chr(65) print(r) n = ord("A") print(n)
结果:
A
65
相关文章推荐
- 3.大概了解Tornado框架的设计模型
- 2.开始Tornado的源码分析之旅
- python导入不同目录下模块的方法
- 1.读懂tornado的预备知识:什么是epoll
- NumPy 数组矩阵运算
- IIPP迷你项目(一)“Rock-paper-scissor-lizard-Spock”
- NumPy 复制与视图
- python2中的__init__.py文件的作用
- Python目录操作
- python导入模块时的执行顺序
- 树莓派3点亮LED灯
- python入门神图
- Python No module named xxx 的错误
- Bottle-0.13 文档中文翻译
- python数据类型
- NumPy 数组组合分割
- Python学习 (九 正则表达式)
- 解决python画图标签中文乱码
- debian-Python-pip安装失败问题解决
- 利用cgi 实现简易网页加法计算器功能