一、字符串

1.1 怎么定义字符串

字符串是Python最常用的数据结构之一。在 Python 里是用于处理文本数据的,比如存储姓名、文章内容等文本信息 。

  • 定义方式
    • 单引号:用单引号 ' ' 包裹文本,如 name = 'Alice' ,单引号内可正常包含除单引号之外的字符,若要包含单引号,需进行转义,像 sentence = 'He said, \'Hello!\'' 。
    • 双引号:用双引号 " " 包裹文本,例如 message = "Hello, world!" ,在需要包含单引号时较为方便,如 quote = "He said, 'Hello!'" 。
    • 三重单引号:分为三重单引号 ''' ''' 和三重双引号 """ """ 。常用于定义多行字符串。

使用的时候两种方式:

  • 一种双引号里有双引号,那么里面的双引号就用\进行转译。
  • 另一种直接最外面使用单引号,里面也可以直接使用双引号。见下图。

1.2 如何使用字符串中的变量

  • 使用场景:当我们需要在字符串中插入变量的值时,可采用 f - strings 这种方式。比如有变量存储姓名、年龄等信息,想把这些信息整合到一个描述性字符串中,就会用到。
  • 语法格式:f - strings 以 f 开头,后面跟着用大括号 {} 包裹的变量名,即 f"{变量名}" 。示例如下:
  • name = "Alice"
    age = 25
    message = f"My name is {name} and I'm {age} years old."
    print(message)
    # 输出:My name is Alice and I'm 25 years old.

1.3 字符串的基本操作

in :表达式 x in s ,其中 x 是要查找的元素,s 是目标字符串。如果 x 是 s 的子字符串或字符,返回 True ,否则返回 False 。例如:

s = "hello world"
print('ll' in s)  # 输出 True
print('abc' in s)  # 输出 False

not in :表达式 x not in s ,功能与 in 相反,当 x 不是 s 的子字符串或字符时,返回 True ,否则返回 False 。例如:

s = "hello world"
print('abc' not in s)  # 输出 True
print('ll' not in s)  # 输出 False

+ 运算符:用于连接两个字符串。将 s 和 t 两个字符串首尾相连,生成一个新的字符串。例如:

s = "Hello"
t = "World"
result = s + t
print(result)  # 输出 HelloWorld

* 运算符:用于字符串重复。s * t 表示将字符串 s 重复 t 次,t 必须是整数。例如:

s = "Hi"
t = 3
result = s * t
print(result)  # 输出 HiHiHi

 

s[i]:用于获取字符串 s 中索引为 i 的单个字符。在 Python 中,字符串索引从 0 开始。例如:

s = "hello"
print(s[1:3])  # 输出 'el'
# 如果索引为负数,则从字符串末尾开始计数,-1 表示最后一个字符 ,如 print(s[-1]) 会输出 'o' 。

s[i:j]:获取字符串 s 的子串,范围是从索引 i (包含)到索引 j (不包含)。例如:

s = "hello"
print(s[1:3])  # 输出 'el'
# 如果 i 省略,默认从字符串开头(索引 0 )开始;如果 j 省略,默认到字符串末尾 。比如 s[:3] 等价于 s[0:3] ,s[1:] 等价于 s[1:len(s)] 。

s[i:j:k]:在 s[i:j] 的基础上,增加了步长 k ,表示每隔 k - 1 个字符取一个字符。例如:

s = "hello"
print(s[::2])  # 输出 'hlo' ,从开头到结尾,每隔1个字符取一个
# k 为负数时,表示反向切片。比如 s[::-1] 可以将字符串 s 反转 ,对于 s = "hello" ,s[::-1] 输出为 'olleh' 。

1.4 字符串的常用方法

4.1 str.count(sub[, start[, end]])

  • 功能:统计子字符串 sub 在指定字符串 str 中,位于 start(起始索引,包含)到 end(结束索引,不包含)范围内非重叠出现的次数 。start 和 end 为可选参数,若省略,默认在整个字符串中统计。
  • 示例
s = "hello world hello"
print(s.count('hello'))  # 输出 2
print(s.count('l', 0, 5))  # 在索引0到4范围内统计'l'出现次数,输出 2

