python随机生成英文字符串_Python练习第六题,生成随机字母
第六题:使用 Python 生成类似于下图中的字母验证码图片
1、思路:随机生成一位字母
参考文档string - 常用字符串操作stringstring.ascii_letters
小写字母 'abcdefghijklmnopqrstuvwxyz'.该值不依赖于本地设置以及不会被修改。string.ascii_uppercase
大写字母 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.该值不依赖于本地设置以及不会被修改。
2、具体操作(利用string和random)
>>> import string
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> import random
>>> random.choice(string.ascii_uppercase)
'G'参考Generate a random letter in Python
首先生成52位大写及小写字母,再利用random提取其中一位便成为随即字母。
3、完整代码
import string
import random
from PIL import Image, ImageDraw, ImageFont, ImageFilter
#captcha size
size = (240, 60)
#random chars
def gen_random():
charlist = [random.choice(string.ascii_uppercase) for i in range(4)]
chars = ''.join(charlist)
return chars
def random_color():
return (random.randint(0, 255), random.randint(0, 255), \
random.randint(0, 255))
def gen_captcha():
im = Image.new('RGBA', size, color = 0)
draw = ImageDraw.Draw(im)
#background
for w in range(size[0]):
for h in range(size[1]):
draw.point((w, h), random_color())
#draw text
chars = gen_random()
#font and size
fnt = ImageFont.truetype('arial.ttf', int(size[1] * 0.8))
x = 0
y = size[1] * 0.1
for i in range(4):
x += size[0] * 0.2
draw.text((x, y), chars[i], font = fnt, fill = random_color())
#blur
im = im.filter(ImageFilter.BLUR)
im.save('captchar.jpg')
im.show()
if __name__ == '__main__':
gen_captcha()
看看运行结果
更多解法:
from PIL import Image, ImageDraw, ImageFont, ImageFilter
import random
def rndChar():
return chr(random.randint(65, 90))
def rndColor(type):
if type == 1:
return (random.randint(0, 125), random.randint(0, 125), random.randint(0, 125))
elif type == 2:
return (random.randint(126, 255), random.randint(126, 255), random.randint(126, 255))
fontSize = 25
width = int(fontSize * 1.2 * 4)
height = int(fontSize * 1.2)
# 创建图像
image = Image.new('RGB', (width, height), (255, 255, 255))
# 创建字体,本地字体存放位置
font = ImageFont.truetype("C:\Windows\Fonts\Arial.ttf", 20)
draw = ImageDraw.Draw(image)
# 填满整个画面
for x in range(width):
for y in range(height):
draw.point((x, y), fill = rndColor(1))
# 输出字母
for t in range(4):
draw.text((t * height + fontSize * 0.2, fontSize * 0.2), rndChar(), font = font, fill = rndColor(2))
if __name__ == '__main__':
image.show()
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------花了半天时间使用利用HEXO搭建了自己的博客崔斯特的博客
感兴趣的可以点进去看看,这是博客最开始的样子,还没有往里面写什么东西。不过页面简洁、看着很舒服~~
欢迎关注我的博客
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
python随机生成英文字符串_Python练习第六题,生成随机字母相关推荐
- python随机生成密码字符串_Python随机生成带特殊字符的密码
在日常运维中,如果涉及到用户管理,就一定会用到给用户设置密码的工作,其实吧,平时脑子里觉得设置个密码没什么,但要真让你随手敲一个12位带特殊字符的随机密码,也是很痛苦的事,如果让你敲10个这样的随机密 ...
- python按年月日输出字符串_python日期时间转为字符串或者格式化输出的实例
python日期时间转为字符串或者格式化输出的实例 如下所示: 年月日时分秒 >>> print datetime.datetime.now().strftime("%Y- ...
- python 只取年月日 字符串_Python基础:数据类型和变量amp;字符串和编码
Python基础:1.数据类型和变量 数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网 ...
- python中的random模块_Python内置random模块生成随机数的方法
本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法. 随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的ran ...
- python处理多行字符串_python多行字符串
Python中如何处理长代码格式化问题,如何提高格式化输出的长字符串的可读性? 当我们需要格式化输出一个很长的字符串的时候,都写在一行显得很难看,而且可读性也很差:当我们使用链式的语法写代码的时候常常 ...
- python读取路径中字符串_python实现提取str字符串/json中多级目录下的某个值
字符串多级目录取值: 比如说: 你response接收到的数据是这样的. 你现在只需要取到itemstring 这个字段下的值.其他的都不要! 思路就是:字符串是个json格式(或转为json格式), ...
- python用户输入一行字符串_python字符串练习
1. 输入一个字符串,打印所有奇数位上的字符(下标是1,3,5,7-位上的字符) 例如: 输入'abcd1234 ' ** 输出'bd24'** str1 = input('请输入:') for it ...
- python无效的类字符串_Python基础-字符串处理
你好,我是goldsunC 让我们一起进步吧! 字符串操作与处理 字符串是编程语言中经常会遇见的东西,而字符串又和那些编程语句什么的不太一样,我们可能需要对一个字符串进行各种各样的处理,后面我将给出 ...
- python 拼接数字和字符串_Python字符串拼接(包含字符串拼接数字)
我们见过书写字符串的一种特殊方式,即直接将两个字符串紧挨着写在一起,这样的话 Python 就会自动拼接它们,比如说:s1 = "Hello,"'Charlie' print(s1 ...
最新文章
- python中字典按键或键值排序
- TCP,IP,HTTP,SOCKET区别和联系
- Windows 7的使用技巧或功能经典20条
- Python编程基础:第三节 字符串方法String Methods
- [ATF]-ATF启动--BL31跳转到optee和uboot
- 如何选择专业的Java软件工程师培训机构
- linux最小化原则
- php 目录管理,PHP_php目录管理函数小结,chdir : 改变目录。 dir : 目录类 - phpStudy...
- 娓娓道来!那些BERT模型压缩方法(一)
- 如何从外网向内网传东西_鱼缸内出现气泡还会不断缓缓升起,是什么东西,如何处理和解决?...
- 自己的工作计划-备忘
- MYSQL卸载教程(5.7)
- 剖析2015四大合并案:滴滴快的、58赶集、美团大众点评、携程去哪儿 1+12?
- jquery为dom元素追加样式,使用addClass不生效
- NLP定义和机器翻译
- 34day 新浪微博(首页)
- Matlab 自相关检测 :自相关函数xcorr
- 【人工智能】3.谓词与机器推理
- 《Linux命令速查手册》笔记
- 一文让你通俗理解奇异值分解
热门文章
- 拷贝漫画检索下载爬虫
- python如何把矩阵转换为图片_如何将numpy数组转换为(并显示)图片
- 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(8)
- 怎么安装iso服务器系统安装win7系统,win7纯净版iso怎么安装
- java路上偶遇占小狼
- 成功解决 failing shard [AccessControlException[access denied (“java.io.FilePermission“
- 计算机专业跨考为什么考不了,浙江大学计算机专业考研,为什么这么多跨考计算机...
- 文科生学计算机能考研吗,求推荐文科生可以跨考计算机的名校
- Linux 命令(159)—— hostname 命令
- matlab解方程组方法,第二章解线性方程组的直接方法matlab用法