python學習一:使用者登入,python學慣用戶登入

來源:互聯網
上載者:User

python學習一:使用者登入,python學慣用戶登入

使用者登入需求:

1,使用者名稱,密碼要儲存在檔案中。

2,使用者可以嘗試登入三次,三次之後賬戶鎖定,使用者鎖定資訊儲存在檔案中,使用者輸入正確重設鎖定資訊。

 

程式碼

#!/usr/bin/env python
# -*- coding:utf-8 -*-
username = [] #-----------------------------------------------
for line in open('user.txt'):
line=line.replace('\n','').split() #從user.txt檔案中取出使用者名稱,儲存到列表username中
username.append(line[0]) #-----------------------------------------------

password = [] #-----------------------------------------------
for line in open('user.txt'):
line=line.replace('\n','').split() #從user.txt檔案中取出密碼,儲存到列表password中
password.append(line[1]) #-----------------------------------------------

counter = [] #-----------------------------------------------
for line in open('user.txt'):
line=line.replace('\n','').split() #從user.txt檔案中取出使用者賬戶狀態,儲存到列表counter中
counter.append(line[2]) #-----------------------------------------------

new_counter = [] #-----------------------------------------------
for n in counter:
new_counter.append(int(n)) #將counter中的元素轉換成數值型字元
counter = new_counter #-----------------------------------------------


flag = True
while flag:
if min(counter) < 3: #判斷所有使用者的狀態,只要有使用者可登入,就允許程式運行
usname = input("請輸入使用者名稱:")
if usname in username: #如果輸入的使用者名稱在使用者列表中
p = username.index(usname) #確定輸入的使用者名稱在列表中的位置
while True:
if counter[p] < 3: #判斷所選使用者是否鎖定
psword = input("請輸入密碼:")
if psword == password[p]:
print("恭喜!使用者名稱,密碼輸入正確!")
counter[p] = 0 #-----------------------------------------------
newuser = open("user.txt",'w')
for i in range(len(username)): #使用者密碼輸入正確,重設使用者狀態,並寫入使用者檔案
newuser.write('%s %s %d\n' % (username[i],password[i],counter[i]))
newuser.close() #-----------------------------------------------
flag = False #將最外層迴圈的值置為假,用來退出最終迴圈
break #退出當前迴圈
else:
print("使用者名稱密碼錯誤......")
counter[p] += 1 #計數器自加1
newuser = open("user.txt",'w') #-----------------------------------------------
for i in range(len(username)): #將使用者錯誤次數寫入使用者檔案
newuser.write('%s %s %d\n' % (username[i],password[i],counter[i]))
newuser.close() #-----------------------------------------------
break

else:
print("此使用者被鎖定......") #判斷使用者狀態為鎖定後提示使用者已定
break
else:
print("無此使用者,請重新輸入") #使用者名稱輸入錯誤,提示使用者重新輸入
else:
print("所有使用者均已被鎖定,無法開啟程式......") #判斷所有使用者狀態均鎖定,程式退出
break

使用者檔案:
songyang sy123 0 #第一列為使用者名稱,第二列為密碼,第三列為使用者狀態
admin ad123 0

程式重要位置解釋:
1,
username = []                                  #建立一個名稱為username的空列表
for line in open('user.txt'): #遍曆user.txt檔案的每一行
line=line.replace('\n','').split() #將user.txt檔案中的每一行的所有值分別存入line的列表,replace()函數
#是將每行結尾的分行符號替換成空格,split()函數是以空格為標誌,將檔案的每一行分割成列表
username.append(line[0]) #將line列表中的第一個元素儲存到username列表中,形成使用者名稱列表

2,
newuser = open("user.txt",'w')                 #以寫方式開啟使用者檔案,此時檔案中的內容會被讀入記憶體,程式會刪除檔案內容
for i in range(len(username)): #程式檢測username列表有幾個元素,迴圈幾次
  newuser.write('%s %s %d\n' % (username[i],password[i],counter[i])) #將所有列表username,password,counter的內容寫入到檔案中
newuser.close() #關閉檔案

程式運行錯誤釋義

此為相應選擇,迴圈等語句後忘記加“:”導致


此為相應報錯行沒有縮排導致。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.