文章目录
前言
本篇文章内容基于
Python 3.10.6
版本解释器
一、Python的基础语法
1.标识符
- 标识符的定义:变量名,函数名,类名,对象名等等的统称(Python中所有的命名都叫做标识符)
- 标识符的命名规则:
- 第一个字符必须是字母表中字母或下划线
_
- 标识符的其他的部分由字母、数字和下划线组成
- 标识符不能是关键字
- 标识符对大小写敏感(区分大小写)
- 第一个字符必须是字母表中字母或下划线
- 标识符命名建议:
- 见名知意:尽量使用英文单词进行命名,比如名字:name,年龄:age
- 小驼峰命名法则:第一个单词以小写开始,第二个单词以大写开头:myName
- 大驼峰命名法则:每个单词的首字母都大写:FirstName
- 下划线命名法则:user_name
2.注释
-
注释核心作用:
- 让人可以看得懂代码的作用,增加代码的可读性
- 让不想执行的代码直接注释掉,那么就不会参与程序的运行
-
单行注释:Python中单行注释以
#
开头# 这是一个单行注释
-
多行注释:多行注释可以用多个
#
号,还有'''
和"""
# 这是第一行注释 # 这是第二行注释 ''' 这是多行注释 第一行 第二行 ''' """ 这是多行注释 第一行 第二行 """
二、Python中常见的数据类型
列表和元组可以存放Python中任意的数据类型
不可变数据类型
:Number(数字)、String(字符串)、Tuple(元组);可变数据类型
:List(列表)、Dictionary(字典)、Set(集合)- 数据类型归类:
容器类型
:字符串,列表,元组,字典,集合数字类型
:整型,浮点型,布尔类型
1.Number(数字)
1.1.int(整数数据类型)
# 整型(int)
number = 666
print(type(number)) # <class 'int'>
1.2.float(浮点型)
# 浮点型(float)
number = 3.14
print(type(number)) # <class 'float'>
1.3.bool(布尔类型)
-
布尔类型特点:
- 布尔类型只有两个值:
True
和False
- 布尔类型可以和其他数据类型进行比较,比如数字、字符串等。在比较时,Python 会将 True 视为 1,False 视为 0
- 布尔类型可以和逻辑运算符一起使用,包括 and、or 和 not。这些运算符可以用来组合多个布尔表达式,生成一个新的布尔值
- 布尔类型也可以被转换成其他数据类型,比如整数、浮点数和字符串。在转换时,True 会被转换成 1,False 会被转换成 0
# bool(布尔类型) bool1 = True bool2 = False print(type(bool1)) # <class 'bool'> print(type(bool2)) # <class 'bool'>
- 布尔类型只有两个值:
注意
:在Python中,所有非零的数字和非空的字符串、列表、元组等数据类型都被视为 True,只有 0、空字符串、空列表、空元组等被视为 False。因此,在进行布尔类型转换时,需要注意数据类型的真假性
2.String(字符串)
-
Python中的字符串用单引号
''
或双引号""
或三引号''''''
括起来# str(字符串) str1 = '666' str2 = "张三" str3 = '''李四''' print(type(str1)) # <class 'str'> print(type(str2)) # <class 'str'> print(type(str3)) # <class 'str'>
3.List(列表)
-
列表:
[]
表示列表。列表当中可以存放Python中任意的数据类型# list(列表) list1 = [1, "张三", 3.14, True] print(type(list1)) # <class 'list'>
4.Tuple(元组)
-
元组:元组写在小括号
()
里,元素之间用逗号隔开。元组与列表类似,不同之处在于元组的元素不能修改 -
元组的括号可以省略
# tuple(元组) tuple1 = (1, 2, "张三", 3.14, [1, 3]) print(type(tuple1)) # <class 'tuple'> tuple2 = 1, 2, "张三", 3.14, [1, 3] print(type(tuple2)) # <class 'tuple'>
5.Set(集合)
-
集合是一种无序、可变的数据类型,用于存储唯一的元素
-
集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作
-
特性:默认去重(集合里面不存在重复的数据)
-
集合无法存在列表和字典
# set(集合) set1 = { 1, 3.14, "张三", True, (1, 4)} print(type(set1)) # <class 'set'>
注意
:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
6.Dictionary(字典)
-
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取
-
字典是一种映射类型,字典用
{ }
标识,它是一个无序的 键(key) : 值(value) 的集合 -
键(key)必须使用不可变类型
-
在同一个字典中,键(key)必须是唯一的
# dict(字典) dict1 = { "name": "张三", "age": 18, "sex": "男"} print(type(dict1)) # <class 'dict'>
三、输入和输出
1.读取键盘输入
-
接收用户输入的数据可以调用内建函数:
input()
实现数据获取 -
一般输入的数据会保存到变量中,默认情况获取的所有用户输入的内容都是字符串
-
当程序执行的时候遇到
input
内建函数,程序会挂起(如果不输入回车)那么代码不会继续往下执行username = input("请输入用户名") password = input("请输入密码") print(f"您输入的用户名是:{ username},密码是:{ password}")
2.格式化输出
- 格式化定义:按照指定的方式,拼接新的字符串内容(简单理解:当需要输出一个字符串的同时,也进行输出变量值)
方式一(不常用,了解即可):
-
使用占位符号
%
实现格式化输出 -
需要根据变量值的不同数据类型进行不同参数的占位
- 格式化输出字符串类型:
%s
占位 - 格式化输出整数类型:
%d
占位 - 格式化输出浮点类型:
%f
占位
name = "张三" age = 18 height = 1.98 print("我的名字是:%s" % name) # 格式化输出字符串 print("我的年龄是:%d" % age) # 格式化输出整数 # 浮点数格式化输出时默认保留6位小数 # 如果需要保留指定的小数位,需要进行修改,那么在f前面加上.2f(保留2为小数) print("我的身高是:%f米" % height) # 格式化输出浮点数 print("我的身高是:%.2f米" % height)
- 格式化输出字符串类型:
-
多个格式化输出的语法格式
name = "张三" age = 18 height = 1.98 # 多个格式化输出的语法格式 print("我的名字是:%s,我的年龄是:%d,我的身高是:%.2f米" % (name, age, height))
方式二(不常用,了解即可):
- 任何的数据类型都可以放到
{}
进行格式化输出
name = "张三"
age = 18
height = 1.98
# 简写模式
print(f"我的名字是:{
name},我的年龄是:{
age},我的身高是:{
height}米")
print(F"我的名字是:{
name},我的年龄是:{
age},我的身高是:{
height}米")
# 完整模式
print("我的名字是:{},我的年龄是:{},我的身高是:{}米".format(name, age, height))
四、数据类型转换
数据类型转换的内建函数
函数 | 作用 |
---|---|
int() | 转换为整数数据类型 |
float() | 转换为浮点数数据类型 |
str() | 转换为字符串数据类型 |
eval() | 用来计算在字符串中的有效Python表达式,并返回一个对象(将字符串原生的数据类型转化为原本的类型) |
-
int():转换为整数数据类型
str1 = "666" print(type(str1)) # <class 'str'> # int()函数——将字符串的原生整数类型进行转化 print(type(int(str1))) # <class 'int'>
-
float():转换为浮点数数据类型
str2 = "666" # float()函数——将字符串的原生浮点类型进行转化 print(type(str2)) # <class 'str'> print(type(float(str2))) # <class 'float'>
-
str():转换为字符串数据类型(万物皆可字符串:任何数据类型都可以加上引号变成字符串)
number = 666 print(type(number)) # <class 'int'> # str()函数——将原生的数据类型转化为字符串 print(type(str(number))) # <class 'str'>
-
eval():将字符串原生的数据类型转化为原本的类型
str3 = "[1,2,3]" print(type(str3)) # <class 'str'> print(type(eval(str3))) # <class 'list'> str4 = "(1,2,3)" print(type(str4)) # <class 'str'> print(type(eval(str4))) # <class 'tuple'> str5 = "{1,2,3}" print(type(str5)) # <class 'str'> print(type(eval(str5))) # <class 'set'> str6 = '{"name": "张三", "age": "18"}' print(type(str6)) # <class 'str'> print(type(eval(str6))) # <class 'dict'> str7 = "666" print(type(str7)) # <class 'str'> print(type(eval(str7))) # <class 'int'>
五、运算符
1.算术运算符
以下假设变量 a=5,变量 b=2
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | a + b 输出结果 7 |
- | 减 | a - b 输出结果 3 |
* | 乘 | a * b 输出结果 10 |
/ | 除 | a / b 输出结果 2.5 |
% | 取模(返回除法的余数) | a % b 输出结果 1 |
** | 幂 | a ** b 输出结果 25 |
// | 取整除 | a // b 输出结果 2 |
2.比较(关系)运算符
以下假设变量 a=5,变量 b=2
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 | (a == b) 返回 False |
!= | 不等于 | (a != b) 返回 True |
> | 大于 | (a > b) 返回 True |
< | 小于 | (a < b) 返回 False |
>= | 大于等于 | (a >= b) 返回 True |
<= | 小于等于 | (a <= b) 返回 False |
注意
:比较运算符返回的结果类型是布尔值。要么是True
,要么是False
3.赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | |
+= | 加法赋值运算符 | |
-= | 减法赋值运算符 | |
*= | 乘法赋值运算符 | |
/= | 除法赋值运算符 | |
%= | 取模赋值运算符 | |
**= | 幂赋值运算符 | |
//= | 取整除赋值运算符 | |
:= | 海象运算符 |
4.逻辑运算符
and
:两个条件必须同时满足最终结果为真or
:两个条件只要一个为真,最终结果为真not
:取反,假变真,真变假
运算符 | 描述 | 实例 |
---|---|---|
and | 布尔"与" | |
or | 布尔"或" | |
not | 布尔"非" |
5.位运算符
运算符 | 描述 | 实例 |
---|---|---|
& | 与运算符 | |
| | 或运算符 | |
^ | 异或运算符 | |
~ | 取反运算符 | |
<< | 左移动运算符 | |
>> | 右移动运算符 |
6.成员运算符
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False。 | |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 |
7.身份运算符
运算符 | 描述 | 实例 |
---|---|---|
is | is 是判断两个标识符是不是引用自一个对象 | |
is not | is not 是判断两个标识符是不是引用自不同对象 |
8.运算符优先级
以下表格列出了从最高到最低优先级的所有运算符, 相同单元格内的运算符具有相同优先级。 运算符均指二元运算,除非特别指出。 相同单元格内的运算符从左至右分组(除了幂运算是从右至左分组):
运算符 | 描述 |
---|---|
(expressions…), [expressions…], {key: value…}, {expressions…} |
圆括号的表达式 |
x[index], x[index:index], x(arguments…), x.attribute | 读取,切片,调用,属性引用 |
await x | await 表达式 |
** | 乘方(指数) |
+x, -x, ~x | 正,负,按位非 NOT |
*, @, /, //, % | 乘,矩阵乘,除,整除,取余 |
+, - | 加和减 |
<<, >> | 移位 |
& | 按位与 AND |
^ | 按位异或 XOR |
| | 按位或 OR |
in,not in, is,is not, <, <=, >, >=, !=, == | 比较运算,包括成员检测和标识号检测 |
not x | 逻辑非 NOT |
and | 逻辑与 AND |
or | 逻辑或 OR |
if – else | 条件表达式 |
lambda | lambda 表达式 |
:= | 赋值表达式 |
六、Python常见数据类型具体操作方法
1.字符串常用的操作方法
-
字符串的索引及切片
-
索引
- 字符串是一种有序容器类型的数据,可以通过下标(索引)取值
- 字符串可以通过索引值的正负两极取值
-
从左到右默认从
0
开始 -
从右到左默认从
-1
开始str1 = "今天又是充满希望的的一天" # 可以通过字符串的索引值取字符的实际值 print(str1[1]) # 天 print(str1[-2]) # 一
-
-
切片
-
切片是指对被操作的字符串对象的内容取一部分值,列表,元组都是支持切片操作
-
切片的语法格式:[起始:结束:步长]
str1 = "今天又是充满希望的的一天" # 只写开始,不写结束:默认到最后(默认包含开始索引值的内容) print(str1[6:]) # 希望的的一天 # 有开始也有结束:包含开始的索引值,不包含结束的索引值 # 切片的操作是一个左闭右开的区间 print(str1[6:9]) # 希望的 # 只写结束,不写开始:默认从0(索引)开始 print(str1[:9]) # 今天又是充满希望的 # 开始结束都不写 print(str1[:]) # 今天又是充满希望的的一天 # 对字符串切片操作是可以通过负数索引进行切片操作 print(str1[6:-4]) # 希望 # 当开始和结束的索引值没有交集的时候会取不到实际值 print(str1[-1:6]) # 步长,不写开始不写结束,步长为2 print(str1[::2]) # 今又充希的一
-
-
-
查找字符串中具体某个元素
- 方法一:使用
find()
str1 = "今天又是充满希望的的一天" # 如果该字符串有该元素那么返回元素的索引值 print(str1.find("希")) # 6 # 如果该字符串没有该元素那么返回的索引值是-1(表示没有该元素) print(str1.find("快")) # -1
- 方法二:使用
index()
str1 = "今天又是充满希望的的一天" # 如果该字符串有该元素那么返回元素的索引值 print(str1.index("希")) # 6 # 如果该字符串没有该元素那么程序会报错 print(str1.index("快")) # 报错
- 方法一:使用
-
count()
统计元素在整个字符串当中出现的次数str1 = "今天又是充满希望的的一天" # 会返回该元素在整个字符串当中出现的次数 print(str1.count("天")) # 2
-
replace()
替换字符串中的元素值str1 = "今天又是充满希望的的一天" # 替换字符串中的元素值 print(str1.replace("今", "明"))
-
使用
split()
对字符串进行切片str1 = "今天又是充满希望的的一天" # split对字符串进行切片的方法,返回的数据类型是列表,可以设置参数切几次,切好的数据是字符串类型 print(str1.split("天", 1)) # ['今', '又是充满希望的的一', '']
-
capitalize()
首字母大写,其余全部小写# capitalize()将整个字符串第一个元素(不管是大小写全部做大写处理)之后的内容里面的所有大写字母转化成小写字母 str2 = "abcdABCD" print(str2.capitalize()) # Abcdabcd
-
title()
根据字符串的空格将每个空格之后的首字母大写str3 = "abcd zxcv qwer" # 根据字符串的空格将每个空格之后的首字母大写(前提是空着之后是字母) print(str3.title()) # Abcd Zxcv Qwer
-
startswith()
检测字符串是否以指定元素开头str4 = "good good stady day day up" # 检测字符串是否以指定元素开头 print(str4.startswith("g")) # True print(str4.startswith("b")) # False print(str4.startswith("good")) # True
-
lower()
将整个字符串当中的所有大写字母转化为小写str5 = "I Love You" # 将整个字符串当中的所有大写字母转化为小写 print(str5.lower()) # i love you
-
去除自字符串前面或后面的空格元素
- 去除前面空格元素:
lstrip()
- 去除后面空格元素:
rstrip()
- 去除前后空格元素:
strip()
# 去除自字符串前面或后面的空格元素 str6 = " I Love You " # 去除后面空格元素 print(str6.rstrip()) # " I Love You" # 去除前面空格元素 print(str6.lstrip()) # "I Love You " # 去除前后空格元素 print(str6.strip()) # I Love You
- 去除前面空格元素:
-
isdigit()
判断字符串所有的元素是否由纯数字组成str7 = "12345qwer" # 判断字符串所有的元素是否由纯数字组成 print(str7.isdigit()) # False
-
使用固定的字符隔开字符串当中的所有元素
str8 = "abcd1234" # 字符串的拼接操作:使用固定的字符隔开字符串当中的所有元素 print("*".join(str8)) # a*b*c*d*1*2*3*4 print("-".join(str8)) # a-b-c-d-1-2-3-4 print("0".join(str8)) # a0b0c0d01020304
2.列表常用的操作方法
-
列表中增加数据
-
第一种方式:
append()
添加数据(默认是追加到列表末尾)name_list = ["宝总", "爷叔", "小江西", "蔡司令"] # 第一种方式:append()添加数据(后默认是追加到列表末尾) name_list.append("汪小姐") print(name_list) # ['宝总', '爷叔', '小江西', '蔡司令', '汪小姐']
-
第二种方式:
append()
插入数据name_list = ["宝总", "爷叔"
-