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

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

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. 数据挖掘算法——Close算法

    说明奥:菜鸟的自我学习,可能有错. Close算法原理: 一个频繁闭合项目集的所有闭合子集一定是频繁的,一个非频繁闭合项目集的所有闭合超集一定是非频繁的. close算法是对Apriori算法的改进 ...

  2. python学习教程,史上最全面的python学习路线图

    Python 是Web 开发.游戏脚本.计算机视觉.物联网管理和机器人开发的主流语言之一,随着Python用户可以预期的增长,它还有机会在多个领域里登顶.Python学习路线分享给你. 阶段一是Pyt ...

  3. 使用mybatis-generator插件自动生成代码的步骤

    注意:首先你这个项目一定要是个maven项目 1.首先你需要在pom文件中导入相关的依赖,如下代码 <plugin> <groupId>org.mybatis.generato ...

  4. 绑定到外部验证服务LDAP、配置 autofs

    题1:您的系统需要按照以下要求绑定到这个服务上:验证服务器的基本 DN 是: dc=xxxx,dc=xxxx,dc=xxxx. 帐户信息和验证信息都是由 LDAP 提供的.连 接 需 要 使 用 证 ...

  5. ORA-00600: internal error code, arguments: [kcblin_3], [103], [253952], [8192], [32769], [312], [640], [], [], [], [], []解决方法

    昨晚,一SQL执行的时候报了ORA-00600: internal error code, arguments: [kcblin_3], [103], [253952], [8192], [32769 ...

  6. JavaScript自定义求和函数

    我爱撸码,撸码使我感到快乐!大家好,我是Counter,当看到这个标题到时候是不是感觉很简单,千万不要大意哦,你说0.1 + 0.2 = 0.3 ?有时候计算机并不是我们所说绝对精确,这个时候就要我们 ...

  7. 彻底删除windows残留启动引导

    在win7/Win8系统下安装其他系统或者一键重装系统后,安装的系统删除或者一键重装文件删除了,在windows启动管理器中还残留了启动引导选项,影响开机效率. 在系统配置中有些"引导&qu ...

  8. Spring中使用@Value读取porperties文件中的属性值方法总结及注意事项

    本文为博主原创,转载请注明出处. 此前曾总结过使用工具类读取properties文件中的属性值,有兴趣的可以看一下. 如何快速获取properties中的配置属性值:https://www.cnblo ...

  9. Lintcode175-Revert Binary Tree-Easy

    175. Invert Binary Tree Invert a binary tree. Example Example 1: Input: {1,3,#} Output: {1,#,3} Expl ...

  10. 简单粗暴的上传项目至 Github

    嗯,写了一个项目,觉得还OK,就想放在 Github 继续维护和方便使用,那么如何简单快速的将代码上传至 Github 上? 1.  你得有自己的 Github账号,如何创建账号这里就不说了.因为.. ...