字符串及for循环详解

第三天笔记

字符串详解

  • 整型(数字)是不可变数据类型

    • 可以在原地修改的叫做可变数据类型,不能再原地修改的叫做不可数据类型

    • 整型 -- int

      用于计算和比较

      -2**31 ~ 2**31 -1
      
      -2**63 ~ 2**63 -1
      

      python3 中只有int

      python2 中有int(整型) 和 long(长整型) 321312321L

  • 进制转换

    • 10进制 - 2进制 : 整除2,获取余数,余数从下向上进行整合

    • 10进制就是常用的123456789

    • 2进制就是010101

    •  bin十进制转换二进制(常用)

    •  ob -- 二进制

    •  十进制转二进制举例

      print(bin(3))   代码意思是将3转为二进制11
      
    • 二进制转十进制

    •  手动举例

      题目:将1001转化为十进制
      思路:1是从右向左拿到的第一个数字,
           2 ** 0 此时的 0用的是计算机数数的第一位
      手动计算:1*2**0+0*2**1+0*2**2+1*2**3   = 9
      
    • int("字符串",2)  将某个进制转换十进制(括号里的2是二进制的意思)

    •  程序计算举例

      题目:将1001转化为二进制
      代码:print(int("1001",2))
      也可以这样写代码: print(int(ob1011))
           
      
  • 字符串方法详解(只讲常用,万能的点,这里讲解8个)

    • upper  全部大写

    • lower  全部小写

      •  全部大写和全部小写举例

        代码1:
        name = "alex"
        name1 = name.upper()  # 全部大写
        print(name)
        print(name1)
        代码2:
        name = "ALEX"
        name1 = name.lower()  # 全部小写
        print(name)
        print(name1)
        
      •  应用场景(不分大小写)举例

        yzm = "0G8k"
        my_yzm = input("请输入验证码:[0G8k]")
        if yzm.lower() == my_yzm.lower():
             print("ok")
        else:
             print("滚")
        
    • startswith 以什么开头,支持切片

    • endswith 以什么结尾,支持切片

      • 举例

        # name = "alex"
        # 以什么开头
        # print(name.startswith("l",1,3))  # 判断是否以"a"开头,返回的是布尔值,支持切片
        # 以什么结尾
        # print(name.endswith("x"))  # 判断是否以"x"结尾,返回的是布尔值,支持切片
        
    • count 统计

      • 举例

        代码:
        name = "meet_alex"
        print(name.count("e"))
        输出的结果是:3
        
    • strip去除头尾两端的空格,换行符,制表符,还可指定去除内容

      • 举例

        name = "alex     a"
        print(name.strip())     # 去除头尾两端的空格及换行符,制表符
        print(name.strip("a"))    # 可以指定去除头尾两端的内容
        
        
      •  应用场景

        账号:alex 密码:alex123
        alex   alex123
        代码:
        user = input("账号:").strip()
        pwd = input("密码:").strip()
        if user == "alex" and pwd == "alex123":
            print("ok")
        else:
            print("gun")
        
        
    • split 分割, 默认以空格,换行符,制表符进行分割,可以指定分割内容, 返回是列表

      • 举例

        a = "alex:alex123"
        lst = a.split(":")  # 默认按照空格及换行符,制表符进行分割
        print(lst[0])
        print(lst[1])
        # ['alex', 'alex123'] 列表
        
        
    • replace 替换 参数1(旧值),参数2(新值),参数3(次数) 默认全换

      • 举例

        代码1:
        name = "alexcnb"
        name = name.replace("n","s") # 替换(参数1--旧值,参数2--新值,参数3--替换次数)
        print(name)
        输出的结果是:alexcsb
        代码2:
        name = "alex_meet"  # 从左向右
        name = name.replace("e","s",2)  # 默认是全换
        print(name)
        输出的结果是:alsx_mset
        
        
  • is 系列(判断系列)

    • str.isalnum   判断数字,中文,字母

    • str.isalpha  判断中文,字母

    • str.isdigit   判断阿拉伯数字

    • str.isdecimal  判断十进制

      • 举例

        name = "1234"
        print(name.isalnum())   # 判断是不是由字母,中文,数字组成,返回的是布尔值
        print(name.isalpha())   # 判断是不是由字母,中文组成,返回的是布尔值
        print(name.isdigit())   # 判断是不是阿拉伯数字 ⑤ 这是一个bug
        print(name.isdecimal()) # 判断是不是十进制,返回的是布尔值
        
        
  • \n 换行 ; \t 相当于Tab键

  • 举例

    print("你\n好")  #换行就是键盘上的回车键
    print("你\t好")  #制表符就是键盘上的Tab
    
    
  • id 查看空间内存地址

    • 举例

      a = 10        #内存地址是:1428849040
      print(id(a))
      a = a + 1     #这个a的内存地址是:1428849072
      print(id(a))
      
      

