[oeasy]python0071_字符串类型_str_string_下标运算符_中括号
- 上次 分辨了
- 静态类型 语言
- 动态类型 语言
- python 属于
- 对类型要求 没有那么严格的
- 动态类型 语言
- 对 初学者很友好
- 不过很多时候
- 也容易 弄不清变量类型
- 直接 修改代码
- 增强 程序的可读性
- 把变量的类型
- 明确标记在 变量名上
- 就像
- 把缩进 作为程序块的分界一样
- 明确起来
- 想要 真正成为编程高手
- 不但 要
- 明确 变量的数据类型
- 而且 要
- 知道 这数据类型 的特性
- 比如 字符串类型
- 到底有些什么特性呢?
- s 是 字符串类型的变量
- 字符串
- 英文名称是 string
- 意思是
- 绳子或者琴弦
- 后来也指
- 用绳子把什么东西串起来
- 比如串什么东西呢?
- 这就是一串金刚菩提串的
- 折中串 有长有短
- 这一串 多少颗金刚菩提 呢?
- 这一串 108 颗
- 代表断除一百零八种烦恼
- 有事没事就盘串
- 用猪鬃刷子清洗
- 放到阴凉地方阴干
- 用手盘包了浆
- 最终
- 证得一百零八种无量三昧
- 三昧就是三摩地
- 俗称入定
- 只要静心就都能入定
- 经常盘笔记本键盘
- 虽然没有包浆
- 但是会盘出奇迹
- 山楂 串起来 形成的
- 就是糖葫芦串
- 类似的还有
- 烤肉筋串
- 烤鸡心串
- 烤板筋串
- 字符串
- 字符串 就是 把字符串起来
- 字符串 里面每个山楂
- 就是一个字符
- 怎么理解字符串?
- 字符串就是 字符的串
- 把一个个字符串起来
- 字符串有多长呢?
- 知道了这个串是
- 由字符构成的
- 那这个串有多长呢
- 可以使用函数
- help(str.len)
- len("oeasy")
- 字符串有几个字符
- 字符串就有多长
- 总共 5 个字符
- 具体是哪五个字符?
- 字符可以用 下标运算符[]进行访问
- 将 序号n 放入中括号里
- 就得到第n个字符
- 特别注意
- 下标不是从 1 开始的
- 而是从 0 开始的
- 从零开始
- 这样就可以用序号
- 访问到字符串中的每个字符
- 下标从 0 开始
- 最后一位是 len(o)-1
- 也就是 5-1 = 4
- 写成-1 也可以
- 意思是 倒数第一个字符
- 如果我就想
- 访问 o[5] 呢
- 访问 o[5] 报错
- IndexError
- string index out of range
- 字符串索引 超出范围
- 字符串索引 下标越界
- 访问了 一个不存在的下标值
- 先自省一下
- 自省(introspection)
- 通过 type 函数获得 变量o 的类型
- 变量o的类型 是str
- 就是 字符串 string
- 通过 id 函数获得 变量o 在内存中的地址
- 这个地址是一串数字
- 这数字 就是 o 在内存中的唯一标识
- 是 变量o的内存地址
- 内存地址(140547862959216)
- 被赋给s_title
- s_title 里面存的是
- "oeasy"字符串
- oeasy这5个字符
- 究竟是如何存储在内存中的呢?
- 字符串中存储的是英文字符
- 属于ascii 字符
- 有七位二进制数
- 放在内存里面一个字节就可以
- 那 5 个字符
- 分别什么样呢?
- id 那个位置
- 有一个 str 类的对象
- 指向五个字符连成的串
- 每个字符都有自己的字节
- 这些字节都在什么位置呢?
- 字符串
- 有字符串的地址
- 下标索引到的字符
- 有字符的地址
- 可以注意到相同字符的位置是相同的
- 如果有回车这类的转义字符呢?
- 一个转义字符也占据一个字节
- 比如 回车字符\n
- 序号为10
- 字节状态为 b"\x0a"
- 回忆一下进制转化
- 从十进制到其他进制
- 2进制 bin
- 8进制 oct
- 16进制 hex
- 从其他进制到十进制
- int
- 编码转化
- 从字符转化为序号
- ord
- 从序号转化为字符
- chr
- 字节序列与字符串转化
- 字节序列到字符串
- decode
- 从字符串到字节序列
- encode
- 转义字符也占据一个字节
- 所有转义字符都如此么?
- 如果有中文字符呢?
- str = “a一”
- 总共两个字符
- 一个是英文字符
- 另一个是中文汉字字符
- 对应两个位置
- str[0] - a
- str[1] - 一
- 其中 a 是 ascii 字符
- 长度为1
- 一是 utf-8 编码的 unicode 字符
- 作为字符的长度也为1
- 具体占用几个字节呢?
- 首先要知道内存中的编码方式
- 到底是utf-8
- 还是unicode
- 查询str的帮助
- 发现默认编码是系统的默认编码
- 所以在python3的运行环境下
- str的默认编码就是系统的编码
- 目前就是utf-8
- 可以看到
- a 就是 \x61
- 一 就是 \xe4\xb8\x80
- s1 = “oeasy”
- 这个字符串长度 5 个字节
- oeasy
- s1 位于 139633377299288
- s2 = “o2z”
- 这个字符串长度 3 个字节
- o2z
- s2 位于 139633366623112
- s2 = s1
- 令s2 位于 id(s1)
- s2 和 s1 都指向 原来 s1 的地址
- 最终引用情况
- 字符串"oeasy"
- 有两个变量引用(s1、s2)
- 字符串 “o2z”
- 原来 s2 所指向
- 现在没有变量引用了
- 会被系统垃圾回收
- str 可以
- 把数字转化为一个字符串
- str 是类的名字
- 但是一旦被赋值
- 就无法转化了
- 特别注意
- 初学者要特别注意
- 不要将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_下标运算符_中括号的更多相关文章
- Day2_数字类型_字符串类型_列表类型_元组_字典_集合_字符编码_文件处理
数字类型: 作用:年纪,等级,薪资,身份证号等: 10进制转为2进制,利用bin来执行. 10进制转为8进制,利用oct来执行. 10进制转为16进制,利用hex来执行. #整型age=10 prin ...
- Day2_数字类型_字符串类型_列表类型
数字类型: 作用:年纪,等级,薪资,身份证号等: 10进制转为2进制,利用bin来执行. 10进制转为8进制,利用oct来执行. 10进制转为16进制,利用hex来执行. #整型age=10 prin ...
- C++ Primer注意事项11_运算符重载_算术/关系运算符_下标运算符
1.算术/关系运算符 平时,定义成非成员函数以同意左右側运算对象进行转换.由于这些运算符一般不须要改变运算对象的状态,所以形參都是常量的引用. 以"+"号运算符为例: Person ...
- 网易云课堂_C++程序设计入门(下)_第8单元:年年岁岁花相似– 运算符重载_第8单元 - 作业2:OJ编程 - 重载数组下标运算符
第8单元 - 作业2:OJ编程 - 重载数组下标运算符 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提 ...
- C++程序设计方法3:数组下标运算符重载
数组下标运算符重载 函数声明形式 返回类型operator[](参数): 如果返回类型是引用,则数组运算符调用可以出现在等式的左边,接受赋值,即: Obj[index] = value; 如果返回类型 ...
- python的str()字符串类型的方法详解
字符串一旦创建,不可修改,一旦修改或者拼接,都会造成重新生成字符串,因为内存存数据是一个挨着一个存的,如果增加一个字符串的话,之前的老位置只有一个地方,不够,这是原理性的东西,在其他语言里面也一样 7 ...
- Delphi 常用数据类型 字符串类型 数据类型等等
字符串类型 Delphi有三种类型的字符: ●AnsiChar这是标准的1字节的ANSI字符,程序员都对它比较熟悉. ●WideChar这是2字节的Unicode字符. ●Char在目前Delphi早 ...
- day06-数字类型、字符串类型内置方法
目录 数字类型内置方法 字符串类型内置方法 有序 or 无序 可变 or 不可变 数字类型内置方法 1. int()强制类型转化成整型 age_str = '18' # 定义字符串 age = int ...
- JavaScript中字符串类型
字符串类型 字符串介绍 这是程序里面使用最为广泛的一-种类型.在JavaScript里面, 可以使用单引号,也可以使用双引号: 字符串这种数据类型非常霸道,它和其他数据类型相加都会被转换后才为字符串类 ...
- ASCLL编码器-算术运算符_四则与取模运算
ASCLL编码器 public static void main(String[] args) { //字符类型变量 char c = 'a'; int i = 1; //字符类型和int类型计算 S ...
随机推荐
- 【C#】操作word 【Aspose.Words】
上图是要填充的word模板,就是一个接口说明文档.那个像书名号括起来的东西就是要替换的,这个东西并不是键盘输入的书名号,它是文档部件的一种,要插入这个东西需要: 打开模板word文件,用office打 ...
- ShardingJDBC使用不当引发的线上事故
本文讲述一个由 ShardingJDBC 使用不当引起的悲惨故事. 一. 问题重现 有一天运营反馈我们部分订单状态和第三方订单状态无法同步. 根据现象找到了不能同步订单状态是因为 order 表的 t ...
- 莫烦tensorflow学习记录 (3)建造我们第一个神经网络
另一个学习文档http://doc.codingdict.com/tensorflow/tfdoc/tutorials/overview.html 定义 add_layer() https://mof ...
- C# WinForm控件及其子控件转成图片(支持带滚动条的长截图)
概述(Overview) 参考了网上的分析,感觉都不太理想:1.一个控件内如果包含多个子控件时没有考虑顺序问题:2.超出控件可显示区域时不能长截图,有滚动条会多余截取了滚动条.这个随笔旨在解决这个问题 ...
- 不到200行用Vue实现类似Swiper.js的轮播组件
前言 大家在开发过程中,或多或少都会用到轮播图之类的组件,PC和Mobile上使用 Swiper.js ,小程序上使用swiper组件等. 本文将详细讲解如何用Vue一步步实现的类似Swiper.js ...
- pidstat 命令查看nginx上下文切换
pidstat -w -p 711 1 [root@leilei ~]# ps -ef|grep nginx root 13974 1 0 14:23 ? 00:00:00 nginx: master ...
- Windows10 LTSC版,比Win7还干净
在Windows操作系统的发展历程中,每一个版本都承载着微软对用户需求的深度理解和技术创新.其中,Windows 7以其稳定.高效和简洁的特点,赢得了众多用户的喜爱. 然而,随着技术的不断进步和用户需 ...
- web游览器的标签页仿 ios mac 苹果的墓碑机制 (js代码)
背景: 本来项目开发系统防挂机功能,在其余游览器中均可以使用.但是呢在苹果的safair游览器中会出现几率失效,最后经过排查发现是苹果的墓碑机制导致.即:此标签页活跃,其他标签页假死.然后就导致防挂机 ...
- kettle从入门到精通 第三十课 mysql 数据连接常用配置
1.我们平常用的最多的数据库就是mysql了,这里我以mysql为例说下数据库连接池配置.为啥要用连接池,因为数据库建立连接很费性能,所以就建立连接池(提前建立好一批连接)缓存起来提高性能.下图中my ...
- JAVA发送邮件报错: 535 Error: authentication failed, system busy。
解决方法: 1.设置 -> 微信绑定 -> 开启安全登录 -> 生成新密码 2.使用生成的新密码替换邮箱登录密