前面我們寫過一個登入案例,還記得嗎。如果不記得可以去翻翻我前面的文章。
在學(xué)完r模式之后,我們來把前面寫過的登入程序做進(jìn)一步優(yōu)化。
這個程序首先是后臺存著用戶的賬號密碼,然后用戶登入的時候輸入賬號密碼,輸對了就打印成功,輸錯了就打印賬號密碼錯誤。
我現(xiàn)在把原來的程序?qū)懸槐椤?/p>
首先是定義兩個變量存著用戶的賬號密碼。
username = '123'
password = '123'
然后用input來接受用戶輸入的賬號。
username = '123'
password = '123'
input_username = input('請輸入你的賬號>>>').strip()
input_password = input('請輸入你的密碼>>>').strip()
接著販毒案用戶輸入的用戶名,等于我們后臺存的用戶名。和用戶輸入的密碼等于我們后臺存的密碼。
if input_username == username and input_password == password:
print('登入成功')
else:
print('賬號或密碼錯誤')
現(xiàn)在這個程序就寫完了,下面是完整的代碼。
username = '123'
password = '123'
input_username = input('請輸入你的賬號>>>').strip()
input_password = input('請輸入你的密碼>>>').strip()
if input_username == username and input_password == password:
print('登入成功')
else:
print('賬號或密碼錯誤')
這是我們之前的寫法,但是這個程序是有問題的,我們后臺存的用戶的賬號密碼是寫成了變量的形式,變量是存在內(nèi)存里的。
如果我們只有一個用戶,后面也不開放注冊功能還好,畢竟這個變量是寫在我們代碼里面的。
也相當(dāng)于是存在了硬盤里,斷電時候數(shù)據(jù)也不會丟失。但是后面有新用戶想要注冊呢?
新用戶注冊的賬號密碼你存在哪里?存在內(nèi)存里?后面一百個用戶都存在內(nèi)存里?
這是不合理的,只要計(jì)算機(jī)斷電,用戶賬號密碼全部丟失。
現(xiàn)在我們學(xué)了文件,如果想要把數(shù)據(jù)永久保存下來,就可以建一個文件。
在這個date文件夾里面,新建user.txt文件?,F(xiàn)在就可以在這個文件里面存賬號密碼了。
比如賬號是123,然后寫四個橫杠做為分隔符。后面就是這個賬號的密碼123。
應(yīng)為這個是文本文件,我們等下用t模式讀出來之后都是字符串,字符串我們就可以用sprlit拆分。
所以到時候就能拿到賬號和密碼了。
現(xiàn)在我把賬號密碼存到硬盤里面了,這樣的話即使后面計(jì)算機(jī)斷電,也不會導(dǎo)致我們村的賬號密碼丟失。
現(xiàn)在再回到前面的登入代碼。賬號密碼存到硬盤之后我們就不再用變量來存這個兩個賬號密碼了。
只需要在if判斷之前打開我們存賬號密碼的文件,把賬號密碼取出來就可以了。
input_username = input('請輸入你的賬號>>>').strip()
input_password = input('請輸入你的密碼>>>').strip()
with open(r'G:\PythonProject\學(xué)習(xí)\學(xué)習(xí)文件\date\user.txt', mode='rt', encoding='utf-8') as f:
res = f.read()
if input_username == username and input_password == password:
print('登入成功')
else:
print('賬號或密碼錯誤')
我先把其他的代碼注釋掉,先打印with open代碼,看能不能拿到剛剛txt文件里的賬號密碼。
打印結(jié)果就是拿到了。
現(xiàn)在這個res是個字符串,剛剛我們說過可以用split拆分。然后解壓賦值 。
with open(r'G:\PythonProject\學(xué)習(xí)\學(xué)習(xí)文件\date\user.txt', mode='rt', encoding='utf-8') as f:
res = f.read()
print(res)
username, password = res.strip().split('----')
print(res)
到了這一步,整個程序就寫完了。
input_username = input('請輸入你的賬號>>>').strip()
input_password = input('請輸入你的密碼>>>').strip()
with open(r'G:\PythonProject\學(xué)習(xí)\學(xué)習(xí)文件\date\user.txt', mode='rt', encoding='utf-8') as f:
res = f.read()
username, password = res.strip().split('----')
if input_username == username and input_password == password:
print('登入成功')
else:
print('賬號或密碼錯誤')
然后我們再來打印一下整個程序。
未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » Python 登入案例優(yōu)化