一.Python语言基础入门
第一章
01.初识Python
-
Python的起源:
- 1989年,为了打发圣诞节假期,Gudio van Rossum吉多·范罗苏姆(龟叔)决心开发一个新的解释程序(Python维形)
- 1991年,第一个Python解释器诞生
- Python这个名字来自龟叔所挚爱的电视剧Monty Python’s Flying Circus
-
Python适用范围:
-
IT从业者:自动化脚本(运维开发、测试开发等)
-
普通白领:自动化办公
-
后端开发:WEB应用程序
-
科学家:基于Python完成数据计算(生物、化学、物理)
-
人工智能/机器学习:基于Python开发Al程序
-
大数据开发:基于Python完成大数据任务开发(Spark、Flink)
-
02.什么是编程语言
- 以Python为例
- 用于人类和计算机进行交流的一种语言,通过编写编程语言的代码,去指挥计算机工作。 它无法直接和计算机沟通,需要翻译工具(解释器或编译器)将代码翻译成二进制,从而实现和计算机的畅顺沟通
03.Python安装
想要使用Python语言编写程序,我们必须下载Python安装包并配置Python环境,Python目前最新版本是:3.13.3(发布于2025年4月8日)
-
安装Python开发环境
-
第一步:打开网址:Welcome to Python.org
-
第二步:点击“Downloads”
-
第三步:进入后,点击“Download Python 3.13.3”
-
第四步:下载好后,点击Python安装包
-
第五步:点击“Customize installation”,并且勾选“Add python.exe to PATH”
-
第六步:默认是全选的,点击“Next”
-
第七步:点击”Browse“,选择你想要放的位置
-
第八步:然后点击”Inatall“,开始安装
-
第九步:安装成功后,会出现”Setup was successful“,然后点击”Disable path length limit“关闭路径长度的限制,最后点击close就行了
-
第十步:验证Python是否安装成功,同时按下”win+r“键,然后输入”cmd“,在命令行中输入”python“,如果出现如下情况,则证明安装成功。
-
04.第一个Python程序——”Hello world“
-
同时按下”win+r“键,然后输入”cmd“,在命令行中输入”python“,出现下面这个界面
-
然后接着输入“print(“Hello World”)”,然后按下回车,命令行便会打印“Hello World”,如下
需要注意的点:
引号和括号必须要是英文的,不能是中文的,否则会报错,如下
05.Python解释器
基本原理:计算机只认识二进制,即0和1
- 计算机并不认识Python代码,但是Python有解释器程序。安装Python环境就是在安装Python解释器程序,如下图:
- Python解释器就两个功能:
- 1.翻译代码
- 2.提交给计算机运行
- Python解释器在哪里
- 存放在:<Python安装目录>/Python.exe
- 我们在CMD(命令提示符)程序内,执行的python,就是上图的python.exe程序
- 存放在:<Python安装目录>/Python.exe
那么问题来了,当我们在命令行中输入完一行代码后,按下回车,程序就直接运行了,有什么办法可以同时运行多行代码呢?
-
思路实现
- 我们可以将代码,写入一个以”.py”结尾的文件中,使用python命令去运行它。
- 如,在Windows系统的D盘,我们新建一个名为:test.py的文件,并通过记事本程序打开它,输入如下内容:
- 在“命令提示符”程序内,使用python命令,运行它,如图:
06.Pycharm开发工具的安装
Python程序的开发有许多种方式,一般我们常见的有:
安装步骤
- 第一步:打开网址:https://www.jetbrains.com/zh-cn/pycharm/
- 第二步:点击“下载”
- 第三步:选择社区版,点击“下载”
- 第四步:点击Pycharm安装包
- 第五步:点击“下一步”
- 第六步:先选择安装路径,再点击下一步
- 第七步:选择如下按钮,然后点击下一步
- 第八步:点击“安装”
- 第九步:等待安装完成
- 第十步:点击“完成”
- 第十一步:点击安装好后的Pycharm
- 第十二步:点击下一个
- 第十三步:勾选条款,然后点击“继续”
- 第十四步:点击”新建项目“
- 第十五步:按照下图操作,然后点击创建
- 第十六步:得到下图
- 第十七步:新建文件,鼠标右键点击”1“,创建Python文件“test.py”
- 第十八步:在”test.py“文件中写入”print(“Hello world”)“,然后点击红框处的绿色三角形,就会在底部的终端中显示输出结果
07.Pycharm开发工具的使用
-
如何修改主题
-
Pycharm的默认主题是黑色
-
第一步:点击右上角齿轮按钮,找到”主题“并点击
-
第二步:选择主题,有5个常用的主题可以选择,也可以选择获取更多主题
-
-
修改默认字体和大小
-
第一步:点击右上角齿轮按钮,找到”设置“并点击
-
第二步:按照下面的步骤设置字体和字体大小
-
第三步:设置快捷键改变字体大小,点击设置中的”按键映射“,然后在右边的搜索框中输入”字体“,接着搜索,出现下面的结果
-
第四步:先点击上图中的”减少字体大小“,再点击”添加鼠标快捷方式“,如下图
-
第五步:出现下图后,同时点击”Ctrl+鼠标滚轮下滑“
-
第六步:出现下图后,就说明设置成功了,然后点击确定
-
第七步:按照”设置减小字体大小“的方法,设置”增大字体大小“的快捷键,如下
-
第八步:都设置完毕后,记住一定要点击“应用”
-
-
装一些好用的插件
因为在安装最新版本的Pycharm时已经捆绑选择了中文插件,所以就不需要再次安装中文插件了!!!!
- 安装翻译插件 ----------- 碰到不懂的英文,可以快速了解意思
- 第一步:进入设置界面
- 第二步:按照下图操作
- 第三步:安装好后,重启Pycharm
- 第四步:用鼠标选中要翻译的单词,然后单击右键,点击”翻译“,出现下图
- 安装翻译插件 ----------- 碰到不懂的英文,可以快速了解意思
-
常用快捷键
-
ctrl + alt + s:打开软件设置
-
ctrl + alt + l:一键整理代码
-
ctrl + d:复制当前行代码
-
shift + alt + 上\下:将当前行代码上移或下移
-
crtl + shift + f10:运行当前代码文件
-
shift + f6:重命名文件
如果遇到shift+f6快捷键不行的,可以在依次点击:设置>插件,然后在插件中搜索”Imefix“,然后下载对应的插件即可
-
ctrl + a:全选
-
ctrl + c\v\x:复制、粘贴、剪切
-
ctrl + z:撤回
-
ctrl + f:搜索
-
第二章
01.数据类型
Python中常用的数据类型有六种:数字(Number)、字符串(String)、列表(List)、元组(Tuple)、集合(Set)、字典(Dictionary)。其中数字类型又包括:整数(Int)、浮点数(float)、复数(complex)、布尔(bool),具体如下图:
-
1.整数
整数是正数或负数,没有小数点的整数,例如:
age = 23 high = 176
这里,age 和 high 都是整数。你可以对整数执行各种数学运算,例如:加(+)、减(-)、乘(*)、除(/)、地板除(//)、取模(%)、指数(**),详细的用法会在“运算符小节”讲到
-
2.浮点数(小数)
浮点数是有小数点的数字,例如:
pi = 3.14159 gravity = 9.81
浮点数也可以像整数一样用于计算
-
3.复数
复数有一个实部和虚部,用’j’表示,例如:
complex_number = 3 + 4j
-
4.布尔
布尔表示真值,例如:
is_xiaogudu_gudu = True is_xiaogudu_ugly = False
True和False在代码中起到决策的重要作用
-
5.字符串(文本)
字符串(string),又称文本,是由任意数量的字符如中文、英文、各类符号、数字等组成。所以叫做字符的串,如:“小孤独”,“1314”,“!@#$%^&”
字符串是字符序列,用单引号或双引号括起来,例如:
# 单行字符串 name = "xiaogudu" message = 'Hello, how are you?'# 多行字符串,使用三引号 long_text = """这是 一个多行 字符串字面量。"""
字符串有很多方法,例如:
len()
方法用来计算字符串的长度,upper()
方法用来将字符串中的所有小写字母转换为大写字母,并返回转换后的新字符串,等等…之后会详细学习 -
6.列表
列表是有序的、可变的序列,用方括号表示,例如:
friends = ["伊地知虹夏", "喜多郁代", "山田凉"] numbers = [1, 2, 3, 4, 5]
列表是多功能的,允许各种操作:
friends.append("广井菊里")# 变成['伊地知虹夏', '喜多郁代', '山田凉', '广井菊里'] friends.remove("喜多郁代") # ['伊地知虹夏', '山田凉', '广井菊里'] print(friends[0]) # 通过索引访问:伊地知虹夏 print(friends[-1]) # 最后一个项目:广井菊里 print(friends[1:3]) # 切片:['山田凉', '广井菊里']
列表的具体方法之后再详细解释
-
7.元组
元组是有序的、不可变的序列,用圆括号表示,例如:
tuple_one = (10, 20, 30) tuple_two = (255, 122, 128)
元组类似于列表,但创建后不能修改:
tuple_one = (10, 20, 30) print(tuple_one[0]) # 通过索引访问:10 tuple_one[0] = 6 # 这将引发错误
元组的具体方法之后再详细解释
-
8.集合
集合是无序的唯一元素集合,用花括号表示,例如:
friends = {"伊地知虹夏", "喜多郁代", "山田凉"} numbers = {1, 2, 3, 4, 5}
集合非常适合去除重复项和集合运算
friends = {"伊地知虹夏", "喜多郁代", "山田凉"} friends.add("广井菊里") friends.remove("喜多郁代") print("山田凉" in friends) # 检查成员资格:Trueset1 = {1, 2, 3} set2 = {3, 4, 5} print(set1.union(set2)) # 并集:{1, 2, 3, 4, 5} print(set1.intersection(set2)) # 交集:{3}
集合的具体方法之后再详细解释
-
9.字典
字典存储键值对,用花括号表示,例如:
person = { "name": "小孤独", "age": 16, "country": "Japan" }
字典对于结构化数据非常有用:
person = { "name": "小孤独", "age": 16, "country": "Japan" }print(person["name"]) # 通过键访问:小孤独 person["job"] = "Band guitarist" # 添加新的键值对 del person["age"] # 删除键值对 print(person.keys()) # 获取所有键 print(person.values()) # 获取所有值
字典的具体方法之后再详细解释
02.数据类型的转换
有时候需要将数据从一种类型转换为另一种类型。Python为此提供了内置函数:
-
转换为整数
int()
-
函数:
int(x)
-
适用场景:将字符串、浮点数、布尔值等转换为整数
-
注意:非数字字符串或非整型浮点字符串会报错(如
int("3.14")
、int(5.0)
)int("123") # 123(字符串转整数) int(3.14) # 3(浮点数转整数,截断小数,会丢失精度) int(True) # 1(布尔值转整数) int("1010", 2) # 10(二进制字符串转十进制)
-
-
转换为浮点数
float()
-
函数:
float(x)
-
适用场景:将字符串、整数、布尔值等转换为浮点数
-
函数:
float(x)
float("3.14") # 3.14(字符串转浮点) float(5) # 5.0(整数转浮点) float(False) # 0.0(布尔值转浮点)
-
-
转换为字符串
str()
-
函数:
str(x)
-
适用场景:任何类型的数据都可以转换成字符串
-
注意:对复杂结构(如列表)直接转换可能不符合预期,需使用
json.dumps()
或自定义格式化str(100) # "100"(整数转字符串) str(3.14) # "3.14"(浮点转字符串) str([1, 2, 3]) # "[1, 2, 3]"(列表转字符串)
-
-
转换为布尔值
bool()
-
转换为列表
list()
-
函数:
list(x)
-
适用场景:将元组、集合、字符串、字典(仅保留键)等转换为列表
print(list((1, 2, 3))) # [1, 2, 3](元组转列表) print(list({"1",2,"a"})) # (集合转列表),输出顺序可能为 ['1', 2, 'a'] 或其他,集合具有无序性 print(list("abc")) # ['a', 'b', 'c'](字符串转列表) print(list({"a": 1}) ) # ['a'](字典转键列表)
-
-
转换为元组
tuple()
-
函数:
tuple(x)
-
适用场景:将列表、集合、字符串等转换为不可变的元组
print(tuple([1, 2, 3])) # (1, 2, 3) (列表转元组) print(tuple({1,2,3})) # (1, 2, 3) (集合转元组) print(tuple("abc")) # ('a', 'b', 'c') (字符串转元组)
-
-
转换为集合
set()
-
函数:
set(x)
-
适用场景:去重或转换字符串、列表、元组等为集合
print(set([1, 2, 2, 3])) # {1, 2, 3}(去重,列表转集合) print(set("hello")) # {'h', 'e', 'l', 'o'} (字符串转集合) print(set((1, 2, 3))) # {'c', 'b', 'a'} (元组转集合)
-
-
转换为字典
dict()
-
函数:
dict(x)
-
适用场景:将键值对结构(如列表嵌套元组)转换为字典
print(dict([(1, 'a'), (2, 'b')])) # {1: 'a', 2: 'b'} ,列表嵌套元组转字典 print(dict(x=1, y=2)) # {'x': 1, 'y': 2}
-
03.字面量
-
什么是字面量?
-
字面量就是在代码中,被写下来固定的值,Python的9种数据类型就是字面量,例如:数字字面量,整数字面量,复数字面量,字典字面量。
-
举个例子:
print("Hello, World!")
在这行代码中,“Hello, World!” 就是一个字面量。它是一个固定的值,我们告诉Python去显示它。
-
-
Python字面量的类型
-
整数字面量
这些是正的或负的整数,没有小数点。
age = 23 high = 176
这里,23和176是整数字面量。它们表示精确的、整数值
-
浮点数字面量
这些是有小数点的数字。
pi = 3.14159 gravity = 9.81
3.14159和9.81是浮点数字面量。它们允许我们处理更精确的数值。
-
复数字面量
这些数字有实部和虚部。
complex_number = 3 + 4j
这里,3 + 4j是一个复数字面量,3是实部,4是虚部。它在高级数学计算中使用。
-
布尔字面量
布尔字面量表示真值。
is_xiaogudu_gudu = True is_xiaogudu_ugly = False
True和False是布尔字面量,它们 在代码中用于条件判断。
-
字符串字面量
字符串是字符序列,用单引号(‘’)或双引号(“”)括起来。
# 单行字符串 name = "xiaogudu" message = 'Hello, how are you?'# 多行字符串,使用三引号 long_text = """这是 一个多行 字符串字面量。"""
-
列表字面量
列表是有序的项的集合(可以更改)
friends = ["伊地知虹夏", "喜多郁代", "山田凉"] numbers = [1, 2, 3, 4, 5]
方括号[]内的项创建列表字面量。
-
元组字面量
元组类似于列表,但它们是不可变的(不能更改)。
tuple_one = (10, 20, 30) tuple_two = (255, 122, 128)
圆括号()内的项创建元组字面量。
-
集合字面量
集合是无序的唯一项的集合。
friends = {"伊地知虹夏", "喜多郁代", "山田凉"} numbers = {1, 2, 3, 4, 5}
大括号{}内的项(但没有键值对)创建集合字面量。
-
字典字面量
字典存储键值对。
person = {"name": "xiaogudu", "age": 16, "city": "神奈川县"}
大括号{}内的键值对创建字典字面量。
-
04.注释
-
注释:在程序代码中对程序代码进行解释说明的文字
-
注释的作用:
- 注释不是程序,不能被执行,只是对程序代码进行解释说明,让别人可以看懂程序代码的作用,能够大大增强程序的可读性。
-
注释的分类:
-
单行注释:
-
以
#
开头,#
右边的所有文字当作说明,而不是真正要执行的程序,起辅助说明作用。 -
单行注释一般用于对一行或一小部分代码进行解释
-
# 我是单行注释 print("Hello World!!!")
注意:#号和注释内容一般建议以一个空格隔开
-
-
多行注释:
-
以 ”一对三个双引号“ 引起来(“”“注释内容”“”)来解释说明一段代码的作用使用方法
-
多行注释一般对:Python文件、类或方法进行解释
-
"""我是多行注释我是多行注释我是多行注释 """ print("Hello World!!!") print("Hello World!!!")
-
-
05.变量
-
变量:在程序运行时,能储存计算结果或能表示值的抽象概念。简单来说变量就是在程序运行时,记录数据用的
-
变量的定义格式:
-
创建变量:
-
删除变量:
在 Python 中,我们可以使用
del
关键字删除不再需要的变量name = "小孤独" #创建变量并赋值 print(name) # 输出“小孤独” del name # 删除变量 print(name) # 这将引发一个错误,说明变量删除成功
-
变量地址:
Python 中的每个变量在计算机内存中都有一个唯一的地址,就像街道上的每座房子都有自己的地址一样。我们可以使用
id()
函数找出变量所在的位置:name = "小孤独" print("name 的内存地址:", id(name)) #打印语句会输出“name 的内存地址: 3141631801696”
上述的数字就是变量在计算机内存中的地址
-
变量类型:
Python 允许我们使用·
type()
函数检查变量所持有的数据类型:age = 16 name = "小孤独" print(type(age)) # 打印语句输出“<class 'int'>” print(type(name)) # 打印语句输出“<class 'str'>”
这告诉我们
age
是一个整数(int),而name
是一个字符串(str) -
变量的类型转换:
有时,我们需要改变变量的类型。这个过程称为类型转换。
age = 16 print(type(age)) # 打印语句输出“<class 'int'>” age_str = str(age) # 将变量从数字类型转换成字符串类型 print(type(age_str)) # 打印语句输出“<class 'str'>”
-
变量命名约定:
-
变量以字母或下划线开头
-
变量可以包含字母、数字和下划线
-
变量区分大小写
-
变量不能是 Python 关键字
-
好名字:
age = 16 name = "小孤独" hobby = "喜欢弹吉他"
-
坏名字:
2film = "电影" # 不能以数字开头 my-age = 20 # 不允许使用连字符
-
-
全局变量和局部变量:
-
全局变量:
全局变量就像派对的主持人 ,它们在整个程序中都是已知的:
global_var = "我无处不在!"def use_global():print(global_var) # 打印“我无处不在!”use_global() # 这可以正常工作 print(global_var) # 打印“我无处不在!”
-
局部变量:
在函数内部创建的变量称为局部变量。它们就像只存在于该函数中的秘密:
def party_planner():local_var = "我只在这个函数中存在"print(local_var)party_planner() print(local_var) # 这将引发一个错误
-
-
常量:
常量是值不应该改变的变量。在 Python 中,我们使用全部大写名称来表示常量:
PI = 3.14159 MAX_GUESTS = 50print("Pi 总是", PI) print("我们不能有超过", MAX_GUESTS, "个宾客")
06.标识符
-
什么是标识符
- 在Python程序中,我们可以给很多东西起名字,比如:
变量的名字,方法的名字,类的名字,等等 - 这些名字,我们把它统一的称之为标识符,用来做内容的标识。
所以,标识符就是用户在编程的时候所使用的一系列名字,用于给变量、类、方法等命名。
- 在Python程序中,我们可以给很多东西起名字,比如:
-
标识符命名规则(需要强制遵守)
Python中,标识符命名的规则主要有3类:
-
内容限定
- 只允许出现:**英文、中文、数字、下划线(_)**这四类元素
- 注意:1.不推荐使用中文;2.数字不能在开头
-
大小写敏感
-
字母的大小写是完全能够分开的,例如:
name = "小孤独1" Name = "小孤独2" print(name) # 输出:小孤独1 print(Name) # 输出:小孤独2
-
-
不可使用关键字
-
关键字的定义:
以下是 Python 3.10 及更高版本的关键字列表(共 35 个):
False None True and as assert async await break class continue def del elif else except finally for from global if import in is lambda nonlocal not or pass raise return try while with yield match case
用途分类:
逻辑值:True, False, None逻辑运算:and, or, not流程控制:if, elif, else, for, while, break, continue函数与类:def, return, class, lambda, pass, raise, yield异常处理:try, except, finally, with, assert作用域:global, nonlocal模块操作:import, from, as异步编程:async, await
-
-
-
标识符命名规范(建议遵守)
不同的标识符有不同的命名规范,但是现在只学到了变量,所以只讲变量的命名规范:
变量的命名规范:
07.运算符
-
算数运算符
# 加法 print(5 + 3) # 输出:8# 减法 print(10 - 4) # 输出:6# 乘法 print(3 * 4) # 输出:12# 除法 print(20 / 5) # 输出:4.0# 整除/地板除(向下取整到最近的整数) print(17 // 3) # 输出:5# 取模(除法的余数) print(17 % 3) # 输出:2# 幂运算 print(2 ** 3) # 输出:8
-
比较运算符
这些运算符就像编程比赛中的评委——它们比较值并返回
True
或False
。# 等于 print(5 == 5) # 输出:True# 不等于 print(5 != 3) # 输出:True# 大于 print(7 > 3) # 输出:True# 小于 print(2 < 8) # 输出:True# 大于或等于 print(5 >= 5) # 输出:True# 小于或等于 print(3 <= 1) # 输出:False
-
逻辑运算符
# and 运算符 print(True and True) # 输出:True print(True and False) # 输出:False# or 运算符 print(True or False) # 输出:True print(False or False) # 输出:False# not 运算符 print(not True) # 输出:False print(not False) # 输出:True
-
赋值运算符
这些运算符就像Python中的搬运工——它们为变量赋值
# 简单赋值运算符 x = 5 print(x) # 输出:5# 复合赋值运算符(下面7个都是) # 加法赋值运算符 x += 3 # 等同于 x = x + 3 print(x) # 输出:8# 减法赋值运算符 x -= 2 # 等同于 x = x - 2 print(x) # 输出:6# 乘法赋值运算符 x *= 2 # 等同于 x = x * 2 print(x) # 输出:12# 除法赋值运算符 x /= 3 # 等同于 x = x / 3 print(x) # 输出:4.0# 取模赋值运算符 x %= 3 # 等同于 x = x % 3 print(x) # 输出:1.0# 幂赋值运算符 x **= 3 # 等同于 x = x ** 3 = x^3 print(x) # 输出:1.0# 取整除赋值运算符 x //= 2 # 等同于 x = x // 2 print(x) # 输出:0.0
-
位运算符
# 1.按位与(&) # 功能:两个二进制数的对应位都为 1 时,结果位才为 1,否则为 0 a = 5 # 二进制 0000 0101(补码) b = 3 # 二进制 0000 0011(补码) result = a & b print(result) # 输出 1 (二进制 0000 0001)# 2.按位或(|) # 两个二进制数的对应位有一个为 1,结果位就为 1 a = 5 # 0000 0101(补码) b = 3 # 0000 0011(补码) result = a | b print(result) # 输出 7 (0000 0111)# 3.按位异或(^) # 功能:两个二进制数的对应位不同时,结果位为 1,否则为 0 a = 5 # 0000 0101(补码) b = 3 # 0000 0011(补码) result = a ^ b print(result) # 输出 6 (0000 0110)# 4.按位取反(~) # 功能:将二进制数的每一位取反(0 变 1,1 变 0) a = 5 # 二进制 0000 0101(补码) result = ~a print(result) # 输出 -6(即二进制补码 1111 1010)# 5.左移(<<) # 功能:将二进制数的所有位向左移动指定位数,右侧补 0 a = 5 # 0000 0101(补码) result = a << 1 # 左移 1 位 print(result) # 输出 10 (0000 1010)# 6.右移(>>) # 功能:将二进制数的所有位向右移动指定位数,左侧补符号位(正数补 0,负数补 1) a = 5 # 0000 0101(补码) result = a >> 1 # 右移 1 位 print(result) # 输出 2 (0000 0010)b = -8 # 1111 1000(补码) result = b >> 2 # 右移 2 位(负数保留符号) print(result) # 输出 -2
-
身份运算符
身份运算符用于比较两个对象的内存位置
# is 运算符 x = [1, 2, 3] y = [1, 2, 3] z = xprint(x is z) # 输出:True print(x is y) # 输出:False print(x == y) # 输出:True# is not 运算符 print(x is not y) # 输出:True
-
成员运算符
这些运算符就像俱乐部门口的保镖——它们检查一个值是否是序列的成员
# in 运算符 fruits = ['apple', 'banana', 'cherry'] print('banana' in fruits) # 输出:True# not in 运算符 print('mango' not in fruits) # 输出:True
-
运算符的优先级
优先级 运算符 描述 1 () 括号 2 ** 幂运算 3 +x, -x, ~x 一元加,一元减,按位非 4 *, /, //, % 乘法,除法,整除,取模 5 +, - 加法,减法 6 <<, >> 按位左移,按位右移 7 & 按位与 8 ^ 按位异或 9 | 按位或 10 <, >, <=, >=, ==, !=, is, is not, in, not in 比较运算符,身份运算符,成员运算符 11 not 逻辑运算符非 12 and 逻辑运算符与 13 or 逻辑运算符或 14 =, +=, -=, *=, /=, %=, **=, //= 赋值运算符
08.字符串扩展
-
字符串的三种定义方式
-
字符串在Python中有3种定义形式:
-
1.单引号定义法:name = ‘小孤独’
-
2.双引号定义法:name = "小孤独 "
-
3.三引号定义法:name = " " "小孤独 " " "
需要注意的是,三引号定义法,和多行注释的写法一样,同样支持换行操作。使用变量接收它,它就是字符串;不使用变量接收它,就可以作为多行注释使用。
-
-
如何定义本身就包含引号的字符串
-
1.单引号定义法,可以内含双引号
# 在字符串内包含双引号 name = '"小孤独"' print(name) # 输出:"小孤独"
-
2.双引号定义法,可以内含单引号
# 在字符串内包含单引号 name = "'小孤独'" print(name) # 输出:'小孤独'
-
3.可以使用转移字符(\)来将引号解除效用,变成普通字符串
# 使用转义字符(\)解除引号的效用 name = " \"小孤独\" " print(name) # 输出:"小孤独" name = ' \'小孤独\' ' print(name) # 输出:'小孤独'
-
-
-
字符串拼接
-
如果我们有两个字符串(文本)字面量,可以将其拼接成一个字符串,通过+号即可完成,如:
# 字符串字面量之间的拼接 print("小孤独" + "学Python") # 输出:小孤独学Python
-
不过一般,单纯的2个字符串字面量进行拼接显得很呆,一般,字面量和变量或变量和变量之间会使用拼接,如:
# 字符串字面量和字符串变量的拼接 name = "小孤独" study = "学Python" print("我是:"+name +",我要:"+ study) # 输出:我是:小孤独,我要:学Python
-
字符串无法和非字符串类型直接进行拼接
-
-
字符串格式化
-
1.使用
%
运算符-
%s
是一个字符串的占位符,而 “World” 是替换它的值print("Hello, %s!" % "World") # 输出:Hello, World!
-
你可以使用多个占位符
注意:多个变量占位,变量要用括号括起来,并按照占位的顺序填入
name = "小孤独" age = 16 print("My name is %s and I am %s years old." % (name, age)) # 输出:My name is 小孤独 and I am 16 years old.
-
Python中支持非常多的数据类型占位,最常用的如下:
格式符号 转化 %s 将内容转换成字符串,放入占位位置 %d 将内容转换成整数,放入占位位置 %f 将内容转换成浮点型,放入占位位置 示例:
name ="小孤独" age = 16 height = 1.56 message ="我是%s,我的年龄是:%d,我的身高是:%f米" %(name, age, height) print(message) # 输出:我是:小孤独,我的年龄是:16,我的身高是:1.560000米
-
-
2.
str.format()
方法-
Python 2.6+ 引入的更灵活的格式化方法,使用
{}
作为占位符 -
基本用法:
print("Name: {}, Age: {}".format("小孤独", 16)) # 位置参数 print("Name: {1}, Age: {0}".format(16, "小孤独")) # 索引参数 print("Name: {name}, Age: {age}".format(name="小孤独", age=16)) # 关键字参数
-
格式控制:
# 数字格式化 print("PI: {:.2f}".format(3.14159)) # 输出:PI: 3.14(保留两位小数) print("Hex: {:x}".format(255)) # 输出:Hex: ff(十六进制)# 对齐与填充 print("{:>10}".format("Hello")) # 右对齐,宽度10 → ' Hello' print("{:<10}".format("Hello")) # 左对齐,宽度10 → 'Hello ' print("{:*^10}".format("Hi")) # 居中并用*填充 → '****Hi****'# 千位分隔符 print("{:,}".format(1000000)) # 输出:1,000,000
-
引用对象属性或元素:
person = {"name": "小孤独", "age": 16} print("Name: {p[name]}, Age: {p[age]}".format(p=person)) # 输出:Name: 小孤独, Age: 16
-
-
3.
f-strings
(格式化字符串字面量)-
Python 3.6+ 引入,语法简洁高效,在字符串前加
f
或F
,变量直接嵌入{}
。 -
基本用法:
name = "小孤独" age = 16 print(f"Name: {name}, Age: {age}") # 输出:Name: 小孤独, Age: 16
-
表达式和函数调用:
name = "xiaogudu" age = 16 # 直接计算表达式 print(f"Next year's age: {age + 1}") # 输出:Next year's age: 17# 调用方法或函数 print(f"Name in uppercase: {name.upper()}") # 输出:Name in uppercase: XIAOGUDU
-
高级格式控制:
pi = 3.14159 print(f"PI: {pi:.2f}") # 输出:PI: 3.14 print(f"Hex: {255:x}") # 输出:Hex: ff print(f"Aligned: {'text':>10}") # 输出:Aligned: text
-
多行字符串:
name = "小孤独" age = 16 message = (f"Name: {name}\n"f"Age: {age}\n"f"Square of Age: {age ** 2}" ) print(message) # 输出:Name: 小孤独 # Age: 16 # Square of Age: 256
-
-
4.模板字符串(
string.Template
)-
Python 标准库中的简单模板,通过
$
占位符替换,适合用户可控的输入(避免安全风险)from string import Template t = Template("Name: $name, Age: $age") print(t.substitute(name="小孤独", age=16)) # 输出:Name: 小孤独, Age: 16
-
-
5.总结对比:
方法 优点 缺点 适用场景 %
格式化简单,兼容旧代码 功能有限,易出错 旧项目或简单替换 str.format()
功能强大,支持复杂格式 语法稍冗长 需要兼容 Python 2.6+ f-strings
简洁高效,支持表达式 仅限 Python 3.6+ 现代 Python 代码首选 string.Template
安全,适合用户输入 功能最少 用户可控模板
-
-
格式化的精度控制
我们可以使用辅助符号
m.n
来控制数据的宽度和精度-
m
:控制宽度,要求是数字(很少使用),设置的宽度小于数字自身,不生效 -
n
:控制小数点精度,要求是数字,会进行小数的四舍五入示例:
-
1.
%
运算符num1 = 11 num2 = 11.345 num3 = 0.001234 print("数字11宽度限制5,结果是:%5d" % num1) print("数字11.345宽度限制7,小数精度2,结果是:%7.2f" % num2) print("数字11.345不限制,小数精度2,结果是:%.2f" % num2) print("数字11.345不限制,小数精度3,结果是:%.3e" % num2) print("数字0.001234不限制,小数精度2,结果是:%.2g" % num3) # 输出: # 数字11宽度限制5,结果是: 11 (数前面有3个空格,因为宽度限制为5) # 数字11.345宽度限制7,小数精度2,结果是: 11.35 (数前面有2个空格,保留两位小数) # 数字11.345不限制,小数精度2,结果是:11.35 (保留两位小数) # 数字11.345不限制,小数精度3,结果是:1.135e+01 (科学计数法,保留三位小数) # 数字0.001234不限制,小数精度2,结果是:0.0012 (保留两位有效数字)
-
2.
str.format()
方法num1 = 11 num2 = 11.345 num3 = 0.001234 num4 = 12345678.946 print("数字11宽度限制5,结果是:{:5d}".format(num1)) print("数字11.345宽度限制7,小数精度2,结果是:{:7.2f}".format(num2)) print("数字11.345不限制,小数精度2,结果是:{:.2f}".format(num2)) print("数字11.345不限制,小数精度3,结果是:{:.3e}".format(num2)) print("数字0.001234不限制,小数精度2,结果是:{:.2g}".format(num3)) # 输出:省略 -------------------以下是%运算符没有的用法-----------------------print("数字12345678.946不限制,小数精度2,结果是:{:,.2f}".format(num4)) print("数字11.345不限制,小数精度2,结果是:{:*>10.2f}".format(num2)) print("数字0.001234不限制,小数精度2,结果是:{:.2%}".format(num3)) #输出: # 数字12345678.946不限制,小数精度2,结果是:12,345,678.95 (千分位分隔符) # 数字11.345不限制,小数精度2,结果是:*****11.35 (右对齐,宽度10,填充*) # 数字0.001234不限制,小数精度2,结果是:0.12% (百分比显示)
-
3.
f-strings
(Python 3.6+)
# 跟str.format() 方法 一样 num1 = 11 num2 = 11.345 num3 = 0.001234 num4 = 12345678.946 print(f"数字11宽度限制5,结果是:{num1:5d}") print(f"数字11.345宽度限制7,小数精度2,结果是:{num2:7.2f}") print(f"数字11.345不限制,小数精度2,结果是:{num2:.2f}") print(f"数字11.345不限制,小数精度3,结果是:{num2:.3e}") print(f"数字0.001234不限制,小数精度2,结果是:{num3:.2g}") print(f"数字12345678.946不限制,小数精度2,结果是:{num4:,.2f}") print(f"数字11.345不限制,小数精度2,结果是:{num2:*>10.2f}") print(f"数字0.001234不限制,小数精度2,结果是:{num3:.2%}") # 输出: # 省略
-
关键格式说明符
f
:固定小数位数(如.2f
)。e
/E
:科学计数法(小写/大写指数符号)。g
/G
:自动选择f
或e
,控制有效数字(如.3g
)。%
:百分比格式(自动乘100并添加%
)。,
:千分位分隔符(如{:,.2f}
)。- 对齐与填充:
<
(左对齐)、>
(右对齐)、^
(居中),结合宽度和填充字符(如:*>10.2f
)。
-
-
-
对表达式进行格式化
-
表达式的定义:
- 一条具有明确执行结果的代码语句,例如:1+1、3*4、name = “小孤独”、age =16 这些都是表达式,因为有具体结果(变量的等号右侧为结果),结果是一个数字或者字符串。
-
如何格式化表达式:
print("1*1的结果是:%d" % (1*1)) # %运算符 print("1*2的结果是:{}".format(1*2)) # str.format() print(f"2*3的结果是:{2*3}") # f-strings print("字符串在Python中的类型名是:%s" % type("字符")) # 输出: # 1*1的结果是:1 # 1*2的结果是:2.00 # 2*3的结果是:6 # 字符串在Python中的类型名是:<class 'str'>
-
09.数据输入
在Python中,我们使用input()语句
,用来获取键盘输入:
-
使用
input()语句
可以从键盘获取输入 -
使用一个变量接收(存储)
input语句
获取的键盘输入数据即可
示例:name = input("你是谁?") # 输入:小孤独 print(f"我是{name}") # 输出:我是小孤独age = input("你多大了?") # 16 print(f"我{age}岁了,类型:{type(age)}") # 输出:我16岁了,类型:<class 'str'>
从中可以发现:无论键盘输入什么类型的数据,获取到的数据永远都是字符串类型
如有不当之处,欢迎指正