您的位置:首页 > 编程语言 > Python开发

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: