python-犯傻合集
题目:
基于文件实现用户登录程序,提示用户输入用户名和密码,检查用户名是否存在,以及用户名密码是否正确
保存密码的文件叫user.txt,内容:

| 作分隔符
阶段一:
自己第一次的答案:
list_1 = []
with open("user.txt",mode="r+",encoding="utf-8") as count:
user = input("用户名:")
passwd = input("密码:")
for i in count:
val_1 = i.strip().split("|")
list_1.append(val_1[0])
if user in list_1:
for line in count:
val = line.strip().split("|")
if user == val[0] :
if passwd == val[1]:
print("登陆成功")
else:
print("密码错误")
else:
print("无此用户名")
输出结果:
(1)可以顺利运行检查用户名不存在的程序

(2)但是当输入正确的用户名和答案的时候,出现了问题

心里os: 明明我输入的用户名和密码是正确的为什么没有print正确的结果,而是没有任何值呢,我****,到底哪里出现了问题
我检查了半天,还是没有检查出来,就开始心烦气躁,开始怀疑自己是不是不适合编程。
等到冷静下来的时候,原来才发现是指针出现了问题,第5行的for循环完成以后,指针已经是在最后的位置了,所以当第9行继续遍历时,就没有内容了。
oh,我天,我想杀死自己,这明明就是自己不细心导致的呀,最后只能说自己是第一次写文件的操作,可以理解来掩盖过去。
阶段二:
之后我进行了改正,并对11-15行进行了自认为的优化,下面是优化后的代码:
list_1 = []
with open("user.txt",mode="r+",encoding="utf-8") as count:
user = input("用户名:")
passwd = input("密码:")
for i in count:
val_1 = i.strip().split("|")
list_1.append(val_1[0])
if user in list_1:
count.seek(0)
for line in count:
val = line.strip().split("|")
if user == val[0] and passwd == val[1]:print("登陆成功")
else:
print("密码错误")
break
else:
print("无此用户名")
我在第9行将指针调整了,然后对12--15行的判断用户名密码是否正确做了优化,下面看看输出结果
输出结果:
(1)可以顺利运行检查用户名不存在的程序

(2)但当我输入正确的用户名密码时,打脸时刻来了

