第六题:使用 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练习第六题,生成随机字母相关推荐

  1. python随机生成密码字符串_Python随机生成带特殊字符的密码

    在日常运维中,如果涉及到用户管理,就一定会用到给用户设置密码的工作,其实吧,平时脑子里觉得设置个密码没什么,但要真让你随手敲一个12位带特殊字符的随机密码,也是很痛苦的事,如果让你敲10个这样的随机密 ...

  2. python按年月日输出字符串_python日期时间转为字符串或者格式化输出的实例

    python日期时间转为字符串或者格式化输出的实例 如下所示: 年月日时分秒 >>> print datetime.datetime.now().strftime("%Y- ...

  3. python 只取年月日 字符串_Python基础:数据类型和变量amp;字符串和编码

    Python基础:1.数据类型和变量 数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网 ...

  4. python中的random模块_Python内置random模块生成随机数的方法

    本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法. 随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的ran ...

  5. python处理多行字符串_python多行字符串

    Python中如何处理长代码格式化问题,如何提高格式化输出的长字符串的可读性? 当我们需要格式化输出一个很长的字符串的时候,都写在一行显得很难看,而且可读性也很差:当我们使用链式的语法写代码的时候常常 ...

  6. python读取路径中字符串_python实现提取str字符串/json中多级目录下的某个值

    字符串多级目录取值: 比如说: 你response接收到的数据是这样的. 你现在只需要取到itemstring 这个字段下的值.其他的都不要! 思路就是:字符串是个json格式(或转为json格式), ...

  7. python用户输入一行字符串_python字符串练习

    1. 输入一个字符串,打印所有奇数位上的字符(下标是1,3,5,7-位上的字符) 例如: 输入'abcd1234 ' ** 输出'bd24'** str1 = input('请输入:') for it ...

  8. python无效的类字符串_Python基础-字符串处理

    ​你好,我是goldsunC 让我们一起进步吧! 字符串操作与处理 字符串是编程语言中经常会遇见的东西,而字符串又和那些编程语句什么的不太一样,我们可能需要对一个字符串进行各种各样的处理,后面我将给出 ...

  9. python 拼接数字和字符串_Python字符串拼接(包含字符串拼接数字)

    我们见过书写字符串的一种特殊方式,即直接将两个字符串紧挨着写在一起,这样的话 Python 就会自动拼接它们,比如说:s1 = "Hello,"'Charlie' print(s1 ...

最新文章

  1. python中字典按键或键值排序
  2. TCP,IP,HTTP,SOCKET区别和联系
  3. Windows 7的使用技巧或功能经典20条
  4. Python编程基础:第三节 字符串方法String Methods
  5. [ATF]-ATF启动--BL31跳转到optee和uboot
  6. 如何选择专业的Java软件工程师培训机构
  7. linux最小化原则
  8. php 目录管理,PHP_php目录管理函数小结,chdir : 改变目录。 dir : 目录类 - phpStudy...
  9. 娓娓道来!那些BERT模型压缩方法(一)
  10. 如何从外网向内网传东西_鱼缸内出现气泡还会不断缓缓升起,是什么东西,如何处理和解决?...
  11. 自己的工作计划-备忘
  12. MYSQL卸载教程(5.7)
  13. 剖析2015四大合并案:滴滴快的、58赶集、美团大众点评、携程去哪儿 1+12?
  14. jquery为dom元素追加样式,使用addClass不生效
  15. NLP定义和机器翻译
  16. 34day 新浪微博(首页)
  17. Matlab 自相关检测 :自相关函数xcorr
  18. 【人工智能】3.谓词与机器推理
  19. 《Linux命令速查手册》笔记
  20. 一文让你通俗理解奇异值分解

热门文章

  1. 拷贝漫画检索下载爬虫
  2. python如何把矩阵转换为图片_如何将numpy数组转换为(并显示)图片
  3. 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(8)
  4. 怎么安装iso服务器系统安装win7系统,win7纯净版iso怎么安装
  5. java路上偶遇占小狼
  6. 成功解决 failing shard [AccessControlException[access denied (“java.io.FilePermission“
  7. 计算机专业跨考为什么考不了,浙江大学计算机专业考研,为什么这么多跨考计算机...
  8. 文科生学计算机能考研吗,求推荐文科生可以跨考计算机的名校
  9. Linux 命令(159)—— hostname 命令
  10. matlab解方程组方法,第二章解线性方程组的直接方法matlab用法