python學習之路之案例0(實現登陸功能,登陸錯誤次數超過3次,自動退出登陸)

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