索引(下标)

  •  专业的举例

     name = "meet" # 计算机从0开始数
             #0123 (索引值|下标值) 从左向右
           #-4-3-2-1          # 从右向左,意思就是-1对应的是t、-2对应的是e、-3对应的是e、-4对应的是m
    
     print(name[2]) # 通过索引准确定位内容,输出的是:e
     print(name[-4]) # 通过索引准确定位内容,输出的是:m
    
    

切片

  • 举例

    name = "meet_alex_wusir"
            0123456789----14
    print(name[5:9])  # [起始位置:终止位置]  顾头不顾腚 ,输出的结果是:alex
    print(name[-5:])  # [起始位置:终止位置(默认到结尾)]  顾头不顾腚 ,输出的结果是:wusir
    print(name[:])  # [起始位置(默认从开头):终止位置(默认到结尾)]  顾头不顾腚,输出的结果是:meet_alex_wusir
    
    
  • 步长,可以控制查找方向

  • 举例

  • name = "meet_alex_wusir"
           #01234546789
              #-6-5-4-3-2-1
    print(name[2:7:1])  #[起始位置:终止位置:步长(默认为1)]
    输出的结果是:et_al
    print(name[2:7:2])  #[起始位置:终止位置:步长(改为2)]
    输出的结果是:e_l
    print(name[4:11:3])
    输出的结果是:_ew
    print(name[-1:3:-1])  # 步长可以控制查找方向
    输出的结果是:risuw_xela_
    
    
  • 索引时,如果超出最大索引值会报错,索引是有序的

  • 切片时,如果超出最大索引值不会报错

  • 索引和切片只用给有序数据类型使用

  • 举例

     字符串 -- str
     有序: 索引
     不可变 : 内存地址
    
    name = "meet"
    name1 = "meet"
    print(id(name))
    print(id(name1))  # 小数据池 -- 驻留机制
    
    

for 循环,关键字

  • for 有限循环

  • while 死循环

  • for循环结构:

    for i in xxx:   #for关键字、i变量名、in关键字、xxx可迭代对象
         循环体
    
    
    • 举例

      name = "alex"
      for i in name: # 赋值for循环内部帮咱们做的
          print(i) # 打印了变量
      输出的结果:a l e x
      
      
  • len() --公共方法(获取长度)

    • 举例

      count = 0
      name = "alex"
      while count < len(name):
         print(name[count])
         count += 1
      输出的结果是:a l e x 
      与上面的例子一样,只是while需要用5行代码解决
      
      
  • 面试题:

    for i in "abcde":
        pass  # 占这一行代码
    print(i)
    输出的结果是:e
    
    
  • 可迭代对象

    • str -- 字符串
    • list -- 列表
    • tuple -- 元祖
    • set -- 集合
    • dict -- 字典
    • range -- 范围
posted @ 2019-09-09 20:19  小皮浩  阅读(782)  评论(1编辑  收藏  举报