疑点难点:
    1 字符串有提供子串查找的方法find。利用find方法可以查找子串第一次出现的位置索引。如果子串不存在,find方法的返回值为-1。
    问题:返回值为什么是-1,不是0?

    思考题:
    1 反斜杠”\”+字符,构成特殊的字符,用转义字符来表示字符集中定义的字符
    问题:为什么用转义字符来表示?

    知识点总结
    字符串:
    1 字符串子串的查找方法:find
    找到子串的位置索引,如果存在,返回位置索引的值。如果不存在,返回值为-1
    2 用引号括起来的(单引号、双引号、三引号)都是字符串。
    3 字符串是一种线性的结构,对应的空间是一块连续的内存。
    4 字符串的类型名为str,通过type()可以输出数据的类型名
    5 定义字符串有两种方法:对象定义法str()、直接定义法” “。
    字符编码与字节解码:
    1 ord函数可以获取字符十进制的数字码,基本语法:ord(character)
    character:字符
    2 chr函数可以将数字码转换成字符,基本语法:chr(code)
    code:编码
    3 常用的字符编码:ASCII、UNICODE、UTF-8、GBK
    ASCII:有7位或者8位二进制位组成的字符编码,最多可包含256个字符。基本的ASCII字符有128个
    UNICODE:为每种语言、每个字符设定了唯一的编码,编码形式是在十六进制的数字前面加上U+
    UTF-8:是针对UNICODE长度可变的字节编码,例如对ASCII 的字符还是1个字节,汉字则采用3个字节
    GBK:是针对汉字的编码规范,单双字节码结合使用。英文用单,部分汉字用双
    4 python默认用UNICODE进行编码,所以python里面的字符串是UNICODE字符编码。
    5 编码和解码:编码是将字符转换成字节码,解码是将字节码转换成字符
    6 字符串类型的encode方法,基本语法:str .encode(encoding),encoding表示字符的编码方式
    返回值为bytes类型,
    7 字节码类型的decode方法,基本语法:bytes.decode(encoding),encoding表示字符的编码方式
    返回值是str数据类型
    转义字符:
    1 反斜杠”\”+字符,构成特殊的字符,用转义字符来表示字符集中定义的字符
    2 在某些情景下,需要禁止转义符号对字符的转义,通过在字符串前面加上前缀r
    例如:file = r”D:\none”
    字符串常用的操作符及操作方法:
    1 +(拼接) (重复) : in(存在) not in(不存在) %(格式化输出)
    2 len(str) 返回字符串的字符个数(字符串的长度)
    3 str.lower(),返回值为全部小写。 str.upper(),返回值为全部大写
    4 str.islower(),是否全部小写(返回值为Ture/False)。str.isupper()是否全部大写(返回值为Ture/false)
    5 删除字符串的空白字符:
    6 字符串字串的查找:
    7 字符串字串的统计:
    8 字符串字串的替换:
    9 字符串的拆分函数:
    10 字符串的前缀和后缀:
    *字符串的格式化

    1 按照特定的格式将字符串输出
    2 %d(格式化为整数)、%f(格式化为浮点数)、%s(格式化为字符串)
    3 %e()、%g()
    4 格式化操作符:%
    5 format方法进行格式化

    列表:
    1 类型名为list(动态),是一种数据集合。有对象定义法和直接定义法。
    2 对象定义法:
    3 直接定义法:
    4 列表是一种序列结构,是可迭代的。可以在for循环中对元素进行遍历
    5 常用操作符:+ * [] [:] in not in > ==
    6 常用操作方法:添加 、查找 、修改 、删除
    7 其他有关的操作方法:原地排序法
    8 列表推导式:本质是一个for循环
    for循环、嵌套for循环、if条件控制、for+if的

    元组:
    1 类型名为tuple(静态),是一种数据集合。有对象定义法和直接定义法。
    2 对象定义法:
    3 直接定义法:
    4 列表是一种序列结构,是可迭代的。可以在for循环中对元素进行遍历
    5 常用操作符:+ * [] [:] in not in > ==
    6 常用操作方法:读取(查找)
    7 元组的自动解包:
    8 与列表的区别:元组是静态、不可变的。列表是动态、可变的。

    字典:
    1 类型名为dict,是一种数据集合。有对象定义法和直接定义法。
    2 对象定义法:
    3 直接定义法:
    4 列表是一种序列结构,是可迭代的。可以在for循环中对元素进行遍历
    5 常用操作符:+ * [] [:] in not in > ==
    6 常用操作方法:添加 、查找 、修改 、删除
    7 字典的底层实现基于哈希表,键名必须是静态的、可哈希的数据类型
    8 字典的格式化:”%(key)s” % (dict)
    format格式化:

    集合:
    1 类型名为set,是一种数据集合。有对象定义法和直接定义法。
    2 对象定义法:
    3 直接定义法:
    4 列表是一种序列结构,是可迭代的。可以在for循环中对元素进行遍历
    5 常用操作符:+ * [] [:] in not in > ==
    6 常用操作方法:添加 、查找 、删除
    7 集合的底层实现基于哈希表,键名必须是静态的、可哈希的数据类型
    集合和字典很相似,集合的元素只有字典元素里的键名。
    键名是唯一的,具有天然排重功能。
    8 集合的运算:交集、并集、差集

    类型的转换:
    1 显性类型转换:整型与浮点型、字符串类型与数值类型、复合型的转换
    2 隐形类型转换:范围小的数据类型转换成范围大的数据类型
    3 非法转换:字符串转换成数值类,里面的字符必须是连续的合法的数字。
    4 转换成布尔类型:每一种数据类型都有其对应的假植和真值。