本章节将依次展开数据类型、流程控制、函数机制与面向对象编程的基础讲解:从数字、字符串等基础数据结构的特性解析,到条件判断与循环结构的逻辑构建;从函数定义规范与代码复用原理,到类与对象的基础认知框架,逐步夯实编程语法基石。
AI&Python基础语法
考虑到基础语法的系统性学习需求,本章节暂以传统编码实践为主,读者可以自行结合Codex、Claude、Cursor、通义灵码、CodeGeeX或Trae等AI编码工具进行辅助练习(AI工具的充分结合应用将在后续章节展开详解)。
数据类型
对于初涉Python的学习者而言,深入理解其数据类型体系,无疑是开启编程智慧之门的关键密钥。Python中有6种常用的数据类型,作为编程的基础,支撑着各类复杂功能的实现。本文将对这些数据类型展开讲解,助力读者夯实编程与数据分析基础,为后续的深入学习与实践筑牢根基。
1.1数字的定义
在Python基础语法中,数字类型承担着存储数值的重要职责,其在内存中的对象内容具有不可变性。Python为开发者提供了丰富多样的数字类型选择,主要涵盖整型(int)、浮点型(float)、布尔型(bool)以及复数(complex)。
1.2数字算数运算
在Python中,我们可以用非常简单直观的方法来进行数学计算。无论是日常的加减乘除,还是稍微复杂一点的求幂、取绝对值、四舍五入等操作,Python都为我们准备了相应的运算符和函数。
【实例1】数字算数运算的基础实例。
print("1.加法: 10 + 20 =", 10 + 20) # 加法print("2.减法: 10 - 20 =", 10 - 20) # 减法print("3.乘法: 2 * 6 =", 2 * 6) # 乘法print("4.除法: 18 / 3 =", 18 / 3) # 除法print("5.负数: -6 =", -6) # 负数print("6.取绝对值: abs(-100) =", abs(-100)) # 取绝对值print("7.除后取整数: 31 // 5 =", 31 // 5) # 除后取整数print("8.除后取余数: 31 % 5 =", 31 % 5) # 除后取余数print("9.返回商和余数: divmod(31, 5) =", divmod(31, 5)) # 返回商和余数的元组print("10.x的y次方: pow(2, 5) =", pow(2, 5)) # 返回x的y次方print("11.x的y次方: 2 ** 5 =", 2 ** 5) # 返回x的y次方print("12.四舍五入: round(3.14159, 2) =", round(3.14159, 2)) # 四舍五入
输出结果:
1.3不同数字类型间转换
在Python数据分析过程中,我们经常需要将一种类型的数字转换成另一种类型,比如把小数转成整数,或者创建复数来进行更复杂的数学运算。Python提供了非常简单的方式来完成这些任务。
【实例2】数字类型转换的基础实例。
print("1.转换成整数: int(3.14) =", int(3.14)) # 转换成整数print("2.转换成布尔型: bool(0) =", bool(0)) # 转换成布尔型print("3.转换成浮点数: float(5) =", float(5)) # 转换成浮点数print("4.创建复数: complex(3, 4) =", complex(3, 4)) # 创建一个复数print("5.共轭复数: complex(3, 4).conjugate() =", complex(3, 4).conjugate())#返回共轭复数
输出结果:
2.1字符串定义
在Python中,字符串是用于表示文本数据的序列类型,可通过多种方式定义。
【实例3】字符串类型转换的基础实例。
# 使用单引号定义包含中英文的字符串str1 = 'Hello, 世界!'print("------单引号定义的字符串------")print(str1)# 使用双引号定义包含中英文和单引号的字符串str2 = "Python的 'Programming'"print("------双引号定义的字符串------")print(str2)# 使用三引号定义包含中英文的多行字符串str3 = '''This is a multi-line string.这是一个多行字符串。It can span multiple lines.并且保留换行符。'''print("------三引号定义的多行字符串------")print(str3)
输出结果:
2.2字符串格式化
Python提供多种字符串格式化方式,方便将变量值嵌入到字符串中。
【实例4】字符串格式化的基础实例。
name_1 = "李飞"age = 30# 字符串格式化formatted_string_1 = "根据提供的数据,%s的年龄为 %d 岁。" % (name_1, age)print("------字符串格式化------")print(formatted_string_1)name_2 = "李挺"height = 172.35325354# 使用 f-stringformatted_string_2 = f"根据提供的数据,{name_1}的身高为 {height} 厘米。"print("------使用f-string------")print(formatted_string_2)# f-string 还可以直接包含表达式formatted_string_with_expression=f"根据提供的数据,{name_2}的身高为 {height+10:.4f} 厘米。"print("------直接包含表达式------")print(formatted_string_with_expression)
【分析解答】本实例展示了两种Python字符串格式化的方法。
使用百分号(%)格式化:通过%s(字符串)和%d(整数)占位符,将name_1和age的值插入到formatted_string_1中并打印。
使用f-string格式化:在字符串中使{}嵌入变量name_1和height,输出formatted_string_2。此外,还可以在{}内设置表达式,如对height+10后格式化为四位小数{height+10:4f},输出formatted_string_with_expression。
输出结果:
2.3字符串常用操作
Python提供了多种便捷的方法来操作字符串,如访问字符、切片提取子串、翻转、连接、重复、获取长度、替换、比较、查找子串、分割以及转换大小写等。这些方法高效且易用,是非破坏性的,即原字符串保持不变,所有操作返回新的字符串结果。掌握这些基本技能,对提升编程效率以及数据分析至关重要。
【实例5】访问字符串中的字符的基础实例。
s = "learn" # 定义字符串sprint("正索引访问:",s[0]) # 正索引访问,表示获取字符串中索引为 0 的字符print("负索引访问:",s[-1]) # 负索引访问,表示获取字符串中从右往左数第 1 个字符
输出结果:
【实例6】切片操作的基础实例。
s1 = "Learn Python!"print(s1[0:5]) # 常规切片,提取索引从 0 到 4(不包括 5)的字符print(s1[6:]) # 从指定索引到结尾,提取从索引 6 开始到结尾的字符print(s1[:5]) # 从开头到指定索引,提取从开头到索引 4(不包括 5)的字符print(s1[-7:-1]) # 负索引切片,负索引从右往左数切片
输出结果:
【实例7】字符串翻转的基础实例。
s2 = "Learn"reversed_s = s2[::-1] #切片操作[::-1]表示从字符串的末尾开始,每次步进-1,即逆序读取字符串print("字符串翻转:",reversed_s)
输出结果:
【实例8】字符串连接的基础实例。
# 使用+运算符连接字符串s3 = "Learn"s4 = "Python"s5 = s3 + " " + s4 # 将s3, s4通过+运算符连接,并在中间添加空格print("使用+连接字符串:",s5)# 使用join()方法连接字符串列表s6 = " "words = ["学习","字符串"]result = s6.join(words) # 使用空格字符作为连接符,将列表中的字符串连接起来print("使用join连接字符串:",result)
输出结果:
【实例9】字符串重复的基础实例(使用*运算符表示重复次数)。
s7 = "注意! "print(s7 * 3) # 字符串乘法*表示将字符串重复指定的次数
输出结果:
【实例10】获取字符串长度的基础实例。
print(len(s7*3)) #使用len()获取字符串长度
输出结果:
【实例11】字符串替换的基础实例。使用str.replace(old,new,count)函数替换字符串,其中第1个参数old为旧的被替换的字符串,第2个参数new为新的字符串,第3个参数count为替换的次数(可选填)
s8 = "我偏好A方案,A方案的效果更好。"# 使用字符串的replace方法,设定第3个参数为1,只将s8中的第1个“A”替换为“B”replaced_string = s8.replace("A", "B", 1)# 使用字符串的replace方法,无第3个参数,则默认将s8中的所有“A”替换为“B”replaced_string2 = s8.replace("A", "B")print("原始字符串:",s8)print("替换1次:",replaced_string)print("全部替换:",replaced_string2)
输出结果:
【实例12】字符串比较的基础实例。
s9 = "cherry"s10 = "banana"print("1.使用==:",s9 == s10) # 使用== 判断两个字符串是否相等print("2.使用!=:",s9 != s10) # 使用比!= 判断两个字符串是否不相等print("3.使用<:",s9 < s10) # 使用< 判断第一个字符串是否按字典顺序小于第二个字符串print("4.使用<=:",s9 <= s10) # 使用<= 判断第一个字符串是否按字典顺序小于或等于第二个字符串print("5.使用>:",s9 > s10) # 使用> 判断第一个字符串是否按字典顺序大于第二个字符串print("6.使用>=:",s9 >= s10) # 使用>= 判断第一个字符串是否按字典顺序大于或等于第二个字符串
输出结果:
【实例13】使用str.find(sub)与str.index(sub)函数查找字符串的基础实例。
s11 = "您好,Python,Python,Python."index_find = s11.find("on") # find方法返回子字符串on首次出现的位置,如果未找到则返回-1print(index_find)index = s11.index("on") # index方法与find方法类似,但如果未找到子字符串则会抛出异常print(index)
输出结果:
【实例14】使用str.split(sep=None,maxsplit=-1)分割字符串的基础实例。
s12 = "这份报告,我,写,不好"print("默认空白分割:",s12.split(",")) #默认按空白字符全部分割print("指定第1次出现只分割1次:",s12.split(",", 1)) #指定第1次出现只分割1次
输出结果:
【实例15】字符串大小写转换的基础实例。
s13 = "PyTHon"print("转换为小写:",s13.lower()) # 使用lower方法将字符串转换为小写print("转换为大写:",s13.upper()) # 使用upper方法将字符串转换为大写print("转换为首字母大写:",s13.capitalize()) # 字符串的第一个字符转换为大写,其余字符转换为小写print("转换为首字母大写:",s13.title()) # 字符串的第一个字符转换为大写,同capitalize用法
输出结果:
【实例16】编译一个正则表达式模式,用于匹配中国的11位手机号码。
import retext="这里有3个手机号码,分别是13812345678,123456,17798765432,1593253132,25314153261"# 正则表达式解释:# 1 表示手机号码的第一位数字必须是1# [3-9] 表示手机号码的第二位数字必须是3到9之间的任意一个数字# \d{9} 表示接下来必须有9个数字(\d表示任意数字,{9}表示重复9次)pattern=re.compile(r'1[3-9]\d{9}')# 使用findall方法查找text中所有匹配pattern的手机号码# findall方法会返回一个列表,包含所有匹配的字符串phone_numbers=pattern.findall(text)print("找到的电话号码:",phone_numbers)
输出结果:
正则表达式的语法包括多种特殊字符和构造,例如常用的邮箱场景使用“\w+@\w+\.\w+”来匹配类user@domain.com的邮箱格式。下面是一个简明的表格,列出了一些常用的正则表达式语法及其描述。
这份表格涵盖了正则表达式中最常用的语法元素,但正则表达式的功能远不止这些。不同的编程环境可能会在这些基础上有所拓展或变化,因此在具体使用时,还需要参考相应环境或语言的文档。