zoukankan      html  css  js  c++  java
  • pthon入门之strip()和split()函数简单区分

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

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

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

    username=['seven','alex']
    password=['123','123']
    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=='123123':
                    print('-----登录成功-----')
                    break
                if _username=='alex'and _password=='123123':
                    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+'
    ')
                        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()

    人生苦短,及时行乐!











    
    
  • 相关阅读:
    对象的方法
    uni-app运行
    flex取值
    阿里矢量库使用
    移动端vue项目模板
    微信分享--转载
    页面流动条
    uni-app打包
    Hibernate~DAO
    EL表达式
  • 原文地址:https://www.cnblogs.com/doudou2018/p/8821702.html
Copyright © 2011-2022 走看看