[oeasy]python0071_字符串类型_str_string_下标运算符_中括号

简介: [oeasy]python0071_字符串类型_str_string_下标运算符_中括号

 回忆上次内容  

  • 上次 分辨了
  • 静态类型 语言
  • 动态类型 语言


  • 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  


目录
相关文章
|
1月前
|
存储 Java 索引
Python String详解!
本文详细介绍了Python中的字符串数据类型,包括其创建、访问、切片、反转及格式化等操作。文章涵盖字符串的基本概念、各种操作方法以及常用内置函数。通过多个示例代码展示了如何使用单引号、双引号和三重引号创建字符串,如何通过索引和切片访问与修改字符串内容,以及如何利用格式化方法处理字符串。此外,还介绍了字符串的不可变性及其在实际应用中的重要性。通过本文的学习,读者可以全面掌握Python字符串的使用技巧。
41 4
|
28天前
|
Python
【10月更文挑战第7天】「Mac上学Python 14」基础篇8 - 运算符详解
本篇将详细介绍Python中的运算符,包括数学运算、关系运算、逻辑运算、赋值运算和成员运算等内容。同时会说明运算符的优先级和运算顺序,帮助用户理解和掌握Python中的运算符使用规则。
34 3
【10月更文挑战第7天】「Mac上学Python 14」基础篇8 - 运算符详解
|
11天前
|
人工智能 Python
[oeasy]python039_for循环_循环遍历_循环变量
本文回顾了上一次的内容,介绍了小写和大写字母的序号范围,并通过 `range` 函数生成了 `for` 循环。重点讲解了 `range(start, stop)` 的使用方法,解释了为什么不会输出 `stop` 值,并通过示例展示了如何遍历小写和大写字母的序号。最后总结了 `range` 函数的结构和 `for` 循环的使用技巧。
23 4
|
29天前
|
Python
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
本篇将详细介绍Python中的字符串类型及其常见操作,包括字符串的定义、转义字符的使用、字符串的连接与格式化、字符串的重复和切片、不可变性、编码与解码以及常用内置方法等。通过本篇学习,用户将掌握字符串的操作技巧,并能灵活处理文本数据。
52 1
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
|
20天前
|
NoSQL Redis
Redis 字符串(String)
10月更文挑战第16天
31 4
|
18天前
|
存储 Python
[oeasy]python038_ range函数_大小写字母的起止范围_start_stop
本文介绍了Python中`range`函数的使用方法及其在生成大小写字母序号范围时的应用。通过示例展示了如何利用`range`和`for`循环输出指定范围内的数字,重点讲解了小写和大写字母对应的ASCII码值范围,并解释了`range`函数的参数(start, stop)以及为何不包括stop值的原因。最后,文章留下了关于为何`range`不包含stop值的问题,留待下一次讨论。
16 1
|
27天前
|
数据可视化 Java
让星星月亮告诉你,通过反射创建类的实例对象,并通过Unsafe theUnsafe来修改实例对象的私有的String类型的成员属性的值
本文介绍了如何使用 Unsafe 类通过反射机制修改对象的私有属性值。主要包括: 1. 获取 Unsafe 的 theUnsafe 属性:通过反射获取 Unsafe类的私有静态属性theUnsafe,并放开其访问权限,以便后续操作 2. 利用反射创建 User 类的实例对象:通过反射创建User类的实例对象,并定义预期值 3. 利用反射获取实例对象的name属性并修改:通过反射获取 User类实例对象的私有属性name,使用 Unsafe`的compareAndSwapObject方法直接在内存地址上修改属性值 核心代码展示了详细的步骤和逻辑,确保了对私有属性的修改不受 JVM 访问权限的限制
49 4
|
4天前
|
人工智能 开发工具 Python
[oeasy]python040_缩进几个字符好_输出所有键盘字符_循环遍历_indent
本文探讨了Python代码中的缩进问题。通过研究`range`函数和`for`循环,发现缩进对于代码块的执行至关重要。如果缩进不正确,程序会抛出`IndentationError`。文章还介绍了Python的PEP8规范,推荐使用4个空格进行缩进,并通过示例展示了如何使用Tab键实现标准缩进。最后,通过修改代码,输出了从0到122的字符及其对应的ASCII码值,但未能找到竖线符号(`|`)。文章在总结中提到,下次将继续探讨竖线符号的位置。
6 0
|
25天前
|
自然语言处理 Python
【python从入门到精通】-- 第三战:输入输出 运算符
【python从入门到精通】-- 第三战:输入输出 运算符
62 0
【python从入门到精通】-- 第三战:输入输出 运算符
|
1月前
|
canal 安全 索引
(StringBuffer和StringBuilder)以及回文串,字符串经典习题
(StringBuffer和StringBuilder)以及回文串,字符串经典习题
33 5
下一篇
无影云桌面