鱼C论坛

 找回密码
 立即注册
查看: 1095|回复: 8

[已解决]验证码怎么改才能每轮验证码随机生成,求大佬指导下

[复制链接]
发表于 2020-4-15 09:38:56 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 o0守望者0o 于 2020-4-15 09:42 编辑
  1. s = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890'
  2. # print(len(s))   #62个字符  len表示字符串的长度,返回整数型整数=62
  3. code = ''
  4. import random
  5. for i in range(4):
  6.     ran = random.randint(0,len(s)-1)   #随机数,0-61共62个随机数为了对应下面字符串s[0-61随机一个]
  7.     code += s[ran]  #同等于s[0-61中随机一个]
  8. for i in range(3):
  9.     print('验证码:'+code)   



  10.     user_input = input('请输入验证码:')
  11.     if user_input.lower() == code.lower():   #用户输入的字母全部转成小写
  12.         print('验证码正确!')
  13.         print('欢迎光临!')
  14.         break
  15.     else:
  16.         if i!=2:
  17.             print('验证码错误!')
  18.             continue
  19.         else:
  20.             print('错误次数达到3次,帐号已被锁定,请联系管理员!')

  21.    
复制代码

运行结果1:
验证码:zLqY
请输入验证码:1
验证码错误!
验证码:zLqY
请输入验证码:2
验证码错误!
验证码:zLqY
请输入验证码:3
错误次数达到3次,帐号已被锁定,请联系管理员!
运行结果2:
验证码:sv1n
请输入验证码:1
验证码错误!
验证码:sv1n
请输入验证码:2
验证码错误!
验证码:sv1N
请输入验证码:sv1n
验证码正确!
欢迎光临!

这里运行结果提示要输入的验证码固定的  怎么改才会变成每次输入的都是随机的?我自己动手改了好多次,都没改成功。。。
最佳答案
2020-4-15 09:49:33
o0守望者0o 发表于 2020-4-15 09:47
谢谢指导,但是您这样改错3次不提示锁定了

那就改成这样:
  1. s = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890'
  2. # print(len(s))   #62个字符  len表示字符串的长度,返回整数型整数=62
  3. count = 0
  4. import random

  5. for i in range(3):
  6.     code = ''
  7.     for k in range(4):
  8.         ran = random.randint(0,len(s)-1)   #随机数,0-61共62个随机数为了对应下面字符串s[0-61随机一个]
  9.         code += s[ran]  #同等于s[0-61中随机一个]
  10.     print('验证码:'+code)   

  11.     user_input = input('请输入验证码:')
  12.     if user_input.lower() == code.lower():   #用户输入的字母全部转成小写
  13.         print('验证码正确!')
  14.         print('欢迎光临!')
  15.         break
  16.     else:
  17.         if count < 2:
  18.             print('验证码错误!')
  19.             count += 1
  20.             continue
  21.         else:
  22.             print('错误次数达到3次,帐号已被锁定,请联系管理员!')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-15 09:40:08 | 显示全部楼层
加个循环,每次都生成新的验证码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 09:41:23 | 显示全部楼层
把验证码放进循环里面就好:

  1. s = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890'
  2. # print(len(s))   #62个字符  len表示字符串的长度,返回整数型整数=62
  3. import random

  4. for i in range(3):
  5.     code = ''
  6.     for i in range(4):
  7.         ran = random.randint(0,len(s)-1)   #随机数,0-61共62个随机数为了对应下面字符串s[0-61随机一个]
  8.         code += s[ran]  #同等于s[0-61中随机一个]
  9.     print('验证码:'+code)   

  10.     user_input = input('请输入验证码:')
  11.     if user_input.lower() == code.lower():   #用户输入的字母全部转成小写
  12.         print('验证码正确!')
  13.         print('欢迎光临!')
  14.         break
  15.     else:
  16.         if i!=2:
  17.             print('验证码错误!')
  18.             continue
  19.         else:
  20.             print('错误次数达到3次,帐号已被锁定,请联系管理员!')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 09:43:45 | 显示全部楼层
很简单,只需要把生成验证码的那一段放在循环里面,然后每一次循环清空code即可
  1. s = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890'
  2. # print(len(s))   #62个字符  len表示字符串的长度,返回整数型整数=62
  3. code = ''
  4. import random
  5. for i in range(3):
  6.     for i in range(4):
  7.         ran = random.randint(0,len(s)-1)   #随机数,0-61共62个随机数为了对应下面字符串s[0-61随机一个]
  8.         code += s[ran]  #同等于s[0-61中随机一个]
  9.     print('验证码:'+code)
  10.     user_input = input('请输入验证码:')
  11.     if user_input == code:   #用户输入的字母全部转成小写
  12.         print('验证码正确!')
  13.         print('欢迎光临!')
  14.         break
  15.     else:
  16.         if i!=2:
  17.             print('验证码错误!')
  18.             code = ''
  19.             continue
  20.         else:
  21.             print('错误次数达到3次,帐号已被锁定,请联系管理员!')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 09:46:41 | 显示全部楼层
code = ''
    for j in range(4):      
        ran = random.randint(0, len(s) - 1)  # 随机数,0-61共62个随机数为了对应下面字符串s[0-61随机一个]
        code += s[ran]  # 同等于s[0-61中随机一个]


把这段放到for循环里面,因为你的代码生成验证码部分是在循环体外,所以他每次取的验证码都是程序刚开始运行的时候,生成的那个
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-15 09:47:43 | 显示全部楼层
qiuyouzhi 发表于 2020-4-15 09:41
把验证码放进循环里面就好:

谢谢指导,但是您这样改错3次不提示锁定了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 09:49:33 | 显示全部楼层    本楼为最佳答案   
o0守望者0o 发表于 2020-4-15 09:47
谢谢指导,但是您这样改错3次不提示锁定了

那就改成这样:
  1. s = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890'
  2. # print(len(s))   #62个字符  len表示字符串的长度,返回整数型整数=62
  3. count = 0
  4. import random

  5. for i in range(3):
  6.     code = ''
  7.     for k in range(4):
  8.         ran = random.randint(0,len(s)-1)   #随机数,0-61共62个随机数为了对应下面字符串s[0-61随机一个]
  9.         code += s[ran]  #同等于s[0-61中随机一个]
  10.     print('验证码:'+code)   

  11.     user_input = input('请输入验证码:')
  12.     if user_input.lower() == code.lower():   #用户输入的字母全部转成小写
  13.         print('验证码正确!')
  14.         print('欢迎光临!')
  15.         break
  16.     else:
  17.         if count < 2:
  18.             print('验证码错误!')
  19.             count += 1
  20.             continue
  21.         else:
  22.             print('错误次数达到3次,帐号已被锁定,请联系管理员!')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-15 09:54:11 | 显示全部楼层
wuqramy 发表于 2020-4-15 09:43
很简单,只需要把生成验证码的那一段放在循环里面,然后每一次循环清空code即可

您这样改也是和上一个人一样  ,错3次不提示错误次数达到3次,锁定帐号
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-15 09:56:02 | 显示全部楼层

谢谢大佬指点  这样可以
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-14 16:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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