4.2 str.isalnum()

  • 功能:判断字符串 str 中的所有字符是否都是字母或数字,且字符串至少有一个字符。满足条件返回 True ,否则返回 False 。
  • 示例
s1 = "abc123"
s2 = "abc!123"
s3 = ""
print(s1.isalnum())  # 输出 True
print(s2.isalnum())  # 输出 False ,因包含'!'非字母数字字符
print(s3.isalnum())  # 输出 False ,字符串为空

4.3 str.isalpha()

  • 功能:判断字符串 str 中的所有字符是否都是字母,且字符串至少有一个字符。满足条件返回 True ,否则返回 False 。
  • 示例
s1 = "abc"
s2 = "abc123"
s3 = ""
print(s1.isalpha())  # 输出 True
print(s2.isalpha())  # 输出 False ,因包含数字
print(s3.isalpha())  # 输出 False ,字符串为空

4.4 str.join(iterable)

  • 功能:以 str 作为分隔符,将可迭代对象 iterable(如列表、元组等,其中元素需为字符串)中的字符串拼接起来,返回拼接后的新字符串。
  • 示例
s = "-"
lst = ["apple", "banana", "cherry"]
result = s.join(lst)
print(result)  # 输出 apple-banana-cherry

4.5 str.split(sep=None, maxsplit=-1)

  • 功能:根据分隔符 sep 对字符串 str 进行分割。若 sep 为 None,则按空白字符(空格、换行符等)分割;maxsplit 限制最多分割次数,-1 表示无限制。返回分割后的字符串列表。
  • 示例
s = "hello world python"
print(s.split())  # 输出 ['hello', 'world', 'python']
print(s.split('l', 1))  # 按'l'分割,最多分割1次,输出 ['he', 'lo world python']

4.6 str.startswith(prefix[, start[, end]])

  • 功能:检查字符串 str 从索引 start(包含)到索引 end(不包含)的部分是否以指定的 prefix 开头,满足则返回 True,否则返回 Falsestart 和 end 为可选参数,省略时检查整个字符串。
  • 示例
s = "hello world"
print(s.startswith('he'))  # 输出 True
print(s.startswith('wo', 6))  # 从索引6开始检查是否以'wo'开头,输出 True

二、数字类型

2.1 数字类型介绍

用途:Python 的数字类型在数学计算(如加减乘除、幂运算等)和统计(如求均值、方差等)场景中广泛应用 。

种类

    • 整数:表示没有小数部分的数,像 1-5 等。Python 中的整数没有大小限制,可表示非常大或非常小的整数。
    • 浮点数:用于表示带有小数部分的数,如 3.14-2.5 。在计算机中,浮点数采用二进制表示,可能存在精度问题,例如 0.1 + 0.2 并不精确等于 0.3 。
    • 复数:形式为 a + bj ,其中 a 是实部,b 是虚部 ,j 表示虚数单位(在 Python 中用 j 表示),例如 3 + 4j 。复数常用于科学计算、信号处理等领域。

创建方式:可以通过直接写数字字面值(如 53.14 )创建数字,也能通过内置函数(如 int()float() 等)和运算符(如 +* 等)的运算结果来创建 。比如 a = int('5') ,b = 2 + 3 。

2.2 数字类型函数介绍

关于 Python 中数字类型常见运算如下:

