|
发表于 2020-5-3 09:43:54
|
显示全部楼层
本帖最后由 Twilight6 于 2020-5-3 09:55 编辑
你把登入写在了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[r])
- code+=s[r]
- 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[r])
- code+=s[r]
- print('验证码是:',code)
- c=input('请输入验证码')
- if c==code:
- print('验证码正确')
- print('登录成功')
- break
- else:
- print('验证码错误,请重新输入')
- else:
- count -= 1 # 这边每次错误都减一次机会,其他情况不会减机会
- print('用户名或密码错误!')
- username = input('请输入用户名:')
- password = input('请输入密码:')
- else:
- print('用户名或密码错误三次,账户已锁定!')
复制代码
|
|