鱼C论坛

 找回密码
 立即注册
查看: 1131|回复: 4

小白求助,新手做作业

[复制链接]
发表于 2020-5-3 09:11:53 | 显示全部楼层 |阅读模式

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

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

x
执行程序产生验证码,提示输入用户名,密码,验证码,如果正确提示登录成功,否则重新输入(要求产生新的验证码)
for i in range(3):
        username=input('请输入用户名:')
        password=input('请输入密码:')
        if username=='admin' and password=='123456':
                # print('登录成功')
                s='qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890'
                code=''
                import random
                for i in range(4):
                        r=random.randint(0,len(s)-1)
                        # print(r)
                        # print(s[r])
                        code+=s[r]
                print('验证码是:',code)
                c=input('请输入验证码')
                if c==code:
                        print('验证码正确')
                        print('登录成功')
                        break
                else:
                        print('验证码错误,请重新输入')
        else:
                print('用户名或密码错误!')
else:
        print('用户名或密码错误三次,账户已锁定!')
验证码错误时跳到用户名登录一步,怎么解决??
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-3 09:15:11 | 显示全部楼层
你这里用for循环也可以到登入那一步呀?
你意思是锁定后到回第一步吧?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-3 09:29:52 | 显示全部楼层
Twilight6 发表于 2020-5-3 09:15
你这里用for循环也可以到登入那一步呀?
你意思是锁定后到回第一步吧?

不好意思问题没说清楚,当输入验证码错误时,它返回到请输入用户名一步了,不是应该返回到请输入验证码这一步吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-3 09:43:54 | 显示全部楼层
本帖最后由 Twilight6 于 2020-5-3 09:55 编辑
kldsy1984 发表于 2020-5-3 09:29
不好意思问题没说清楚,当输入验证码错误时,它返回到请输入用户名一步了,不是应该返回到请输入验证码这 ...


你把登入写在了for循环里所以每次循环肯定会从’头‘开始你这边的头就是登入用户密码这些,你把登入改外面在加个循环就好
  1. username = input('请输入用户名:')
  2. password = input('请输入密码:')
  3. for i in range(3):
  4.         if username=='admin' and password=='123456':
  5.                 # print('登录成功')
  6.                 s='qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890'
  7.                 code=''
  8.                 import random
  9.                 for i in range(4):
  10.                         r=random.randint(0,len(s)-1)
  11.                         # print(r)
  12.                         # print(s[r])
  13.                         code+=s[r]
  14.                 print('验证码是:',code)
  15.                 c=input('请输入验证码')
  16.                 if c==code:
  17.                         print('验证码正确')
  18.                         print('登录成功')
  19.                         break
  20.                 else:
  21.                         print('验证码错误,请重新输入')
  22.         else:
  23.             print('用户名或密码错误!')
  24.             username = input('请输入用户名:')          # 这里因为循环把登入移动到外部
  25.             password = input('请输入密码:')           # 所以要在输入错误这加上
  26. else:
  27.         print('用户名或密码错误三次,账户已锁定!')
复制代码


不过这样也还是有瑕疵,因为你结果是输入账号密码错误三次才会锁定
但是这里用了for循环只要循环正常完毕就都会锁定,也就是说你验证码输入错误几次也会导致锁定

所以在改改:
  1. username = input('请输入用户名:')
  2. password = input('请输入密码:')
  3. count = 2  # 初始化允许输入错误次数 ,因为第一次输入是在循环外,就是一二两行,所有循环内还有两次机会
  4. while count :
  5.         if username=='admin' and password=='123456':
  6.                 # print('登录成功')
  7.                 s='qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890'
  8.                 code=''
  9.                 import random
  10.                 for i in range(4):
  11.                         r=random.randint(0,len(s)-1)
  12.                         # print(r)
  13.                         # print(s[r])
  14.                         code+=s[r]
  15.                 print('验证码是:',code)
  16.                 c=input('请输入验证码')
  17.                 if c==code:
  18.                         print('验证码正确')
  19.                         print('登录成功')
  20.                         break
  21.                 else:
  22.                         print('验证码错误,请重新输入')
  23.         else:
  24.             count -= 1   # 这边每次错误都减一次机会,其他情况不会减机会
  25.             print('用户名或密码错误!')
  26.             username = input('请输入用户名:')
  27.             password = input('请输入密码:')
  28. else:
  29.         print('用户名或密码错误三次,账户已锁定!')
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-3 10:02:53 | 显示全部楼层

  1. for i in range(3):
  2.     username=input('请输入用户名:')
  3.     password=input('请输入密码:')
  4.     if username=='admin' and password=='123456':
  5.         # print('登录成功')
  6.         s='qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890'
  7.         code=''
  8.         import random
  9.         for i in range(4):
  10.             r=random.randint(0,len(s)-1)
  11.             # print(r)
  12.             # print(s[r])
  13.             code+=s[r]
  14.         print('验证码是:',code)
  15.         c=input('请输入验证码')
  16.         while c.lower() != code.lower():
  17.             code=''
  18.             for i in range(4):
  19.                 r=random.randint(0,len(s)-1)
  20.                 # print(r)
  21.                 # print(s[r])
  22.                 code+=s[r]
  23.             print('验证码是:',code)
  24.             c=input('验证码错误,请重新输入')
  25.         else:
  26.             print('验证码正确')
  27.             print('登录成功')
  28.             break
  29.     else:
  30.         print('用户名或密码错误!')
  31. else:
  32.     print('用户名或密码错误三次,账户已锁定!')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-18 16:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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