小白,分享记录学习新感悟

路飞的第一次作业写一个登录的程序,作业的升级需求中有个锁文件的需求,大致上如果用户数错了密码三次将用户写到黑名单上,下次登录锁定:

ok基本的要求写完,我们上代码

username=['seven','alex']
password=['','']
print('------welcome--------')
count=0 #读入文件
user_lock=[]
f=open('aaa_lock','r+')
f.seek(0) #光标移动到开头
for line in f.readlines():
# user_lock.append(line.strip()) #开始写了 line.split x改为 line.strip
user_lock=line.split()
print(user_lock) _username = input('username:') while count<3:
_password = input('password:')
print(user_lock)
print(_username)
if _username in user_lock:
print('用户被锁定')
break else:
if _username in username:
if _username=='seven'and _password=='':
print('-----登录成功-----')
break
if _username=='alex'and _password=='':
print('-----登录成功!-----')
break
else:
count += 1
count_remain=3-count
print('密码错误请重新输入,剩余机会',str(count_remain),'次')
if count==3:
print('账号已被锁定')
f=open('aaa_lock','a')
f.write(_username+'\n')
f.close()
else:
print('用户不存在')

代码还不够完善,见谅

第一次调试的时候发现了问题,无论我怎么锁定用户,其用户判断代码总是出错误,

#读入文件
user_lock=[]
f=open('aaa_lock','r+')
f.seek(0) #光标移动到开头
for line in f.readlines():
user_lock.append(line.strip()) #开始写了 line.split x改为 line.strip print(user_lock) #判断是否锁定的程序
_password = input('password:') if _username in user_lock:
print('用户被锁定')
break

然后我在判断用户是否被锁定下面打印了两个变量:

 _password = input('password:')
print(user_lock)
print(_username)

结果如下:

[['alex']]

'alex'

这显然是变量user_lock多了一个内列表,怎么回事呢?

我们看上面的文件操作

user_lock=[]
f=open('aaa_lock','r+')
f.seek(0)
for line in f.readlines():
user_lock.append(line.split()) #开始写了 line.split x改为 line.strip print(user_lock)

问题出现在

 user_lock.append(line.split())  
下面举出一个实例说明 split()和strip()对于字符的处理不同
print('用户不存在')
print('用户不存在'.split())
print('用户不存在'.strip())
用户不存在
['用户不存在']
用户不存在

我们看到split()是划分了到了一个小列表中去了,strip()是去掉了字符的左右空格,其还是一个字符串哦

之所以我会出现大列表套小列表的情况是因为我用了append(),它也是将一个个元素加入到一个新的当前列表中来,

下面我们改善一下。

#读入文件
user_lock=[]
f=open('aaa_lock','r+')
f.seek(0)
for line in f.readlines():
user_lock=line.split()
print(user_lock)

这次我们还用split(),但是把append去掉就可以啦!

也可以把split()替换成strip()--->user_lock=append(line.strip()

人生苦短,及时行乐!


												

pthon入门之strip()和split()函数简单区分的更多相关文章

  1. python的strip和split函数

    这两个函数都是string的类函数 1.strip是去掉字符串头尾的特定字符,分三个 aa=' bb=aa.rstrip(') cc=aa.lstrip(') dd=aa.strip(') print ...

  2. splice()、slice()、split()函数的区分

    1.slice(数组) 用法:array.slice(start,end) 解释:该方法是对数组进行部分截取,并返回一个数组副本:参数start是截取的开始数组索引,end参数等于你要取的最后一个字符 ...

  3. strip()函数和 split()函数

    一:python strip()函数介绍 函数原型:strip可以删除字符串的某些字符 声明:s为字符串,rm为要删除的字符序列 s.strip(rm)        删除s字符串中开头.结尾处,位于 ...

  4. python strip() 函数和 split() 函数的详解及实例

    strip是删除的意思:split则是分割的意思.strip可以删除字符串的某些字符,split则是根据规定的字符将字符串进行分割. 1.Python strip()函数 介绍 函数原型 声明:s为字 ...

  5. Python进阶---python strip() split()函数实战(转)

    先看一个例子: >>> ipaddr = 10.122.19.10 File "", line 1 ipaddr = 10.122.19.10 ^ SyntaxE ...

  6. 数据结构和算法(Golang实现)(2)简单入门Golang-包、变量和函数

    包.变量和函数 一.举个例子 现在我们来建立一个完整的程序main.go: // Golang程序入口的包名必须为 main package main // import "golang&q ...

  7. 【SQL】sql版Split函数。用于拆分字符串为单列表格

    功能与.net版string.Split函数类似,只不过.net返回的是数组,这个返回的是一个单列表格,每个拆分出来的子串占一行.可选是否移除空格子串和重复项.市面上类似的函数不算少,但大多都是在循环 ...

  8. js使用split函数按照多个字符对字符串进行分割的方法

    这篇文章主要介绍了js使用split函数按照多个字符对字符串进行分割的方法,实例分析了split函数的使用技巧,非常具有实用价值,需要的朋友可以参考下   本文实例讲述了js使用split函数按照多个 ...

  9. Python中split()函数的用法及实际使用示例

    Python中split()函数,通常用于将字符串切片并转换为列表. 一.函数说明: split():语法:str.split(str="",num=string.count(st ...

随机推荐

  1. Nginx优化详解-------超详细

      一.一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cp ...

  2. java开发中中文编码问题

    //ajax以get方式提交,字符串中包含中文 //后台struts中对该string的set方法中 this.jsonString = new String(jsoString.getBytes(& ...

  3. K8S学习笔记之ETCD启动失败注意事项

    最近搭建K8S集群遇到ETCD的报错,报错信息如下,一定要关闭防火墙.iptables和SELINUX,三个都要关闭!! Mar 26 20:39:24 k8s-m1 etcd[6437]: heal ...

  4. Vue基础进阶 之 列表过渡

    在前面的博客我们一直在操作单个元素的过渡,如果是对多个元素过渡,例如列表,这时就要用到<transition-group>这个组件了: 如何使用:将要操作的列表元素放在<transi ...

  5. 11个简单的Java性能调优技巧,傻瓜都能学会!

    大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识.好吧,不能说这是完全错误的.优化应用程序以获得最佳性能不是一件容易的事情.但是,这并不意味着如果你不具备这些知识,就不能做任何事情. ...

  6. tomcat 修改内存配置

    1.linux 下调整tomcat的内存设置修改bin目录下catalina.sh文件在cygwin=false之上添加以下语句JAVA_OPTS="-Xms1024m -Xmx4096m ...

  7. flask --- 02. 路由, 初始化配置,蓝图

    一.Flask 路由 1.添加路由的方式 ① ② 实例: ① @app.route("/my_de") def detail() ② def detail() app.add_ur ...

  8. POJ 1743 Musical Theme(后缀数组 + 二分)题解

    题意:一行数字,定义如下情况为好串: 1.连续一串数字,长度大于等于5 2.这行数字中多次出现这串数字的相似串,相似串为该串所有数字同加同减一个数字,如 1 2 3 和 5 6 7 3.至少有一个相似 ...

  9. linux centos7添加ip黑名单禁止某个ip访问

    centos7用的是firewall 添加单个黑名单只需要把ip添加到 /etc/hosts.deny 格式  sshd:$IP:deny vim /etc/hosts.deny   添加你要禁止的i ...

  10. 一键清空Form表单数据

    今天在工作项目调试bug当中,遇到这样的需求:页面上的数据太多,一个一个清空太繁琐,所以就采用全部清空的写法: $(':input','#myform').not(':button, :submit, ...