文档章节

golang、python中生成随机字符:字母、数字、大小写等

大洋的顶端
 大洋的顶端
发布于 2017/03/16 07:05
字数 381
阅读 331
收藏 0

go语言中需要自己写各种函数方法来实现。下面的代码只代表个人在极少的时间内写出代码的结果,并不代表最优算法。

func main() {
   fmt.Println('0')
   fmt.Println(randUpString(10))
   fmt.Println(randLowString(10))
   fmt.Println(randIntString(5))
   fmt.Println(randstr(10))
}

//取得随机字符包含数字、大小写等,可以自己随意扩展。
func randstr(l int) string {
   var inibyte []byte
   var result bytes.Buffer
   for i := 48; i < 123; i++ {
      switch {
      case i < 58:
         inibyte = append(inibyte, byte(i))
      case i >= 65 && i < 91:
         inibyte = append(inibyte, byte(i))
      case i >= 97 && i < 123:
         inibyte = append(inibyte, byte(i))
      }

   }
   var temp byte
   for i := 0; i < l; {
      if inibyte[randInt(0, len(inibyte))] != temp {
         temp = inibyte[randInt(0, len(inibyte))]
         result.WriteByte(temp)
         i++
      }

   }
   return result.String()
}

//取得大写的随机字母
func randUpString(l int) string {
   var result bytes.Buffer
   var temp byte
   for i := 0; i < l; {
      if randInt(65, 91) != temp {
         temp = randInt(65, 91)
         result.WriteByte(temp)
         i++
      }
   }
   return result.String()
}

//取得小写的随机字母
func randLowString(l int) string {
   return strings.ToLower(randUpString(l))
}

//取得数字随机个数
func randIntString(l int) string {
   var result bytes.Buffer
   var temp byte
   for i := 0; i < l; {
      if randInt(48, 58) != temp {
         temp = randInt(48, 58)
         result.WriteByte(temp)
         i++
      }
   }
   return result.String()
}

func randInt(min int, max int) byte {
   rand.Seed(time.Now().UnixNano())
   return byte(min + rand.Intn(max-min))
}

 

而python中,可以调用库文件自带的方法,关键的一点是python生成的字符是完全不重复的,而上述GO代码中生成的字符只能是相邻不重复。

 

import string,random
print(''.join(random.sample(string.ascii_letters+string.digits, 10))) #随机字符
print( ''.join(random.sample(string.ascii_letters, 10)).lower()) #小写字母
print( ''.join(random.sample(string.ascii_letters, 10)).upper())#大写字母
print( ''.join(random.sample(string.digits, 10)))#数字

© 著作权归作者所有

大洋的顶端
粉丝 18
博文 30
码字总数 13805
作品 0
广州
私信 提问
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转...

Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等) s.strip() .lstrip() .rstrip(',') 去空格及特殊符号 复制字符串 Python 连接字符串 Pyth...

木雨山
2012/09/13
797
0
Python: Trie树实现字典排序

一般语言都提供了按字典排序的API,比如跟微信公众平台对接时就需要用到字典排序。按字典排序有很多种算法,最容易想到的就是字符串搜索的方式,但这种方式实现起来很麻烦,性能也不太好。T...

陈亦
2014/02/18
4.7K
4
2018-01-06 python基础

本文思维导图: python基础语法 注释——#标注的文本 数字 整数,不区分long和int 进制0xa,0o10,0b10 Bool,2个值Ture,False 浮点数 1.2,3.1415,1.46e9等价于1.46*109 复数,1+2j 字符串 ...

2248753689
2018/06/28
0
0
【简明 Python 教程】学习笔记【Python简介及基本概念】

Python的特色:简单、易学、免费开源、高层语言、可移植性、解释性、面向对象、可扩展性、可嵌入性、丰富的库。 Ctrl-d退出提示符; Ctrl-z再按Enter。 复数。 标示符的命名: 标示符是用来标...

donhui
2014/11/27
187
0
python string methods 和 string module区别

python的模块真的很乱,版本之间变化多且有点随意,远没有java那么严谨,造就了它的灵活又无标准。 如string模块,从python 1.6 开始,此模块就少用了,大多函数已由标准str对象实现了。 但s...

Honghe
2012/12/05
816
0

没有更多内容

加载失败,请刷新页面

加载更多

新架构、新角色:TiDB Community Upgrade!

作者:Jian Zhang 经过几年的发展,TiDB 社区已经逐渐成熟,但是随着社区的发展壮大,我们逐渐感受到了现在社区架构上的一些不足。经过一系列的思考和总结,我们决定升级和调整目前社区组织架...

TiDB
23分钟前
5
0
jquery qrcode库提示not function

jquery qrcode 这个库能用,但是必须在初始化的时候,官方给的使用方法是 引入qrcode的库文件后,在js中写以下 html <div id="qrcode"></div> js jQuery('#qrcode').qrcode({ render: ......

shikamaru
27分钟前
9
0
MySQL数据库去重的简单方案

利用 distinct 对需要处理的字段进行去重 select distinct 字段名 from 表名 利用group by select * from 表名 group by 字段名 利用having select * from 表名 group by 字段名 having 字段...

FeanLau
30分钟前
9
0
字符串转换成整数

实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该...

蔚蓝_晴天
41分钟前
8
0
Eureka客户端续约及服务端过期租约清理源码解析

在之前的文章:EurekaClient自动装配及启动流程解析中,我们提到了在构造DiscoveryClient时除了包含注册流程之外,还调度了一个心跳线程: scheduler.schedule( new Ti...

Java学习录
52分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部