回忆上次内容
  • 上次 分辨了
  • 静态类型 语言
  • 动态类型 语言
 
  • python 属于
  • 对类型要求 没有那么严格的
  • 动态类型 语言
 
  • 对 初学者很友好
  • 不过很多时候
  • 也容易 弄不清变量类型
 
  • 直接 修改代码
  • 增强 程序的可读性
  • 把变量的类型
  • 明确标记在 变量名上
 
  • 就像
  • 把缩进 作为程序块的分界一样
  • 明确起来
 
  • 想要 真正成为编程高手
  • 不但 要
  • 明确 变量的数据类型
 
  • 而且 要
  • 知道 这数据类型 的特性
 
  • 比如 字符串类型
  • 到底有些什么特性呢?
字符串
  • s 是 字符串类型的变量
 

 
添加图片注释,不超过 140 字(可选)
 
  • 字符串
  • 英文名称是 string
 

 
添加图片注释,不超过 140 字(可选)
string
  • 意思是
  • 绳子或者琴弦
 

 
添加图片注释,不超过 140 字(可选)
 
  • 后来也指
  • 用绳子把什么东西串起来
 
  • 比如串什么东西呢?
手串
  • 这就是一串金刚菩提串的
  • 折中串 有长有短
 
  • 这一串 多少颗金刚菩提 呢?
  • 这一串 108 颗
  • 代表断除一百零八种烦恼
 

 
添加图片注释,不超过 140 字(可选)
 
  • 有事没事就盘串
  • 用猪鬃刷子清洗
  • 放到阴凉地方阴干
  • 用手盘包了浆
 
  • 最终
  • 证得一百零八种无量三昧
  • 三昧就是三摩地
  • 俗称入定
  • 只要静心就都能入定
 

 
添加图片注释,不超过 140 字(可选)
 
  • 经常盘笔记本键盘
  • 虽然没有包浆
  • 但是会盘出奇迹
糖葫芦串
  • 山楂 串起来 形成的
  • 就是糖葫芦串
 

 
添加图片注释,不超过 140 字(可选)
 
  • 类似的还有
  • 烤肉筋串
  • 烤鸡心串
  • 烤板筋串
  • 字符串
字符串
  • 字符串 就是 把字符串起来
  • 字符串 里面每个山楂
  • 就是一个字符
 

 
添加图片注释,不超过 140 字(可选)
 
  • 怎么理解字符串?
字符串
  • 字符串就是 字符的串
  • 把一个个字符串起来
 

 
添加图片注释,不超过 140 字(可选)
 
  • 字符串有多长呢?
长度
  • 知道了这个串是
  • 由字符构成的
  • 那这个串有多长呢
 
  • 可以使用函数
  • help(str.len)
 

 
添加图片注释,不超过 140 字(可选)
 
  • len("oeasy")
  • 字符串有几个字符
  • 字符串就有多长
 

 
添加图片注释,不超过 140 字(可选)
 
  • 总共 5 个字符
  • 具体是哪五个字符?
下标
  • 字符可以用 下标运算符[]进行访问
  • 将 序号n 放入中括号里
  • 就得到第n个字符
 
  • 特别注意
  • 下标不是从 1 开始的
  • 而是从 0 开始的
  • 从零开始
 

 
添加图片注释,不超过 140 字(可选)
 
  • 这样就可以用序号
  • 访问到字符串中的每个字符
下标范围
  • 下标从 0 开始
  • 最后一位是 len(o)-1
  • 也就是 5-1 = 4
 
  • 写成-1 也可以
  • 意思是 倒数第一个字符
 

 
添加图片注释,不超过 140 字(可选)
 
  • 如果我就想
  • 访问 o[5] 呢
下标越界
  • 访问 o[5] 报错
  • IndexError
  • string index out of range
 

 
添加图片注释,不超过 140 字(可选)
 
  • 字符串索引 超出范围
  • 字符串索引 下标越界
  • 访问了 一个不存在的下标值
类型和位置
  • 先自省一下
  • 自省(introspection)
 

 
添加图片注释,不超过 140 字(可选)
 
  • 通过 type 函数获得 变量o 的类型
  • 变量o的类型 是str
  • 就是 字符串 string
 

 
添加图片注释,不超过 140 字(可选)
 
  • 通过 id 函数获得 变量o 在内存中的地址
  • 这个地址是一串数字
 
  • 这数字 就是 o 在内存中的唯一标识
  • 是 变量o的内存地址
初始化过程
  • 内存地址(140547862959216)
  • 被赋给s_title
 
  • s_title 里面存的是
  • "oeasy"字符串
 

 
添加图片注释,不超过 140 字(可选)
 
  • oeasy这5个字符
  • 究竟是如何存储在内存中的呢?
ascii 编码
  • 字符串中存储的是英文字符
  • 属于ascii 字符
  • 有七位二进制数
  • 放在内存里面一个字节就可以
 

 
添加图片注释,不超过 140 字(可选)
 
  • 那 5 个字符
  • 分别什么样呢?
5 个字符
  • id 那个位置
  • 有一个 str 类的对象
 
  • 指向五个字符连成的串
  • 每个字符都有自己的字节
 

 
