1、整個案例運用到的知識點python
1.python字典、字符串、列表的靈活轉換和使用
數據結構
2.python數據結構之字符串:字符串的格式化、字符串的去空格(strip())
ide
3.python數據結構之字典:字典的構建、字典和字符串的轉換this
4.python數據結構列表:列表的構建、列表和字符串的轉換spa
5.if....else....判斷的使用
設計
6.for循環、while True死循環的使用
ip
5.文件的打開、讀取、關閉等功能的使用
utf-8
2、整個案例的設計的中心思想字符串
1.首先讀取用戶表文件裏面的字符串:包括用戶名和密碼,並將其轉化列表,而後轉換爲爲字典input
2.而後讀取登錄次數文件文件裏面的字符串,包括用戶名,登陸錯誤次數,並將其轉爲列表,而後轉爲字典
3.最後將用戶登陸錯誤的次數、用戶登陸的用戶名、用戶登陸的密碼,進行判斷。並將用戶名、登陸錯誤次數寫入到data1文件中去。
3、代碼實現的功能
1.用戶使用用戶名、密碼登陸
2.登陸錯誤次數超過3次,自動退出登陸,並顯示登陸錯誤次數超過3次
3.登陸用戶名、密碼正確,顯示成功登陸
4.登陸用戶名、密碼錯誤,顯示登陸錯誤。
4、代碼
#!/usr/bin/env python # -*- coding:utf-8 -*- message_dict = {} #新建一個字典,用來存儲用戶名跟密碼 obj1 = file('data','r') #以只讀的方式打開data文件,返回obj1句柄 for i in obj1: #遍歷句柄 line1 = i.strip() #去掉每一行的空格 line1_list = line1.split('|') #並以分隔符「|」將每一行進行分割,並返回列表 message_dict[line1_list[0]]=line1_list[1] #將用戶名和密碼以字典的形式存儲在message_dict字典中 obj1.close() #關閉data文件 count_dict = {} #新建字典,用來存儲用戶名和登陸錯誤次數 obj2 = file('data1','r') #以只讀的方式打開文件data1,返回obj2句柄 for j in obj2: #遍歷obj2句柄 line2 = j.strip() #去掉每一行的空格 line2_list = line2.split('|') #並以分隔符「|」將每一行進行分割,並返回列表 count_dict[line2_list[0]] = int(line2_list[1]) #將用戶名和密碼以字典的形式存儲在count_dict字典中 obj2.close() #關閉data1文件 #print count_dict #print message_dict name = raw_input("plz input name:") #提示用戶輸入用戶名 pwd = raw_input("plz input password:") #提示用戶輸入密碼 while True: if name not in message_dict.keys(): #首先判斷用戶輸入的用戶名是否在用戶列表中是否存在 print "no this user!!" #打印提示信息,沒有此用戶 name = raw_input("plz input name again:") #讓用戶再次輸入合法的用戶名和密碼 pwd = raw_input("plz input password again:") #判斷用戶名輸錯的次數,是否大於3次,大於3次直接跳出循環 if count_dict[name] > 3: print "login failed ,login_failed count > 3" break #用戶輸入的次數小於3次 else: #若是用戶輸入的密碼和用戶對應的密碼匹配,就顯示登陸成功並退出循環 if pwd == message_dict[name]: print "login success" break #若是密碼不匹配,就提示用戶再次輸入用戶名和密碼 else: print "login failed" name = raw_input("plz input name again:") pwd = raw_input("plz input password again:") #並將登陸錯誤次數自增1 count_dict[name] = count_dict[name] + 1 #打開data1文件,並更改後的登陸錯誤次數和用戶名寫入文件 obj3 = file('data1','r+') for k in count_dict.keys(): line3 = "%s|%s\n" %(k,count_dict[k]) #將列表中的元素組成這種類型字符串:jachy|0 obj3.write(line3) #將字符串寫入文件data1中 #關閉文件 obj3.close()
數據文件1:data,存儲用戶名、密碼
lilin|123456 jachy|321123 wangning|123456
數據文件2:data1,存儲用戶名、登陸錯誤次數
jachy|0 wangning|0 lilin|0