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

news2024/9/22 9:41:47

帮助手册

回忆上次内容

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

字符串

  • s 是 字符串类型的变量

图片描述

  • 字符串
    • 英文名称是 string

图片描述

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 编码

  • 字符串中存储的是英文字符
    • 属于ascii 字符
    • 有七位二进制数
    • 放在内存里面一个字节就可以

图片描述

  • 那 5 个字符
    • 分别什么样呢?

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/728755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VisualSVN Server安装步骤

一.下载 官网:VisualSVN - Subversion-based version control for Windows 二.安装 双击安装 先创建好文件夹路径,建议放在同一个根目录下 三.安装成功,运行打开界面如图 四.创建项目 右键Repositories 选择Customize pemissions&#xff0…

浅拷贝、深拷贝、引用拷贝

目录 1.浅拷贝 2.深拷贝 3.引用拷贝 4.代码示例 5.总结 浅拷贝、深拷贝和引用拷贝是在编程中用来 复制对象或数据 的三种不同方式。 1.浅拷贝 浅拷贝(Shallow Copy):浅拷贝创建一个新对象,其中包含原始对象的引用。这意…

Oracle数据类型与表管理

Oracle数据类型与表管理 前言 1、Oracle数据类型 2、 建表 3、表删除 4、表的修改 1、Oracle数据类型 2、 建表 Create table 表名( 字段 1 数据类型 [default 默认值], 字段 2 数据类型 [default 默认值], … 字段 n 数据类型 [default 默认值] ) -…

d3dx9_30.dll丢失怎么解决

在解决d3dx9_30.dll丢失问题之前,我们首先需要了解d3dx9_30.dll的作用。d3dx9_30.dll是DirectX的一个核心文件,它提供了许多与图形和多媒体相关的函数和特性。它在许多游戏和图形应用程序中被广泛使用。 d3dx9_30.dll丢失的解决方法 打开计算机电脑浏览…

selenium自动化测试之八种定位元素方法

目录 八大定位方法 id定位 name定位 tag定位 class定位 link_text定位 partial_link定位 xpath定位 Css_selector定位 总结: 自动化最基础的就属于定位元素了,元素不会定位,基本上已经团灭了,就不用再去考虑什么自动化了…

9.12UEC++日志输出

1. 调用:GEngine; 2.TEXT宏: 3. Vs使用: 演示: 日志文件夹: 自定义日志: 声明: 定义:

力扣 51. N 皇后

题目来源&#xff1a;https://leetcode.cn/problems/n-queens/description/ C题解1&#xff1a;回溯法。用一个vector<vector<int>> qmap(n, vector<int>(n, 0))标记后面行不能使用的位置&#xff0c;每次递归下一层为下一行的位置&#xff0c;直到达到n行&a…

html案例2

效果 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, initia…

【mysql实践】如何查看阿里云RDS的MySQL库中的binlog日志

背景&#xff1a; 工作中我们为了查看MySQL中数据修改的历史记录时&#xff0c;会通过查看binlog日志。但由于binlog日志是二进制文件&#xff0c;需要解析之后&#xff0c;才能用文本查看工具打开。这次笔者使用flink进行实时统计时就多次遇到了这个问题。经常看笔者最近博客…

redis的分布式事务-redisson

一 redisson 1.1 redisson分布式事务 Redisson分布式锁是一种基于redis实现的分布式锁&#xff0c;它利用redis的setnx命令实现分布式锁的互斥访问。同时还支持锁的自动续期功能&#xff0c;可以避免因为某个进程崩溃或者网络故障导致锁无法释放的情况。 只要线程一加锁成功…

常见面试题之类加载器

1. 什么是类加载器&#xff0c;类加载器有哪些&#xff1f; 要想理解类加载器的话&#xff0c;务必要先清楚对于一个Java文件&#xff0c;它从编译到执行的整个过程。 类加载器&#xff1a;用于装载字节码文件(.class文件)运行时数据区&#xff1a;用于分配存储空间执行引擎&a…

八 、HTML表单

1、表单 三层架构 数据访问层 响应业务逻辑层的请求 与物理数据库交互 业务逻辑层 响应表示层的请求 与数据访问层交互 完成特定的业务逻辑约束 表示层 显示信息 收集信息&#xff08;与业务逻辑层交互&#xff09; HTML显示信息 基本标签&#xff1a;行内元素、块级元素 HT…

Java 设计模式——策略模式

目录 1.概述2.结构3.案例实现4.优缺点5.使用场景6.JDK 源码解析——Comparator 1.概述 &#xff08;1&#xff09;先看下面的图片&#xff0c;我们去旅游选择出行模式有很多种&#xff0c;可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。 &#xff08;2&#xff09;策略…

【计算机网络】网络编程套接字(二)

文章目录 网络编程套接字&#xff08;二&#xff09;简单TCP服务器实现创建套接字服务器绑定服务器监听服务器接收连接服务器处理请求 简单TCP客户端实现创建套接字客户端发起连接客户端发起请求 服务器简单测试服务器简单测评多进程版TCP服务器捕捉SIGCHLD信号孙子进程提供服务…

如何使用ai绘画生成器创造出惊人的作品

你们了解如何文字生图片吗&#xff0c;简单的来说就是用文字描述出图片的样子&#xff0c;然后通过ai技术生成出来。 这种技术现在应用的很广泛&#xff0c;在各行各业都有在使用&#xff0c;平常我无聊的时候&#xff0c;就靠它为我打磨时间了。 不过现在的ai绘画工具有很多…

51 # 二叉搜索树的实现

实现二叉搜索树 比如我们有数组&#xff1a; [10, 8, 19, 6, 15, 22, 20]需要把数组转为二叉搜索树&#xff0c;效果如下&#xff1a; // 节点 class Node {constructor(element, parent) {this.element element; // 存的数据this.parent parent; // 父节点this.left null…

订座排队小程序/H5/app【附源码】

订座排队小程序/H5/app 可看 应用效果 首页 答题活动规则 选择门店暂无门店 订座订座 订座成功 用户反馈订座 关于后端

抖音seo源码/源码开发部署环境配置及流程分享

抖音seo源码开发部署环境配置&#xff1a; 要配置抖音seo源码开发环境&#xff0c;您需要完成以下步骤&#xff1a; 安装 Python&#xff1a;请在官网下载 Python 并进行安装。 安装 Django&#xff1a;请在命令行中输入以下命令来安装 Django&#xff1a; pip install django…

双周连载 | 暗网分析报告Part 1:他们无法保护你

双周连载 | 暗网分析报告Part 1&#xff1a;他们无法保护你 暗网&#xff0c;一个人们讳莫如深的世界&#xff0c;一个充斥着悄无声息的威胁&#xff0c;似乎永久地悬在我们每个人的头顶。这是一个罪恶的不法之地&#xff0c;时刻散播着未知的可怕力量&#xff0c;这便是那些隐…

使用 Elastic 修剪传入日志体量

作者&#xff1a;Carly Richmond 记录日志还是不记录日志&#xff1f; 一直是软件工程师仍在努力解决的一个难题&#xff0c;这对站点可靠性工程&#xff08;SRE&#xff09;同事来说是不利的。 开发人员并不总能正确了解他们在应用程序中捕获的警告和错误的级别或上下文&#…