添加图片注释,不超过 140 字(可选)
 
  • 这些字节都在什么位置呢?
字符位置
  • 字符串
  • 有字符串的地址
 

 
添加图片注释,不超过 140 字(可选)
 
  • 下标索引到的字符
  • 有字符的地址
  • 可以注意到相同字符的位置是相同的
 

 
添加图片注释,不超过 140 字(可选)
 
  • 如果有回车这类的转义字符呢?
回车字符
  • 一个转义字符也占据一个字节
  • 比如 回车字符\n
  • 序号为10
  • 字节状态为 b"\x0a"
 
  • 回忆一下进制转化
  • 从十进制到其他进制
  • 2进制 bin
  • 8进制 oct
  • 16进制 hex
 
  • 从其他进制到十进制
  • int
 
  • 编码转化
  • 从字符转化为序号
  • ord
 
  • 从序号转化为字符
  • chr
 

 
添加图片注释,不超过 140 字(可选)
 
  • 字节序列与字符串转化
  • 字节序列到字符串
  • decode
 
  • 从字符串到字节序列
  • encode
转义字符
  • 转义字符也占据一个字节
 

 
添加图片注释,不超过 140 字(可选)
 
  • 所有转义字符都如此么?
 

 
添加图片注释,不超过 140 字(可选)
 
  • 如果有中文字符呢?
中文字符
  • str = “a一”
  • 总共两个字符
  • 一个是英文字符
  • 另一个是中文汉字字符
 
  • 对应两个位置
  • str[0] - a
  • str[1] - 一
 

 
添加图片注释,不超过 140 字(可选)
 
  • 其中 a 是 ascii 字符
  • 长度为1
 
  • 一是 utf-8 编码的 unicode 字符
  • 作为字符的长度也为1
 
  • 具体占用几个字节呢?
编码
  • 首先要知道内存中的编码方式
  • 到底是utf-8
  • 还是unicode
 

 
添加图片注释,不超过 140 字(可选)
 
  • 查询str的帮助
  • 发现默认编码是系统的默认编码
 

 
添加图片注释,不超过 140 字(可选)
 
  • 所以在python3的运行环境下
  • str的默认编码就是系统的编码
  • 目前就是utf-8
内存情况

 
添加图片注释,不超过 140 字(可选)
 
  • 可以看到
  • a 就是 \x61
  • 一 就是 \xe4\xb8\x80
用变量赋值
  • s1 = “oeasy”
  • 这个字符串长度 5 个字节
  • oeasy
 
  • s1 位于 139633377299288
 
  • s2 = “o2z”
  • 这个字符串长度 3 个字节
  • o2z
 
  • s2 位于 139633366623112
 

 
添加图片注释,不超过 140 字(可选)
 
  • s2 = s1
  • 令s2 位于 id(s1)
  • s2 和 s1 都指向 原来 s1 的地址
 
  • 最终引用情况
  • 字符串"oeasy"
  • 有两个变量引用(s1、s2)
 
  • 字符串 “o2z”
  • 原来 s2 所指向
  • 现在没有变量引用了
  • 会被系统垃圾回收
注意事项
  • str 可以
  • 把数字转化为一个字符串
 
  • str 是类的名字
  • 但是一旦被赋值
  • 就无法转化了
 

 
添加图片注释,不超过 140 字(可选)
 
  • 特别注意
  • 初学者要特别注意
  • 不要将str作为变量名!
总结
  • 这次了解的是字符串
  • 字符串就是字符的串
  • 字符串长度 可以用 len函数
  • 字符可以用下标索引 []
 
  • 可以用str
  • 将整型数字转化为字符串
 
  • 字符的长度本身有长有短
  • ascii 包括各种 转义字符
  • 都对应 1 个字节
 
  • unicode 字符中的汉字
  • 可能对应 3 个字节
 
  • 但不管本身是 1 字节 还是 3 字节
  • 都算一个字符
 
  • 将字符串赋给一个字符串变量
  • 这就是字符串变量的id
  • 就是字符串在内存中的地址
 
  • 除了字符串
  • 还有什么变量类型?
 
  • 下次再说!
  • 蓝桥->https://www.lanqiao.cn/courses/3584
  • github->https://github.com/overmind1980/oeasy-python-tutorial
  • gitee->https://gitee.com/overmind1980/oeasypython
 

