Property Exercise
生活随笔
收集整理的這篇文章主要介紹了
Property Exercise
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
要求一:自定義用戶信息數據結構,寫入文件,然后讀出內容,利用eval重新獲取數據結構3 with open('user.db','w') as write_file:#創建并以寫入的方式打開一個文件user.db4 write_file.write(str({5 "egon":{"password":"123",'status':False,'timeout':0},6 "alex":{"password":"456",'status':False,'timeout':0},7 }))#在user.db中加入兩個用戶信息以字典的方式儲存8 9 with open('user.db','r') as read_file:#以只讀的方式打開一個文件user.db
10 data=read_file.read()#讀取user.db中的數據
11 d=eval(data)#將user.db中的數據轉為字典
12 print(d['egon']['password'])#打印字典中egon的password 對應value
13 print(d['egon']['status'])
14 print(d['egon']['timeout'])
求二:定義用戶類,定義屬性db,執行obj.db可以拿到用戶數據結構3 class User: #定義User類4 db_path='user.db'5 def __init__(self,username): #在實例化User類時,傳入Username參數的值6 self.username=username7 @property#將db()方法作為屬性,讓用戶調用8 def db(self):9 data=open(self.db_path,'r').read()#以只讀的方式打開文件user.db 10 return eval(data)#以字典的方式返回user.db中的內容 11 u=User('egon')#實例化對象u,傳入egon 12 print(u.db['egon'])#打印又u.db()返回的字典中,對應egon的value 13 print(u.db['egon']['password'])#打印又u.db()返回的字典中,對應egon的password,value
求三:分析下述代碼的執行流程3 import time4 class User:#定義User類5 db_path='user.db'6 def __init__(self,name): #在實例化User類時,傳入name參數的值7 self.name=name8 @property#將db()方法作為屬性,讓用戶調用,同時產生db.setter和db.del方法9 def db(self): 10 with open(self.db_path,'r') as read_file:#當調用db方法時,打開文件user.db 11 info=read_file.read() 12 return eval(info)#以字典的方式返回user.db中的用戶信息 13 @db.setter#在對db屬性進行修改操作的時候,調用此方法 14 def db(self,value): 15 with open(self.db_path,'w') as write_file:#創建并打開一個文件user.db 16 write_file.write(str(value))#在文件中寫入db屬性得到的值 17 write_file.flush()#刷新文件的緩沖區域,讓數據立刻寫入文件 18 def login(self): #定義login方法 19 data=self.db#data得到db方法(現在被@property修飾過的屬性)返回的user.db中的數據 20 if data[self.name]['status']:#判斷name的status字段是否為Ture 21 print('已經登錄') 22 return True 23 if data[self.name]['timeout'] < time.time(): #判斷name的timeout字段值是否小于....呃~1970年到現在的時間 24 count=0 25 while count < 3: 26 passwd=input('password>>: ')#輸入密碼 27 if not passwd:continue#如果密碼為空,那么重新循環到輸入密碼 28 if passwd == data[self.name]['password']: #輸入密碼正確 29 data[self.name]['status']=True#更改用戶的登陸狀態 30 data[self.name]['timeout']=0#超時字段歸0 31 self.db=data#將改寫過的值重新調用db.setter方法存入user.db文件中,在用戶看來就是對db屬性進行了重新的賦值操作 32 break 33 count+=1#只允許用戶輸入三次錯誤的機會 34 else: 35 data[self.name]['timeout']=time.time()+10#如果三次輸入錯誤,那么該用戶將被鎖定10秒 36 self.db=data#將改寫過的值重新調用db.setter方法存入user.db文件中,在用戶看來就是對db屬性進行了重新的賦值操作 37 else:#如果判斷用戶的timeout大于1970年到現在的值 38 print('賬號已經鎖定10秒') 39 40 u1=User('egon') #實例化u1傳入name,egon 41 print("egon login:") 42 u1.login()#u1調用login的方法
四:根據上述原理,編寫退出登錄方法(退出前要判斷是否是登錄狀態),自定義property,供用戶查看自己賬號的鎖定時間3 import time4 class User:#定義User類5 db_path='user.db'6 def __init__(self,name): #在實例化User類時,傳入name參數的值7 self.name=name8 print("%s Login:"%self.name)9 @property#將db()方法作為屬性,讓用戶調用,同時產生db.setter和db.del方法 10 def db(self): 11 with open(self.db_path,'r') as read_file:#當調用db方法時,打開文件user.db 12 info=read_file.read() 13 return eval(info)#以字典的方式返回user.db中的用戶信息 14 @db.setter#在對db屬性進行修改操作的時候,調用此方法 15 def db(self,value): 16 with open(self.db_path,'w') as write_file:#創建并打開一個文件user.db 17 write_file.write(str(value))#在文件中寫入db屬性得到的值 18 write_file.flush()#刷新文件的緩沖區域,讓數據立刻寫入文件 19 @property 20 def UserLockTime(self): 21 return int(self.db[self.name]["timeout"]-time.time()) 22 def loginOut(self): 23 data = self.db 24 if(data[self.name]['status']): 25 print(self.name, "正在登出.....") 26 data[self.name]['status'] = False 27 self.db = data 28 time.sleep(2) 29 print(self.name,"登出成功!") 30 else: 31 print(self.name,"并沒有登陸") 32 def login(self): #定義login方法 33 data=self.db#data得到db方法(現在被@property修飾過的屬性)返回的user.db中的數據 34 if data[self.name]['status']:#判斷name的status字段是否為Ture 35 print('已經登錄') 36 return True 37 if data[self.name]['timeout'] < time.time(): #判斷name的timeout字段值是否小于....呃~1970年到現在的時間 38 count=0 39 while count < 3: 40 passwd=input('password>>: ')#輸入密碼 41 if not passwd:continue#如果密碼為空,那么重新循環到輸入密碼 42 if passwd == data[self.name]['password']: #輸入密碼正確 43 data[self.name]['status']=True#更改用戶的登陸狀態 44 data[self.name]['timeout']=0#超時字段歸0 45 self.db=data#將改寫過的值重新調用db.setter方法存入user.db文件中,在用戶看來就是對db屬性進行了重新的賦值操作 46 print("歡迎%s登陸,馬上為您進行登出服務"%self.name) 47 time.sleep(3) 48 break 49 count+=1#只允許用戶輸入三次錯誤的機會 50 else: 51 data[self.name]['timeout']=time.time()+180#如果三次輸入錯誤,那么該用戶將被鎖定180秒 52 self.db=data#將改寫過的值重新調用db.setter方法存入user.db文件中,在用戶看來就是對db屬性進行了重新的賦值操作 53 else:#如果判斷用戶的timeout大于1970年到現在的值 54 print('賬號已經鎖定180秒,剩余%s秒'%self.UserLockTime) 55 u1=User('egon') #實例化u1傳入name,egon 56 u1.login()#u1調用login的方法 57 u1.loginOut()#u1調用loginOut方法 58 u2=User('alex') 59 u2.login()
求二:定義用戶類,定義屬性db,執行obj.db可以拿到用戶數據結構3 class User: #定義User類4 db_path='user.db'5 def __init__(self,username): #在實例化User類時,傳入Username參數的值6 self.username=username7 @property#將db()方法作為屬性,讓用戶調用8 def db(self):9 data=open(self.db_path,'r').read()#以只讀的方式打開文件user.db 10 return eval(data)#以字典的方式返回user.db中的內容 11 u=User('egon')#實例化對象u,傳入egon 12 print(u.db['egon'])#打印又u.db()返回的字典中,對應egon的value 13 print(u.db['egon']['password'])#打印又u.db()返回的字典中,對應egon的password,value
求三:分析下述代碼的執行流程3 import time4 class User:#定義User類5 db_path='user.db'6 def __init__(self,name): #在實例化User類時,傳入name參數的值7 self.name=name8 @property#將db()方法作為屬性,讓用戶調用,同時產生db.setter和db.del方法9 def db(self): 10 with open(self.db_path,'r') as read_file:#當調用db方法時,打開文件user.db 11 info=read_file.read() 12 return eval(info)#以字典的方式返回user.db中的用戶信息 13 @db.setter#在對db屬性進行修改操作的時候,調用此方法 14 def db(self,value): 15 with open(self.db_path,'w') as write_file:#創建并打開一個文件user.db 16 write_file.write(str(value))#在文件中寫入db屬性得到的值 17 write_file.flush()#刷新文件的緩沖區域,讓數據立刻寫入文件 18 def login(self): #定義login方法 19 data=self.db#data得到db方法(現在被@property修飾過的屬性)返回的user.db中的數據 20 if data[self.name]['status']:#判斷name的status字段是否為Ture 21 print('已經登錄') 22 return True 23 if data[self.name]['timeout'] < time.time(): #判斷name的timeout字段值是否小于....呃~1970年到現在的時間 24 count=0 25 while count < 3: 26 passwd=input('password>>: ')#輸入密碼 27 if not passwd:continue#如果密碼為空,那么重新循環到輸入密碼 28 if passwd == data[self.name]['password']: #輸入密碼正確 29 data[self.name]['status']=True#更改用戶的登陸狀態 30 data[self.name]['timeout']=0#超時字段歸0 31 self.db=data#將改寫過的值重新調用db.setter方法存入user.db文件中,在用戶看來就是對db屬性進行了重新的賦值操作 32 break 33 count+=1#只允許用戶輸入三次錯誤的機會 34 else: 35 data[self.name]['timeout']=time.time()+10#如果三次輸入錯誤,那么該用戶將被鎖定10秒 36 self.db=data#將改寫過的值重新調用db.setter方法存入user.db文件中,在用戶看來就是對db屬性進行了重新的賦值操作 37 else:#如果判斷用戶的timeout大于1970年到現在的值 38 print('賬號已經鎖定10秒') 39 40 u1=User('egon') #實例化u1傳入name,egon 41 print("egon login:") 42 u1.login()#u1調用login的方法
四:根據上述原理,編寫退出登錄方法(退出前要判斷是否是登錄狀態),自定義property,供用戶查看自己賬號的鎖定時間3 import time4 class User:#定義User類5 db_path='user.db'6 def __init__(self,name): #在實例化User類時,傳入name參數的值7 self.name=name8 print("%s Login:"%self.name)9 @property#將db()方法作為屬性,讓用戶調用,同時產生db.setter和db.del方法 10 def db(self): 11 with open(self.db_path,'r') as read_file:#當調用db方法時,打開文件user.db 12 info=read_file.read() 13 return eval(info)#以字典的方式返回user.db中的用戶信息 14 @db.setter#在對db屬性進行修改操作的時候,調用此方法 15 def db(self,value): 16 with open(self.db_path,'w') as write_file:#創建并打開一個文件user.db 17 write_file.write(str(value))#在文件中寫入db屬性得到的值 18 write_file.flush()#刷新文件的緩沖區域,讓數據立刻寫入文件 19 @property 20 def UserLockTime(self): 21 return int(self.db[self.name]["timeout"]-time.time()) 22 def loginOut(self): 23 data = self.db 24 if(data[self.name]['status']): 25 print(self.name, "正在登出.....") 26 data[self.name]['status'] = False 27 self.db = data 28 time.sleep(2) 29 print(self.name,"登出成功!") 30 else: 31 print(self.name,"并沒有登陸") 32 def login(self): #定義login方法 33 data=self.db#data得到db方法(現在被@property修飾過的屬性)返回的user.db中的數據 34 if data[self.name]['status']:#判斷name的status字段是否為Ture 35 print('已經登錄') 36 return True 37 if data[self.name]['timeout'] < time.time(): #判斷name的timeout字段值是否小于....呃~1970年到現在的時間 38 count=0 39 while count < 3: 40 passwd=input('password>>: ')#輸入密碼 41 if not passwd:continue#如果密碼為空,那么重新循環到輸入密碼 42 if passwd == data[self.name]['password']: #輸入密碼正確 43 data[self.name]['status']=True#更改用戶的登陸狀態 44 data[self.name]['timeout']=0#超時字段歸0 45 self.db=data#將改寫過的值重新調用db.setter方法存入user.db文件中,在用戶看來就是對db屬性進行了重新的賦值操作 46 print("歡迎%s登陸,馬上為您進行登出服務"%self.name) 47 time.sleep(3) 48 break 49 count+=1#只允許用戶輸入三次錯誤的機會 50 else: 51 data[self.name]['timeout']=time.time()+180#如果三次輸入錯誤,那么該用戶將被鎖定180秒 52 self.db=data#將改寫過的值重新調用db.setter方法存入user.db文件中,在用戶看來就是對db屬性進行了重新的賦值操作 53 else:#如果判斷用戶的timeout大于1970年到現在的值 54 print('賬號已經鎖定180秒,剩余%s秒'%self.UserLockTime) 55 u1=User('egon') #實例化u1傳入name,egon 56 u1.login()#u1調用login的方法 57 u1.loginOut()#u1調用loginOut方法 58 u2=User('alex') 59 u2.login()
轉載于:https://www.cnblogs.com/Baby-Lady/p/6751589.html
總結
以上是生活随笔為你收集整理的Property Exercise的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html运用以及工具
- 下一篇: ADO.net商机题目