欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python初學(xué)之用戶登錄的實(shí)現(xiàn)過程(實(shí)例講解)

 更新時(shí)間:2017年12月23日 20:48:44   作者:JayeHe  
下面小編就為大家分享一篇python初學(xué)之用戶登錄的實(shí)現(xiàn)過程(實(shí)例講解),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

要求編寫登錄接口:

1. 輸入用戶名和密碼

2.認(rèn)證成功后顯示歡迎信息

3.用戶名輸錯,提示用戶不存在,重新輸入(5次錯誤,提示嘗試次數(shù)過多,退出程序)

4.用戶名正確,密碼錯誤,提示密碼錯誤,重新輸入.(密碼錯誤3次,鎖定用戶名并提示,退出程序)

readme

應(yīng)用知識點(diǎn):

一、文件的操作

基本操作

f = open('lyrics','r',) #打開文件
first_line = f.readline()
print('first line:',first_line) #讀一行
data = f.read()# 讀取剩下的所有內(nèi)容,文件大時(shí)不要用
print(data) #打印文件
f.close() #關(guān)閉文件

打開文件的模式有:

r,只讀模式(默認(rèn))。

w,只寫模式?!静豢勺x;不存在則創(chuàng)建;存在則刪除內(nèi)容;】

a,追加模式?!究勺x;不存在則創(chuàng)建;存在則只追加內(nèi)容;】

with語句,同時(shí)打開多個(gè)文件,還可以避免打開文件后忘記關(guān)閉,語法:

with open('file1', 'r', encoding='utf-8') as f , \
open('file2', 'w', encoding='utf-8') as f_2 :
...

本例中有2個(gè)文件,一個(gè)存用戶名和密碼,另一個(gè)存黑名單.在讀取文件后怎樣轉(zhuǎn)變成python對象,然后對對象進(jìn)行操作,是我遇到的第一個(gè)難點(diǎn)!

然后查了下資料,發(fā)現(xiàn)字符串split方法,可以把字符串,從逗號分隔符的地方斷開,得到一個(gè)子字符串列表.這樣一來,就可以對黑名單進(jìn)行查找等操作了.

...
user_lis_bak = f.readline().split(',')
...

Python 字典 setdefault() 函數(shù)和get()方法類似, 如果鍵不已經(jīng)存在于字典中,將會添加鍵并將值設(shè)為默認(rèn)值。

dict.setdefault(key, default=None) 

二、列表和字典

列表是我們最以后最常用的數(shù)據(jù)類型之一,通過列表可以對數(shù)據(jù)實(shí)現(xiàn)最方便的存儲、修改等操作

names = ['xiaoli',"xiaoming",'yuanlu'] 

通過下標(biāo)訪問列表中的元素,下標(biāo)從0開始計(jì)數(shù)

>>> names[0]
'xiaoli'
>>> names[1]
'xiaoming'
>>> names[-1]
'yuanlu'
>>> names[-2] #還可以倒著取
'xiaoming'

字典是一種key - value 的數(shù)據(jù)類型,使用就像我們上學(xué)用的字典,通過筆劃、字母來查對應(yīng)頁的詳細(xì)內(nèi)容。

 info = {
   'xiaoli': "123456",
   'xiaoming': "111111",
   'yuanlu': "888888",
 }

這里key是用戶名,value是密碼,一一對應(yīng),key是唯一的.

三、for loop 和 if...else

for i in range(10): print(i) 

還是上面的程序,但是遇到大于5的循環(huán)次數(shù)就不走了,直接退出

 for i in range(10):
   if i>5:
     continue #不往下走了,直接進(jìn)入下一次loop
   print(i)

用戶名和密碼文件格式:

xiaoli 123456

xiaoming 888888

wangpeng 111111

luyuan 112222

qiling 556666

haiming 223333

黑名單文件格式:

xiaoli,xiaoming,wangpeng,

代碼

with open('user_lis', 'r', encoding='utf-8') as f_user_lis,\
     open('user_lis_bak', 'r', encoding='utf-8') as f_user_lis_bak: # 打開文件'user_lis'和'user_lis_bak'
  user_lis_bak = f_user_lis_bak.read().split(',')   # 讀取f_user_lis_bak并轉(zhuǎn)成列表賦值給 user_lis_bak
  user_lis_dict = {}                 # 定義一個(gè)空字典
  for i in f_user_lis:
    user_lis_dict.setdefault(i.split()[0], i.split()[1])  # 讀取f_user_lis并把值放入字典user_lis_dict中
