作業要求
1、實現注冊功能
輸入:username、passowrd,cpassowrd
最多可以輸錯3次
3個都不能為空
用戶名長度最少6位, 最長20位,用戶名不能重復
密碼長度最少8位,最長15位
兩次輸入的密碼要一致
注冊成功之后,要寫到文件里面
2、登陸功能實現
最多可以輸錯3次
用戶名和密碼去文件里面取
提示
列表list、文件的打開/讀/寫/關閉、判斷、循環
相關教程
代碼范例
user.txt文件內容格式如下:
wangxiaoliu,123123123
xiaoming,44442222
zhangsan,00998877
注冊:
f = open('user.txt', 'a+')#打開一個txt文本,a+意思是追加模式,可讀可寫 f.seek(0)#將指針移到第1行 res=f.read() #將文本讀出來,保存成一個列表 all_user_name=[]# 定義一個空的元祖,用來裝用戶名 for r in res.split('\n'): #用換行分隔所有的“用戶名密碼” username=r.split(',')[0]#用逗號分隔用戶名和密碼,將用戶名保存在username中 all_user_name.append(username)#保存用戶名 print(all_user_name) # 打印看一下是不是把用戶名分離出來了 for i in range(3): username = input('請輸入用戶名:').strip()# 去掉兩端空格 password = input('請輸入密碼:').strip() cpassword = input('請重復輸入密碼:').strip() if username==''or password==''or cpassword=='': print('賬號或密碼不能為空') elif username in all_user_name: print('用戶名重復') elif len(username)<6 or len(username)>20: print('用戶名長度為6-20個字符') elif len(password)<8 or len(password)>15: print('密碼長度為8-15個字符') elif password!=cpassword: print('兩次密碼不一致') else: print('恭喜注冊成功!') f.write('\n'+username+','+password)#寫入文本方法 break else: print('輸入錯誤次數過多') f.close()
登錄(寫了兩種方法):
保存成list
f = open('user.txt', 'a+') f.seek(0) all=(f.read()) #將分割后的文本保存成一個list for a in range(3): username2 = input('請登錄:') password2 = input('請輸入密碼:') bb=username2+','+password2 if bb in all: print('登錄成功^_^') break else: print('賬號或密碼錯誤,請重新輸入') else: print('錯誤次數過多') f.close()
保存成字典
all_user={} # 定義一個空的字典 res = open('users.txt').read() #打開文件 for r in res.split('\n'):# ['username,123456', 'username2,abc123'] # 用換行分隔所有的“用戶名,密碼” if r.split()!='': username=r.split(',')[0]#用逗號分隔用戶名和密碼,單獨保存成元素 pwd=r.split(',')[1] all_user[username]=pwd for a in range(3): username = input('請登錄:') pwd = input('請輸入密碼:') aa=username+','+pwd if username in all_user: if pwd==all_user.get(username): print('登錄成功^_^') break else: print('賬號或密碼錯誤,請重新輸入') else: print('錯誤次數過多')