鱼C论坛

 找回密码
 立即注册
查看: 2291|回复: 5

[已解决]利用GUI界面生成六位验证码

[复制链接]
发表于 2021-4-10 23:04:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
各位大神,孩纸就靠你们了!!!
编程:利用GUI界面实现生成验证码六位的程序。
要求:6位验证码应该可以有大写字母小写字母和数字;数字和字母出现的概率比是2:1;大写字母和小写字母的出现概率比是1:1;界面要美观自然,控件的大小颜色还有字体字号要有所变化。
最佳答案
2021-4-11 00:32:30
本帖最后由 小伤口 于 2021-4-11 00:35 编辑

from tkinter import *
from random import *
def compute():
    yzm=[]
    for i in range(2):
        sz=str(randint(0,9))
    
        yzm.append(sz)
    for i in range(2):
        zm=chr(randint(65,90))
        yzm.append(zm)
      
        
    for i in range(2):
        yz=chr(randint(97,122))
        yzm.append(yz)

    shuffle(yzm)#打乱顺序
    lal.config(text=yzm)
win=Tk()
win.title("生成验证码")
win.geometry("300x200")
lal=Label(win,text="验证码的位置")
lal.config(font=("微软雅黑",20))
lal.config(bg="blue")
lal.pack()
bul=Button(win,text="生成验证码")
bul.config(command=compute)
bul.config(activebackground="green")
bul.pack(side=BOTTOM)
win.mainloop()

既然要数字和字母出现的概率比是2:1;大写字母和小写字母的出现概率比是1:1
那么分开写就行然后打乱列表顺序就好啦~
我还以为还要去验证 验证码,如果只是生成验证码那还好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-10 23:06:02 | 显示全部楼层
?这不是问问题的好办法
直接发项目,你指望大家给你做作业吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-10 23:07:36 | 显示全部楼层
你还是花钱去找别人写吧哈哈
这个白嫖不了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-10 23:50:11 | 显示全部楼层
昨非 发表于 2021-4-10 23:06
?这不是问问题的好办法
直接发项目,你指望大家给你做作业吗

from tkinter import *
from random import *
def compute():
    yzm=[]
    for i in range(6):
        sz=str(randint(0,9))
        zm=chr(randint(65,90))
        yz=chr(randint(97,122))
        yzm.append(choice([sz,zm,yz]))
    lal.config(text=yzm)
win=Tk()
win.title("生成验证码")
win.geometry("300x200")
lal=Label(win,text="验证码的位置")
lal.config(font=("微软雅黑",20))
lal.config(bg="blue")
lal.pack()
bul=Button(win,text="生成验证码")
bul.config(command=compute)
bul.config(activebackground="green")
bul.pack(side=BOTTOM)
win.mainloop()
不好意思,因为是第一次用论坛所以不太懂规则,上面的是我做的,但是我不知道怎么让数字和字母概率为2:1,查了半天书也不会
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-11 00:32:30 | 显示全部楼层    本楼为最佳答案   
本帖最后由 小伤口 于 2021-4-11 00:35 编辑

from tkinter import *
from random import *
def compute():
    yzm=[]
    for i in range(2):
        sz=str(randint(0,9))
    
        yzm.append(sz)
    for i in range(2):
        zm=chr(randint(65,90))
        yzm.append(zm)
      
        
    for i in range(2):
        yz=chr(randint(97,122))
        yzm.append(yz)

    shuffle(yzm)#打乱顺序
    lal.config(text=yzm)
win=Tk()
win.title("生成验证码")
win.geometry("300x200")
lal=Label(win,text="验证码的位置")
lal.config(font=("微软雅黑",20))
lal.config(bg="blue")
lal.pack()
bul=Button(win,text="生成验证码")
bul.config(command=compute)
bul.config(activebackground="green")
bul.pack(side=BOTTOM)
win.mainloop()

既然要数字和字母出现的概率比是2:1;大写字母和小写字母的出现概率比是1:1
那么分开写就行然后打乱列表顺序就好啦~
我还以为还要去验证 验证码,如果只是生成验证码那还好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-11 01:00:30 | 显示全部楼层
别管什么 2:1 还是 1:1

不就是 6 个字符嘛

总的来讲就是生成 4 个数字, 2 个字母

2 个字母里面, 1 个大写 1 个小写

生成完了以后,放到 list1 里面

list1 用 random.shuffle(list1) 去打乱顺序,然后输出就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-9 15:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表