作业二:编写登陆接口
- 输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后锁定
自己写的第一个长一点的Python程序,当作纪念啦~
要在e盘里面有四个文件才可以运行哦~
1 #! /usr/bin/env python
2 # -*- coding:utf-8 -*-
3 # Author:Ku
4
5 record_num = open(r'e:\first week\record_num.txt', 'r') # 用来记录用户密码以及尝试过的用户的数量
6
7 # 提取用户数量以及尝试过的用户名数量
8 num_username = int(record_num.readline().rstrip())
9 num_record_username = int(record_num.readline().rstrip())
10 #print(num_username,num_record_username)
11 record_num.close()
12
13 count = 1 #指示尝试的次数
14
15 while count <= 3:
16
17 username = input("Please enter your username:") #输入模块
18 #password = getpass.getpass("Please enter your password:")
19 password = input("Please enter your password:")
20
21
22 user = open(r'e:\first week\username.txt', 'r') #文件打开模块
23 passwd = open(r'e:\first week\passwd.txt', 'r')
24
25
26 trid_name = 0 #这个模块来判断是否这个用户名尝试过很多次
27 with open(r'e:\first week\record_name.txt', 'r') as record_tried_name:
28 for i in range(num_record_username):
29
30 # record_buffer = record_tried_name.readline().rstrip()
31 if username == record_tried_name.readline().rstrip():
32 print("This account have tried too many times!")
33 trid_name = 1
34 break
35 if trid_name == 1:
36 break
37
38 user_valid = 0 #用来标记用户名是否有效
39
40 j = 0 # 用来标记有效用户名的编号
41
42 for i in range(num_username):
43 username_buffer = user.readline().rstrip() #用来暂时存储用户名,可以不用
44 if username == username_buffer:
45 user_valid = 1
46 j = i # record the which username is right
47 break
48
49 if user_valid == 0:
50 print("Your account is not valid")
51 count += 1
52 if count >= 4:
53 print("Sorry you've tried too many times")
54
55 with open(r'e:\first week\record_name.txt', 'a') as record_tried_name: #该模块用来写入尝试过很多次的账户
56 record_tried_name.write("%s\n"%username)
57
58 num_record_username += 1 # 这个模块来记录记录的账户数量的变化
59 with open(r'e:\first week\record_num.txt', 'w') as change:
60 change.write("%s\n" % num_username)
61 change.write("%s\n" % num_record_username)
62
63 record_tried_name.close()
64 break #跳出while循环
65
66 else:
67 login_success = 0
68 for l in range(num_username): #l作为指针指示第几行
69 passwd_buffer = passwd.readline().rstrip()
70 if l == j: #如果l与登录用户的顺序一致,则进入之后的判断
71 if password == passwd_buffer:
72 print("yes,%s is in!"% username)
73 login_success = 1
74 break #跳出for循环
75
76 else:
77 print("Your password is wrong!")
78 count += 1
79 if count >=4:
80 print("Sorry you've tried too many times")
81 with open(r'e:\first week\record_name.txt', 'a') as record_tried_name: #用来写入尝试过很多次的账户
82 record_tried_name.write("%s\n" % username)
83
84 num_record_username +=1 #这个模块来记录记录的账户数量的变化
85 with open(r'e:\first week\record_num.txt', 'w') as change:
86 change.write("%s\n"%num_username)
87 change.write("%s\n"%num_record_username)
88
89 record_tried_name.close()
90 if login_success == 1:
91 break #跳出while循环,成功登录
92 user.close() #关文件
93 passwd.close() #关文件
#! /usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Ku
record_num = open(r'e:\first week\record_num.txt', 'r') # 用来记录用户密码以及尝试过的用户的数量
# 提取用户数量以及尝试过的用户名数量
num_username = int(record_num.readline().rstrip())
num_record_username = int(record_num.readline().rstrip())
#print(num_username,num_record_username)
record_num.close()
count = 1 #指示尝试的次数
while count <= 3:
username = input("Please enter your username:") #输入模块
#password = getpass.getpass("Please enter your password:")
password = input("Please enter your password:")
user = open(r'e:\first week\username.txt', 'r') #文件打开模块
passwd = open(r'e:\first week\passwd.txt', 'r')
trid_name = 0 #这个模块来判断是否这个用户名尝试过很多次
with open(r'e:\first week\record_name.txt', 'r') as record_tried_name:
for i in range(num_record_username):
# record_buffer = record_tried_name.readline().rstrip()
if username == record_tried_name.readline().rstrip():
print("This account have tried too many times!")
trid_name = 1
break
if trid_name == 1:
break
user_valid = 0 #用来标记用户名是否有效
j = 0 # 用来标记有效用户名的编号
for i in range(num_username):
username_buffer = user.readline().rstrip() #用来暂时存储用户名,可以不用
if username == username_buffer:
user_valid = 1
j = i # record the which username is right
break
if user_valid == 0:
print("Your account is not valid")
count += 1
if count >= 4:
print("Sorry you've tried too many times")
with open(r'e:\first week\record_name.txt', 'a') as record_tried_name: #该模块用来写入尝试过很多次的账户
record_tried_name.write("%s\n"%username)
num_record_username += 1 # 这个模块来记录记录的账户数量的变化
with open(r'e:\first week\record_num.txt', 'w') as change:
change.write("%s\n" % num_username)
change.write("%s\n" % num_record_username)
record_tried_name.close()
break #跳出while循环
else:
login_success = 0
for l in range(num_username): #l作为指针指示第几行
passwd_buffer = passwd.readline().rstrip()
if l == j: #如果l与登录用户的顺序一致,则进入之后的判断
if password == passwd_buffer:
print("yes,%s is in!"% username)
login_success = 1
break #跳出for循环
else:
print("Your password is wrong!")
count += 1
if count >=4:
print("Sorry you've tried too many times")
with open(r'e:\first week\record_name.txt', 'a') as record_tried_name: #用来写入尝试过很多次的账户
record_tried_name.write("%s\n" % username)
num_record_username +=1 #这个模块来记录记录的账户数量的变化
with open(r'e:\first week\record_num.txt', 'w') as change:
change.write("%s\n"%num_username)
change.write("%s\n"%num_record_username)
record_tried_name.close()
if login_success == 1:
break #跳出while循环,成功登录
user.close() #关文件
passwd.close() #关文件