o0守望者0o 发表于 2020-4-15 09:38:56

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

本帖最后由 o0守望者0o 于 2020-4-15 09:42 编辑

s = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890'
# print(len(s))   #62个字符len表示字符串的长度,返回整数型整数=62
code = ''
import random
for i in range(4):
    ran = random.randint(0,len(s)-1)   #随机数,0-61共62个随机数为了对应下面字符串s
    code += s#同等于s
for i in range(3):
    print('验证码:'+code)   



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

   

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

这里运行结果提示要输入的验证码固定的怎么改才会变成每次输入的都是随机的?我自己动手改了好多次,都没改成功。。。

老八秘制 发表于 2020-4-15 09:40:08

加个循环,每次都生成新的验证码

qiuyouzhi 发表于 2020-4-15 09:41:23

把验证码放进循环里面就好:

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

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

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

wuqramy 发表于 2020-4-15 09:43:45

很简单,只需要把生成验证码的那一段放在循环里面,然后每一次循环清空code即可
s = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890'
# print(len(s))   #62个字符len表示字符串的长度,返回整数型整数=62
code = ''
import random
for i in range(3):
    for i in range(4):
      ran = random.randint(0,len(s)-1)   #随机数,0-61共62个随机数为了对应下面字符串s
      code += s#同等于s
    print('验证码:'+code)
    user_input = input('请输入验证码:')
    if user_input == code:   #用户输入的字母全部转成小写
      print('验证码正确!')
      print('欢迎光临!')
      break
    else:
      if i!=2:
            print('验证码错误!')
            code = ''
            continue
      else:
            print('错误次数达到3次,帐号已被锁定,请联系管理员!')

岚冰1234 发表于 2020-4-15 09:46:41

code = ''
    for j in range(4):      
      ran = random.randint(0, len(s) - 1)# 随机数,0-61共62个随机数为了对应下面字符串s
      code += s# 同等于s


把这段放到for循环里面,因为你的代码生成验证码部分是在循环体外,所以他每次取的验证码都是程序刚开始运行的时候,生成的那个

o0守望者0o 发表于 2020-4-15 09:47:43

qiuyouzhi 发表于 2020-4-15 09:41
把验证码放进循环里面就好:

谢谢指导,但是您这样改错3次不提示锁定了{:5_109:}

qiuyouzhi 发表于 2020-4-15 09:49:33

o0守望者0o 发表于 2020-4-15 09:47
谢谢指导,但是您这样改错3次不提示锁定了

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

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

    user_input = input('请输入验证码:')
    if user_input.lower() == code.lower():   #用户输入的字母全部转成小写
      print('验证码正确!')
      print('欢迎光临!')
      break
    else:
      if count < 2:
            print('验证码错误!')
            count += 1
            continue
      else:
            print('错误次数达到3次,帐号已被锁定,请联系管理员!')

o0守望者0o 发表于 2020-4-15 09:54:11

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

您这样改也是和上一个人一样,错3次不提示错误次数达到3次,锁定帐号

o0守望者0o 发表于 2020-4-15 09:56:02

qiuyouzhi 发表于 2020-4-15 09:49
那就改成这样:

谢谢大佬指点这样可以
页: [1]
查看完整版本: 验证码怎么改才能每轮验证码随机生成,求大佬指导下