前面我们将多账号放进了use.txt文件里面。
这章讲怎么讲多账号正常登入。
接着上章的代码。
with open(r'G:\PythonProject\学习\学习文件\date\user.txt', mode='rt', encoding='utf-8') as f:
for line in f:
l = line.strip().split('----')
接下去我还是用接发复制来拿到username和password。
with open(r'G:\PythonProject\学习\学习文件\date\user.txt', mode='rt', encoding='utf-8') as f:
for line in f:
username, password = line.strip().split('----')
然后我们再和前面的单个账号密码验证来结合一下。
接受用户的账号密码坑定还是要的。
input_username = input('请输入你的账号>>>').strip()
input_password = input('请输入你的密码>>>').strip()
with open(r'G:\PythonProject\学习\学习文件\date\user.txt', mode='rt', encoding='utf-8') as f:
for line in f:
username, password = line.strip().split('----')
然后这个for循环里面,每循环一次是不是就拿到了一个用户的账号密码,所以每循环一次拿到一个账号密码之后,我们就要验证一次。
if input_username == username and input_password == password:
print('登入成功')
如果验证成功后,我们还要做一步操作,就是break。不然的话假设循环到第二行的账号密码的时候,就验证通过了,然后这个for循环还在继续往后判断。
if input_username == username and input_password == password:
print('登入成功')
break
然后什么时候告诉用户账号密码输入错了呢?肯定不是接着这个if写else了。是等这个for循环结束之后仍然没有匹配上账号密码,就告诉用户账号密码错误了。
我们在for循环外面用else来写。
这样else子代码块会在for循环正常结束的时候执行,如果for循环中途被break打断,就不会执行else下面的子代码块。
放到这段代码上看,意思就是如果一次都没有遇到break,就说明用户输入的账号密码一次都没有匹配上。
这样代码就正常结束,执行外层的else子代码块。
input_username = input('请输入你的账号>>>').strip('\n')
input_password = input('请输入你的密码>>>').strip('\n')
with open(r'G:\PythonProject\学习\学习文件\date\user.txt', mode='rt', encoding='utf-8') as f:
for line in f:
username, password = line.strip().split('----')
if input_username == username and input_password == password:
print('登入成功')
break
else:
print('账号或密码错误')
注意,这里的else是和for循环连用的,不要写在if判断的那层级去了。写在if判断同一层,那整个逻辑意思就不一样了。
你讲else写在if同级当你判断第一行账号密码匹配不上,就直接打印‘账号或密码错误’,不会匹配剩下的账号密码。
现在是我们自己写程序来操作文件的,很多同学应该都听说过数据库,其实数据库就是对文件进行增删改查的一个软件,,通过数据库来存取数据效率会更高。
等学完数据库之后,我们就不会自己来写程序操作文件存取数据了。
而是在我们写的程序和文件中间,加一个数据库管理软件,我们通过给数据库管理软件发指令,这个软件就会帮我们去操作文件。
现在我们没学数据库,只能自己动手写程序造作文件了。
接着上面的代码打印看看,分别输入正确与错误的账号密码。
未经允许不得转载:445IT之家 » Python 多账号登入案例