count = 0
for i in range(5):                 # 設(shè)置錯誤次數(shù)上限為5次
  name = input('請輸入用戶名>>')
  password = input('請輸入密碼>>')
  if name in user_lis_bak:            # 第一步先查找黑名單
    print('用戶名已被鎖定,請聯(lián)系管理員!!!')
    continue                  # 在黑名單中直接進(jìn)入下一次循環(huán),重新輸入用戶名和密碼
  elif name in user_lis_dict:           # 第二步查找用戶白名單
    if password == user_lis_dict.get(name):   # 密碼正確,驗(yàn)證通過 退出
      print('親愛的會員', name, '歡迎回來')
      break
    else:                   # 密碼錯誤,提示錯誤
      if count == 2:
        name_bak_write = open('user_lis_bak', 'a', encoding='utf-8')
        name_bak_write.write(name+',')
        name_bak_write.close()       # 3次密碼錯誤,就把用戶名寫進(jìn)黑名單
        print('用戶名已鎖定,請聯(lián)系管理員!!!')
        break
      print('密碼錯誤!!!')
      count += 1               # 密碼錯一次,count就+1
  else:
    if i == 4:                 # 用戶名錯5次,直接退出
      print('嘗試次數(shù)過多,再見!!!')
      continue
    print('用戶名不存在!!!')          # 用戶名錯誤,提示錯誤

以上這篇python初學(xué)之用戶登錄的實(shí)現(xiàn)過程(實(shí)例講解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 利用Python批量生成任意尺寸的圖片

    利用Python批量生成任意尺寸的圖片

    不知道大家有沒有遇到過,因檢驗(yàn)需要1000張,分別從1*1到1000*1000像素的圖片。搜索一番過后發(fā)現(xiàn)還是Python實(shí)現(xiàn)比較方便,遂決定用Python實(shí)現(xiàn)這一功能,下面分享給大家,有需要的可以參考。
    2016-08-08
  • python3之微信文章爬蟲實(shí)例講解

    python3之微信文章爬蟲實(shí)例講解

    下面小編就為大家?guī)硪黄猵ython3之微信文章爬蟲實(shí)例講解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • 使用Python編寫自己的微型Redis

    使用Python編寫自己的微型Redis

    這篇文章主要為大家詳細(xì)介紹了使用Python編寫自己的微型Redis的相關(guān)知識,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2024-03-03
  • Python??Pandas教程之使用?pandas.read_csv()?讀取?csv

    Python??Pandas教程之使用?pandas.read_csv()?讀取?csv

    這篇文章主要介紹了Python Pandas教程之使用pandas.read_csv()讀取csv,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • Python讀取配置文件(config.ini)以及寫入配置文件

    Python讀取配置文件(config.ini)以及寫入配置文件

    這篇文章主要介紹了Python讀取配置文件(config.ini)以及寫入配置文件,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 簡單了解Java Netty Reactor三種線程模型

    簡單了解Java Netty Reactor三種線程模型

    這篇文章主要介紹了簡單了解Java Netty Reactor三種線程模型,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 使用Pygame制作中秋嫦娥奔月小游戲

    使用Pygame制作中秋嫦娥奔月小游戲

    中秋節(jié)是中國傳統(tǒng)的重要節(jié)日之一,起源于嫦娥奔月的神話故事,在中秋節(jié)這個(gè)特殊的日子里,人們不僅會欣賞明亮的月亮和嫦娥奔月的美麗故事,還會舉行一些慶祝活動,接下來,我們使用Pygame制作“嫦娥奔月”小游戲,感興趣的朋友可以自己動手試一試
    2023-09-09
  • Python實(shí)現(xiàn)測試磁盤性能的方法

    Python實(shí)現(xiàn)測試磁盤性能的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)測試磁盤性能的方法,涉及Python對硬件的相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • Python 制作查詢商品歷史價(jià)格的小工具

    Python 制作查詢商品歷史價(jià)格的小工具

    這篇文章主要介紹了Python 如何制作查詢商品歷史價(jià)格的小工具,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-10-10
  • django的ORM操作 刪除和編輯實(shí)現(xiàn)詳解

    django的ORM操作 刪除和編輯實(shí)現(xiàn)詳解

    這篇文章主要介紹了django的ORM操作 刪除和編輯實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07

最新評論