zoukankan      html  css  js  c++  java
  • python-生成随机字符

    需求:

    随机生成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

    UnixFBI 运维特工 www.unixfbi.com
  • 相关阅读:
    【Jquery系列】详解Jquery对象和Dom对象
    将博客搬至CSDN
    【工具篇】.NET开发常用工具
    【ASP.NET MVC系列】浅谈jqGrid 在ASP.NET MVC中增删改查
    【SqlServer】【问题收集】必须声明标量变量
    【SqlServer】【问题收集】删除同一张表中完全相同的记录
    【SqlServer】【问题收集】阻止保存要求重新创建表的更改
    Java多线程编程中Future模式的详解<转>
    Java后端,应该日常翻看的中文技术网站<转>
    PostgreSql 函数
  • 原文地址:https://www.cnblogs.com/pangguoping/p/5539021.html
Copyright © 2011-2022 走看看