心里os:我明明输入正确的用户密码为啥又出错了,哎呀我烦死了,啥嘛,为了一个简单的题浪费我一个多小时,哎,气死我了
等待我心情平复之后,仔细审阅发现,原来是自己第13行的else级别不对,因为在题目中可以看到user.txt第一行数据是
用户名|密码
所以第10行的for循环之后,第一个出现的是 用户名|密码 这个数据,我输入的又是zrh_ 1 后面第12行的语句中有一个 and 语句
and具有惰性求值,我输入user不等于 用户名,就会执行第13行的else了,于是乎便出现了问题
阶段三:
改正之后做了可行性的代码优化
list_1 = []
with open("user.txt",mode="r+",encoding="utf-8") as count:
user = input("用户名:")
passwd = input("密码:")
for i in count:
val_1 = i.strip().split("|")
list_1.append(val_1[0])
if user in list_1:
count.seek(0)
for line in count:
val = line.strip().split("|")
if user == val[0]:
if passwd == val[1]:print("登陆成功")
else:print("密码错误")
else:
print("无此用户名")
ok,这个题到此结束
感悟:以后遇到问题要心平气和的排查问题,千万不要怀疑自己不适合干编程
牢记文件操作时的指针位置对程序的影响,牢记for循环后的else的逻辑
python-犯傻合集的更多相关文章
- 前端,Java,产品经理,微信小程序,Python等资源合集大放送
为了感恩大家长久以来的关注和支持,小编准备了一些福利,整理了包含前端,Java,产品经理,微信小程序,Python,网站源码,Android应用视频教程,微信公众平台开发教程及材料等资源合集大放送. ...
- 【转载】GitHub 标星 1.2w+,超全 Python 常用代码合集,值得收藏!
本文转自逆袭的二胖,作者二胖 今天给大家介绍一个由一个国外小哥用好几年时间维护的 Python 代码合集.简单来说就是,这个程序员小哥在几年前开始保存自己写过的 Python 代码,同时把一些自己比较 ...
- Sublime Python 插件配置合集
Python PEP8 Autoformat 插件 这是用来按PEP8自动格式化代码的.可以在包管理器中安装.快捷键 CTRL+SHIFT+R 自动格式化python代码 { "auto_c ...
- 【Python撩妹合集】微信聊天机器人,推送天气早报、睡前故事、精美图片分享
福利时间,福利时间,福利时间 如果你还在为不知道怎么撩妹而烦恼,不知道怎么勾搭小仙女而困惑,又或者不知道怎么讨女朋友欢心而长吁短叹. 那么不要犹豫徘徊,往下看.接下来我会分享怎么使用 Python 实 ...
- 专为渗透测试人员设计的 Python 工具大合集
如果你对漏洞挖掘.逆向工程分析或渗透测试感兴趣的话,我第一个要推荐给你的就是Python编程语言.Python不仅语法简单上手容易,而且它还有大量功能强大的库和程序可供我们使用.在这篇文章中,我们会给 ...
- 前端 Java Python等资源合集大放送
如果需要学习视频,欢迎关注[JAVA乐园]微信公众号,回复[领取资源]菜单一键领取以下所有200G干货资源,获取更多有用技术干货.文档资料.所有文档会持续更新,欢迎关注一起成长! 1.vue全套 Vu ...
- python报错合集
哈喽,大家好呀 我又来啦,今天让我们来看看python中有哪些常见的异常报错吧 说到python中的报错,我们总是脑壳疼现在我们要学会去认识报错的类型 这样子,在我们出现报错的时候就可以知道报错的原因 ...
- python习题作业合集(持续更新……)
作业: 1.简述位,字节关系 2.请写出“天才”分别用utf-8和gbk编码所占位数 3.如果有一个变量num = 14,请使用int的方法,得到改变量最少可以用多少个二进制位表示 4.写代码,有如下 ...
- python犯傻之题目解答思路比较与反思
1.题目: 企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%: 20万 ...
随机推荐
- pip的使用
目录 一.配置pip环境变量 二.Cmd终端使用pip 三.Pycharm使用pip 四.Jupyter使用pip 如果把python假想成一部手机,那么pip就是这部手机上的应用管家/APP,他可以 ...
- 作为一名Android开发者,你有过迷茫吗?
前言 经常听新进的小白问道,Android是不是饱和了?想写一篇关于Android开发者忧虑的文章很久了,今天才提起勇气写.最近不管是在微信.QQ群,还是在各大博客网站,都随处听得到Android开发 ...
- GO 语言学习笔记--数组切片篇
1.对于make 数组切片,长度和容量需要理解清楚: 容量表示底层数组的大小,长度是你可以使用的大小: 容量的用处在哪?在与当你用 appen d扩展长度时,如果新的长度小于容量,不会更换底层数组,否 ...
- 获取手机屏幕DisplayMetrics属性方法
转自:http://blog.csdn.net/zhangqijie001/article/details/5894872 其他参考:http://blog.sina.com.cn/s/blog_7d ...
- Corosync fence盘替换
前面创建盘的步骤省略 1.在节点A执行: sbd -d /dev/mapper/fence_lun001 -d /dev/mapper/fence_lun002 -d /dev/mapper/fenc ...
- .Net基础篇_学习笔记_第六天_异常捕获复习及断点调试
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Winform中实现ZedGraph新增自定义Y轴上下限、颜色、标题功能
场景 Winform中实现ZedGraph的多条Y轴(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1001322 ...
- All Of ACM
数据结构和算法专栏,我会什么写什么 = = 不定时更新 一.数据结构 树状数组详解 线段树详解 二.算法 KMP算法 三.板子 我的代码模板 大整数模板 四.题解报告 几道STL题目(FJUT - ...
- Spring Boot 入门之单元测试篇(五)
博客地址:http://www.moonxy.com 一.前言 JUnit 是一个由 Java 语言编写的开源的回归测试(回归测试是指重复以前全部或部分的相同测试)框架,由Erich Gamma 和 ...
- MYSQL之查询篇
2. 数据库操作 数据库在创建以后最常见的操作便是查询 2.1 查询 为了便于学习和理解,我们预先准备了两个表分别是stduents表和classes表两个表的内容和结构如下所示 students表的 ...