[oeasy]python0071_字符串类型_str_string_下标运算符_中括号的更多相关文章

  1. Day2_数字类型_字符串类型_列表类型_元组_字典_集合_字符编码_文件处理

    数字类型: 作用:年纪,等级,薪资,身份证号等: 10进制转为2进制,利用bin来执行. 10进制转为8进制,利用oct来执行. 10进制转为16进制,利用hex来执行. #整型age=10 prin ...

  2. Day2_数字类型_字符串类型_列表类型

    数字类型: 作用:年纪,等级,薪资,身份证号等: 10进制转为2进制,利用bin来执行. 10进制转为8进制,利用oct来执行. 10进制转为16进制,利用hex来执行. #整型age=10 prin ...

  3. C++ Primer注意事项11_运算符重载_算术/关系运算符_下标运算符

    1.算术/关系运算符 平时,定义成非成员函数以同意左右側运算对象进行转换.由于这些运算符一般不须要改变运算对象的状态,所以形參都是常量的引用. 以"+"号运算符为例: Person ...

  4. 网易云课堂_C++程序设计入门(下)_第8单元:年年岁岁花相似– 运算符重载_第8单元 - 作业2:OJ编程 - 重载数组下标运算符

    第8单元 - 作业2:OJ编程 - 重载数组下标运算符 查看帮助 返回   温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提 ...

  5. C++程序设计方法3:数组下标运算符重载

    数组下标运算符重载 函数声明形式 返回类型operator[](参数): 如果返回类型是引用,则数组运算符调用可以出现在等式的左边,接受赋值,即: Obj[index] = value; 如果返回类型 ...

  6. python的str()字符串类型的方法详解

    字符串一旦创建,不可修改,一旦修改或者拼接,都会造成重新生成字符串,因为内存存数据是一个挨着一个存的,如果增加一个字符串的话,之前的老位置只有一个地方,不够,这是原理性的东西,在其他语言里面也一样 7 ...

  7. Delphi 常用数据类型 字符串类型 数据类型等等

    字符串类型 Delphi有三种类型的字符: ●AnsiChar这是标准的1字节的ANSI字符,程序员都对它比较熟悉. ●WideChar这是2字节的Unicode字符. ●Char在目前Delphi早 ...

  8. day06-数字类型、字符串类型内置方法

    目录 数字类型内置方法 字符串类型内置方法 有序 or 无序 可变 or 不可变 数字类型内置方法 1. int()强制类型转化成整型 age_str = '18' # 定义字符串 age = int ...

  9. JavaScript中字符串类型

    字符串类型 字符串介绍 这是程序里面使用最为广泛的一-种类型.在JavaScript里面, 可以使用单引号,也可以使用双引号: 字符串这种数据类型非常霸道,它和其他数据类型相加都会被转换后才为字符串类 ...

  10. ASCLL编码器-算术运算符_四则与取模运算

    ASCLL编码器 public static void main(String[] args) { //字符类型变量 char c = 'a'; int i = 1; //字符类型和int类型计算 S ...

随机推荐

  1. 磁盘空间满了报错cannot create temp file for here-document: No space left on device

    如下:虚拟机设置的存储空间是20G,.目前用到100%了.执行命令会报错设备没有空间 我想删除镜像释放空间,也无法操作 分级找到文件,但是不知道删除哪个 退出的容器都找不到了 把昨天下午弄的删了 容器 ...

  2. 鸿蒙HarmonyOS实战-Stage模型(开发卡片页面)

    一.开发卡片页面 HarmonyOS元服务卡片页面(Metaservice Card Page)是指在HarmonyOS系统中,用于展示元服务的页面界面.元服务是指一组提供特定功能或服务的组件,例如天 ...

  3. Java计算百分比保留整数

    1.Java计算百分比保留整数的方法步骤 在Java中计算百分比并保留整数,通常涉及以下步骤: (1)计算原始数值与基准数值的百分比(通常使用 (原始数值 / 基准数值) * 100 的公式). (2 ...

  4. 手写Word2vec算法实现

    1. 语料下载:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2 [中文维基百科语料] 2. ...

  5. Android OpenMAX(五)高通OMX Core实现

    上一节了解了OMX Core提供的内容,这一节我们看看高通OMX Core是如何实现的.本节代码参考自: omx_core_cmp.cpp registry_table_android.c qc_om ...

  6. .net core 关于对swagger的UI(Index.html)或接口的权限验证;

    背景: 如何在ASP.Net Core的生产环境中保护swagger ui,也就是index.html页面.其实swagger是自带禁用的功能的,只需要设置开关即可.但是有一些场景,是需要把这些接口进 ...

  7. C# 实现中文转颜色 - 实现根据名字自动生成头像

    一.C#实现中文转颜色 - 实现根据名字自动生成头像 原理说明: 由于名字图像是自动生成,背景颜色不一样,可以考虑一下几种方法: 1)使用随机数来自动生成一个16进制颜色字符串,作为头像的背景颜色: ...

  8. 痞子衡嵌入式:不同J-Link版本对于i.MXRT1170连接复位后处理行为有所不同

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是不同J-Link版本对于i.MXRT1170连接复位后处理行为. 痞子衡之前写过一篇旧文 <i.MXRT1170上用J-Link连 ...

  9. css之伪元素选择器

    注:本博客内容来自尚硅谷禹神的前端入门课程 什么是伪元素? 很像元素,但不是元素(element),是元素中的一些特殊位置. 伪元素语法中的::可以用:,因为css2中没有明确区分伪类和伪元素,但是s ...

  10. 7.28考试总结(NOIP模拟26)[神炎皇·降雷皇·幻魔皇]

    或许只需一滴露水,便能守护这绽放的花朵. 前言 疯狂挂分,本来T2是想用树状数组优化一下的不知道为啥后来看了一下就少看了一层循环, 然后就想,我都 n 的复杂度了,足以搞过第一问了,还优化啥呀.... ...