kldsy1984 发表于 2020-5-3 09:11:53

小白求助,新手做作业

执行程序产生验证码,提示输入用户名,密码,验证码,如果正确提示登录成功,否则重新输入(要求产生新的验证码)
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)
                        code+=s
                print('验证码是:',code)
                c=input('请输入验证码')
                if c==code:
                        print('验证码正确')
                        print('登录成功')
                        break
                else:
                        print('验证码错误,请重新输入')
        else:
                print('用户名或密码错误!')
else:
        print('用户名或密码错误三次,账户已锁定!')
验证码错误时跳到用户名登录一步,怎么解决??

Twilight6 发表于 2020-5-3 09:15:11

你这里用for循环也可以到登入那一步呀?
你意思是锁定后到回第一步吧?

kldsy1984 发表于 2020-5-3 09:29:52

Twilight6 发表于 2020-5-3 09:15
你这里用for循环也可以到登入那一步呀?
你意思是锁定后到回第一步吧?

不好意思问题没说清楚,当输入验证码错误时,它返回到请输入用户名一步了,不是应该返回到请输入验证码这一步吗

Twilight6 发表于 2020-5-3 09:43:54

本帖最后由 Twilight6 于 2020-5-3 09:55 编辑

kldsy1984 发表于 2020-5-3 09:29
不好意思问题没说清楚,当输入验证码错误时,它返回到请输入用户名一步了,不是应该返回到请输入验证码这 ...

你把登入写在了for循环里所以每次循环肯定会从’头‘开始你这边的头就是登入用户密码这些,你把登入改外面在加个循环就好
username = input('请输入用户名:')
password = input('请输入密码:')
for i in range(3):
      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)
                        code+=s
                print('验证码是:',code)
                c=input('请输入验证码')
                if c==code:
                        print('验证码正确')
                        print('登录成功')
                        break
                else:
                        print('验证码错误,请重新输入')
      else:
            print('用户名或密码错误!')
            username = input('请输入用户名:')          # 这里因为循环把登入移动到外部
            password = input('请输入密码:')         # 所以要在输入错误这加上
else:
      print('用户名或密码错误三次,账户已锁定!')

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

所以在改改:
username = input('请输入用户名:')
password = input('请输入密码:')
count = 2# 初始化允许输入错误次数 ,因为第一次输入是在循环外,就是一二两行,所有循环内还有两次机会
while count :
      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)
                        code+=s
                print('验证码是:',code)
                c=input('请输入验证码')
                if c==code:
                        print('验证码正确')
                        print('登录成功')
                        break
                else:
                        print('验证码错误,请重新输入')
      else:
            count -= 1   # 这边每次错误都减一次机会,其他情况不会减机会
            print('用户名或密码错误!')
            username = input('请输入用户名:')
            password = input('请输入密码:')
else:
      print('用户名或密码错误三次,账户已锁定!')

xiangjianshinan 发表于 2020-5-3 10:02:53


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)
            code+=s
      print('验证码是:',code)
      c=input('请输入验证码')
      while c.lower() != code.lower():
            code=''
            for i in range(4):
                r=random.randint(0,len(s)-1)
                # print(r)
                # print(s)
                code+=s
            print('验证码是:',code)
            c=input('验证码错误,请重新输入')
      else:
            print('验证码正确')
            print('登录成功')
            break
    else:
      print('用户名或密码错误!')
else:
    print('用户名或密码错误三次,账户已锁定!')
页: [1]
查看完整版本: 小白求助,新手做作业