算术运算:

  1. 加法(x + y:计算 x 和 y 两个数字的总和。例如 3 + 5 结果为 8 ,可以用于整数、浮点数运算,也支持不同数字类型混合运算,如 3 + 2.5 结果为 5.5 。
  2. 减法(x - y:求 x 与 y 的差值。比如 7 - 4 结果是 3 。
  3. 乘法(x * y:计算 x 和 y 的乘积。像 4 * 6 等于 24 。
  4. 除法(x / y:返回 x 除以 y 的商,结果是浮点数。例如 9 / 2 结果为 4.5 。
  5. 整除(x // y:得到 x 除以 y 的商的整数部分,舍去小数部分。如 9 // 2 结果是 4 。
  6. 取余(x % y:求出 x 除以 y 的余数。例如 9 % 2 结果为 1 。

符号运算:

  1. 取反(-x:改变数字 x 的符号,正数变为负数,负数变为正数 。比如 x = 5 ,-x 就是 -5 ;x = -3 ,-x 则是 3 。
  2. 保持不变(+x:对数字 x 不做任何改变,x 是多少,+x 就是多少 。例如 x = 7 ,+x 依然是 7 。

数值处理运算:

  1. abs(x):返回数字 x 的绝对值,若 x 是整数或浮点数,就是其到原点的距离;若 x 是复数,则返回复数的模。例如 abs(-5) 结果为 5 ,abs(3 + 4j) 结果为 5.0 。
  2. int(x):将 x 转换为整数。若 x 是浮点数,会向下取整,如 int(3.8) 结果是 3 ;若 x 是字符串,只要字符串内容是合法整数形式(如 '5' ),就能转换为对应整数。
  3. float(x):把 x 转换为浮点数。若 x 是整数,会在末尾添加 .0 ,如 float(5) 结果是 5.0 ;若 x 是字符串,只要字符串内容是合法数字形式(如 '3.14' ),就能转换为浮点数。
  4. complex(re, im):创建一个复数,实部为 re ,虚部为 im ,im 默认为 0 。比如 complex(3) 得到 3+0j ,complex(3, 4) 得到 3 + 4j 。
  5. c.conjugate():对于复数 c ,返回其共轭复数,即实部不变,虚部取反。例如复数 c = 3 + 4j ,c.conjugate() 结果是 3 - 4j 。

2.3 数字类型转换

Python 是 强类型编程语言,意味着变量的类型一旦确定,就不会自动进行类型转换(除非是显式操作),不同类型的数据在进行运算时,不会像弱类型语言那样自动隐式转换,以保证数据类型的安全性和严谨性 。

(1)类型查看

使用 type() 函数可以获取对象的类型。例如:

a = 5
print(type(a))  # 输出 <class 'int'>
b = 3.14
print(type(b))  # 输出 <class 'float'>

(2)类型转换

  • int():用于将符合条件的值转换为整数。可以将浮点数转换为整数(向下取整,如 int(3.8) 结果为 3 );也能将表示整数的字符串(如 '5' )转换为整数 ,但字符串内容必须是合法整数形式,否则会报错。
  • float():可把整数或表示数字的字符串转换为浮点数。整数转换时会在末尾添加 .0 ,如 float(5) 结果是 5.0 ;只要字符串内容是合法数字形式(如 '3.14' )就能转换为浮点数。

2.4 数字与字符串转换

(1)数字转字符串

使用 str() 函数可以将数字转换为字符串。无论是整数、浮点数还是复数,都能通过该函数转换。例如:

num_int = 5
num_float = 3.14
num_complex = 2 + 3j
print(str(num_int))  # 输出 '5'
print(str(num_float))  # 输出 '3.14'
print(str(num_complex))  # 输出 '(2+3j)'

(2)字符串转整数

int() 函数用于将字符串转换为整数,但要求字符串的内容必须是合法的整数表示形式,比如 '123' 。如果字符串中包含非数字字符(除了正负号 ),转换时就会报错。示例如下:

s1 = '10'
s2 = 'abc'
print(int(s1))  # 输出 10
# print(int(s2))  # 会报错,因为 'abc' 不是合法整数形式

注意:int()只能将只含整数的字符串转换,否则报错。

三、补充

Python、Java 都属于强类型编程语言。在这类语言中,每个变量都有明确且固定的数据类型,一旦定义好就不能随意改变。

3.1 类型稳定性

数据类型不会因为运算等操作而自动改变。例如在 Python 中,整数 5 与浮点数 3.14 相加,5 不会自动转换为浮点数再运算,而是系统会根据规则将整数隐式转换为浮点数后进行运算,但这不是变量类型中途改变,而是遵循语言的运算规则。又如在 Java 中,定义 int a = 5; ,a 的类型始终是 int ,不会因为参与运算就变成其他类型。

3.2 类型转换方式

若要改变数据类型,必须通过显式的类型转换操作。在 Python 中,使用 int()float()str() 等函数进行转换;在 Java 中,使用强制类型转换(如 (int)3.14 把 3.14 强制转换为整数 )或者自动装箱拆箱机制(针对基本数据类型和包装类之间)等方式。 显式转换能让开发者清楚知道类型变化,增强代码的可读性和稳定性。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Navicat 全量增量数据库迁移

在使用 Navicat 进行数据库迁移时&#xff0c;除了常见的“全量迁移”&#xff08;一次性迁移所有数据和结构&#xff09;&#xff0c;有时还需要支持 增量迁移&#xff08;只迁移新增或修改的数据&#xff09;。下面我将详细讲解如何通过 Navicat 实现&#xff1a;&#x1f50…

css初学者第五天

<1>css的三大特性1.1 层叠性相同选择器给设置相同的样式&#xff0c;此时一个样式就会覆盖&#xff08;层叠&#xff09;另一份冲突的样式。层叠式主要解决样式冲突的问题。层叠性原则&#xff1a;-样式冲突&#xff0c;遵循的原则是就近原则&#xff0c;哪个样式离结构近…

从神经网络语言模型(NNLM)到Word2Vec:自然语言处理中的词向量学习

语言模型 语言(人说的话)模型(完成某个任务) 任务: 概率评估任务:在两句话中&#xff0c;判断哪句话出现的概率大(哪句话在自然语言中更合理)生成任务:预测词语,我明天要____ 统计语言模型 用统计的方法解决上述的两个任务 核心思想 给定一个词序列&#xff0c;计算该序列出现的…

PID学习笔记5-双环PID

在学习江协科技PID课程时&#xff0c;做一些笔记&#xff0c;对应视频3-1&#xff0c;对应代码&#xff1a;1313-双环PID定速定位置控制-代码封装main.c:#include "stm32f10x.h" // Device header #include "Delay.h" #include "OLE…

C#vb.net中Interlocked类实现原子操作加减计算,涵盖状态切换、计数控制等常见场景

以下是 C# 中使用 int 类型结合 Interlocked 类实现原子操作的完整示例&#xff0c;涵盖状态切换、计数控制等常见场景&#xff1a; 完整代码示例csharp using System; using System.Threading;/// <summary> /// 基于整数类型的原子操作工具类&#xff08;线程安全&am…

RCL 2025 | LLM采样机制的新视角:来自处方性偏移的解释

1. 导读 大型语言模型&#xff08;Large Language Models, LLMs&#xff09;在自主决策场景中的应用日益广泛&#xff0c;它们需要在庞大的行动空间中进行响应采样&#xff08;response sampling&#xff09;。然而&#xff0c;驱动这一采样过程的启发式机制仍缺乏深入研究。本…

08 ABP Framework Blazor UI

ABP Framework Blazor UI 架构 overview ABP Blazor UI 系统构建在 Blazorise 组件库之上&#xff0c;为构建数据驱动应用提供结构化方法&#xff0c;包含 CRUD 操作、主题和本地化的一致模式。 #mermaid-svg-QAvWlELsLhZgYXHu {font-family:"trebuchet ms",verdana,…

JUC学习笔记-----LinkedBlockingQueueConcurrentLinkedQueueCopyOnWriteArrayList

LinkedBlockingQueue基本的入队出队初始化public class LinkedBlockingQueue<E> extends AbstractQueue<E>implements BlockingQueue<E>, java.io.Serializable {// 静态内部类 Node&#xff0c;用于存储队列元素及维护节点间关系static class Node<E>…

小杰python高级(six day)——pandas库

1.数据可视化用于绘制 DataFrame 数据图形&#xff0c;它允许用户直接从 DataFrame 创建各种类型的图表&#xff0c;而不需要使用其他绘图库&#xff08;底层实际上使用了 Matplotlib&#xff09;。&#xff08;1&#xff09;plotDataFrame.plot(*args, **kwargs)功能&#xff…

第十六届蓝桥杯青少组C++省赛[2025.8.9]第二部分编程题(1 、庆典队列)

参考程序&#xff1a;#include <iostream> using namespace std;int main() {int n, A;cin >> n >> A; // 输入&#xff1a;n 和 A&#xff0c;用空格隔开cout << n / A; // 整数相除&#xff0c;自动向下取整return 0; }

C++进阶:智能指针

目录1. RAII与智能指针2. C库中的智能指针2.1 智能指针auto_ptr2.2 智能指针unique_ptr2.3 智能指针shared_ptr3. shared_ptr的循环引用4. 智能指针的定值删除器1. RAII与智能指针 上一篇文章学习了异常相关的知识&#xff0c;其中遗留了一个异常安全相关的问题。那就是异常的抛…

Tkinter 实现按钮鼠标悬浮提示:两种方案(继承Frame与不继承)

在 Tkinter 桌面应用开发中&#xff0c;为按钮添加“鼠标悬浮提示”是提升用户体验的常用功能——无需点击&#xff0c;只需将鼠标挪到按钮上方&#xff0c;就能自动显示按钮功能说明。本文将详细介绍两种实现方案&#xff1a;不继承 Frame 类&#xff08;快速简洁版&#xff0…

20250814 最小生成树总结

引子 啊啊额&#xff0c;从一张图里抽出几条边&#xff0c;组成一棵树&#xff0c;无环n−1n-1n−1条边&#xff0c;就是生成树。那么边权和最小的生成树就叫最小生成树&#xff0c;最大生成树同理。 kruskal最小生成树 要求kruskal最小生成树&#xff0c;我们首先用结构体数组…

数据大集网:实体店获客引流的数字化引擎,解锁精准拓客新密码​

​在实体店面临流量焦虑、获客成本攀升的当下&#xff0c;实体店获客引流工具的重要性愈发凸显。如何在激烈的市场竞争中精准触达目标客户、构建可持续的客流增长模式&#xff1f;数据大集网凭借其创新的智能获客体系与全链路服务能力&#xff0c;正成为万千实体店突破增长瓶颈…

nginx --ssl证书生成mkcert

github https://github.com/FiloSottile/mkcert/releases网盘下载地址 https://pan.baidu.com/s/1XI0879pqu7HXZMnmQ9ztaw 提取码: 1111windows使用示例

守拙以致远:个人IP的长青之道|创客匠人

2025年被认为是AI应用全面爆发的一年。各种人工智能工具在写作、制图、剪辑等领域广泛使用&#xff0c;大大提升了个人和团队的工作效率。对于个人IP而言&#xff0c;这类工具的出现确实带来了新的机会&#xff0c;但也伴随着一种现象——一些人开始过度依赖甚至神化AI&#xf…

USB 3.0 LTSSM 状态机

USB2.0在电源供应后&#xff0c;通过Pull Up D-来决定枚举LS&#xff0c;Pull Up D有一个USB高速握手过程&#xff0c;来决定HS FS。USB3.0则会通过链路训练&#xff08;Link Training&#xff09;&#xff0c;来准备USB3.0通信。每当我们插上USB线的时候&#xff0c;对于3.0的…

MySQL窗口函数与PyMySQL以及SQL注入

MySQL窗口函数与PyMySQL实战指南&#xff1a;从基础到安全编程 引言 在数据处理和分析领域&#xff0c;MySQL作为最流行的关系型数据库之一&#xff0c;其窗口函数功能为数据分析提供了强大的支持。同时&#xff0c;Python作为数据分析的主要语言&#xff0c;通过PyMySQL库与My…

高级项目——基于FPGA的串行FIR滤波器

给大家安利一个 AI 学习神站&#xff01;在这个 AI 卷成红海的时代&#xff0c;甭管你是硬核开发者还是代码小白&#xff0c;啃透 AI 技能树都是刚需。这站牛逼之处在于&#xff1a;全程用 "变量名式" 幽默 生活化类比拆解 AI&#xff0c;从入门到入土&#xff08;啊…

JPrint免费的Web静默打印控件:PDF打印中文乱码异常解决方案

文章目录JPrint是什么&#xff1f;中文乱码&#xff08;Using fallback font xxx for xxxx&#xff09;1.字体嵌入2.客户机字体安装开源地址相关目录导航使用文档端口号修改代理使用场景打印服务切换中文乱码解决方案 JPrint是什么&#xff1f; JPrint是一个免费开源的可视化静…