zoukankan      html  css  js  c++  java
  • 字符串及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()) # 判断是不是十进制,返回的是布尔值
          
          
    • 换行 ; 相当于Tab键

    • 举例

      print("你
      好")  #换行就是键盘上的回车键
      print("你	好")  #制表符就是键盘上的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 -- 范围
  • 相关阅读:
    HDU 5107 线段树扫描线
    多线程之多生产多消费者
    matlab @
    全概率公式
    正确理解HTML,XHTML页面的头部doctype定义
    每天过的非常充实。
    struts2对action中的方法进行输入校验(2)
    Ubuntu下Chromium源码的编译
    LCA 最近公共祖先 tarjan离线 总结 结合3个例题
    VS2010-win32下cocos2dx控制台打印的方法
  • 原文地址:https://www.cnblogs.com/ghh520/p/11493985.html
Copyright © 2011-2022 走看看