(二)详解版!从零掌握 Python 基础知识!前半篇
学习目标与规划我是一名青少年幼儿编程教师专注于机器人编程Scratch、Python教学。在日常教学中我不断梳理Python知识体系通过制作趣味项目如绘图小游戏、应用生成器和算法练习提升自身能力。这些实践不仅巩固了编程基础也让我能更生动地设计适合孩子的课程内容激发学习兴趣。其中也包括核心知识点、练习代码和踩坑记录。我会按照由浅入深的方式持续更新方便自己回顾也希望能给同样在入门的大、小朋友一些参考。也欢迎大家随时和我探讨相关内容一. Python 简介与环境搭建Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言语法简洁清晰广泛应用于 Web 开发、数据分析、人工智能、自动化脚本等领域。本笔记将系统记录 Python 基础知识并配合可运行的代码示例帮助读者从零开始掌握 Python。1.1 安装 Python访问 Python 官网下载对应操作系统的安装包安装时勾选「Add Python to PATH」选项以便在命令行中直接使用 python 命令。安装完成后在终端输入以下命令验证是否安装成功python --version1.2 编写第一个程序创建 hello.py 文件输入以下代码并运行print(Hello, Python!)运行结果Hello, Python!1.3 输入input()input() 函数用于从键盘接收用户输入接收到的内容默认是字符串类型。基本用法如下name input(请输入你的名字) print(你好 name)运行结果请输入你的名字小明 你好小明注意input() 返回的一定是字符串。如果需要参与数学运算要先进行类型转换age input(请输入年龄) age int(age) # 字符串转整数 print(明年你 str(age 1) 岁)二. 变量与数据类型变量是存储数据的容器Python 是动态类型语言变量不需要声明类型直接赋值即可。常见的数据类型包括整数、浮点数、字符串、布尔值、列表、元组、字典和集合。变量命名规则给变量起名需要遵循 Python 的命名规则否则程序会报错。以下是必须遵守的硬性规则只能包含字母、数字和下划线如 name、age_1、my_score 都是合法的不允许使用 -、/、#、 等符号。以字母或下划线开头不能以数字开头1name 会报错但 name1 可以。不能使用 Python 关键字如 if、for、while、class 等都不能作为变量名。区分大小写Name 和 name 是两个不同的变量。除了硬性规则还有一些约定俗成的命名习惯能让代码更易读使用小写字母和下划线推荐用 user_name而不是 userName 或 UserName。命名要有意义用 student_age 比用 a 更能表达含义。常量用全大写如 MAX_SIZE、PI表示这个值不希望被修改。2.1 基本数据类型# 整数 age 25 # 浮点数 price 19.99 # 字符串字符串之间也同样可以相加即拼接 name Alice # 布尔值 is_student True print(age, price, name, is_student)注跨多行的字符串需要用“三重引号字符串”2.2 类型转换num_str 123 num_int int(num_str) # 字符串或浮点数转整数总是【向下取整】 num_float float(num_str) # 字符串或整数转浮点数 str_num str(456) # 数值或其他类型转字符串 print(num_int, num_float, str_num) #不会改变原来的值只会创建新值python提供了type()函数可以明确告诉我们变量的类型三. 运算符与表达式Python 支持算术运算符、比较运算符、逻辑运算符和赋值运算符等。掌握运算符的优先级有助于写出正确的表达式。3.1 算术运算符a 10 b 3 print(a b) # 加法13 print(a - b) # 减法7 print(a * b) # 乘法30 print(a / b) # 除法3.333... print(a // b) # 整除3商 print(a % b) # 取余1取模运算 print(a ** b) # 幂运算100010的三次方a的b次方 #还能使用非整数3**5.5同样能算 a 1 #自增运算aa1 b - 1 #自减运算bb-13.2 比较与逻辑运算符x 5 # 赋值运算符 y 8 print(x y) # 小于True print(x y) # 大于False print(x y) # 小于等于True print(x y) # 大于等于False print(x ! y) # 不等于True print(x y) # 等于False print(x y and y 0) # 逻辑与True print(x y or y 0) # 逻辑或True print(not x y) # 逻辑非True比较运算符用于比较两个值结果是一个布尔值True 或 False四. 字符串操作字符串是 Python 中最常用的数据类型之一支持索引、切片、拼接、格式化等多种操作。4.1 字符串索引与切片text Hello, Python print(text[0]) # H print(text[-1]) # n print(text[0:5]) # Hello print(text[7:]) # Python print(text[::-1]) # 反转字符串4.2 字符串常用方法msg python programming print(msg.strip()) # 去除首尾空格 print(msg.upper()) # 转大写 print(msg.lower()) # 转小写 print(msg.replace(python, Java)) # 替换 print(msg.split()) # 按空格分割为列表4.3 字符串格式化name Bob age 30 f-string 方式推荐 print(f姓名{name}年龄{age}) format 方式 print(姓名{}年龄{}.format(name, age))五. 列表与元组列表和元组都是 Python 中用于存储多个元素的数据结构。列表是可变的元组是不可变的。列表可以包含Python能存储的任何类型的数据包括数字、字符串、对象、甚至是其他列表并且列表中元素的类型无须完全相同。5.1 列表的基本操作fruits [apple, banana, cherry] # 访问元素索引 print(fruits[0]) # apple # 列表分片,哪怕分1个输出类型依然是列表 print(fruits[0:2]) # [apple, banana] # 列表长度 print(len(fruits)) # 3 #双重列表 marks [[1,2,3],[4,5,6],[7,8,9]] print(marks[0][2]) # 35.2 列表中添加元素append() 会把传入的一个元素整体添加到列表末尾适合逐个添加数据extend() 会把传入的可迭代对象如列表、元组、字符串中的每个元素依次添加到列表末尾适合合并两个列表insert() 可以在列表的任意位置插入一个元素第一个参数是插入位置的下标第二个参数是要插入的元素。# append末尾追加一个元素 fruits [apple, banana] fruits.append(cherry) print(fruits) # [apple, banana, cherry] #注意append 传入列表时会把整个列表当作一个元素 nums [1, 2] nums.append([3, 4]) print(nums) # [1, 2, [3, 4]]# extend末尾批量追加多个元素 fruits [apple, banana] fruits.extend([cherry, orange]) print(fruits) # [apple, banana, cherry, orange] #对比 appendextend 会把列表拆开逐个加入 nums [1, 2] nums.extend([3, 4]) print(nums) # [1, 2, 3, 4]# insert在指定下标位置插入元素 fruits [apple, cherry] fruits.insert(1, banana) # 在下标 1 处插入 print(fruits) # [apple, banana, cherry] #下标为 0 表示插入到最前面 fruits.insert(0, orange) print(fruits) # [orange, apple, banana, cherry]小结append适合一次添加一个元素extend适合一次合并多个元素insert适合在指定位置插入元素三者都不会覆盖原有数据而是让列表变长。5.3 列表中删除元素列表是可变对象删除元素有三种常用方式remove()、del和pop():remove() 会删除列表中第一个与指定值相等的元素适合不知道下标、只知道元素内容时使用。如果列表中不存在该值程序会报错。# remove按值删除第一个匹配元素 fruits [apple, banana, cherry, banana] fruits.remove(banana) print(fruits) # [apple, cherry, banana] #注意只删除第一个匹配项后面的同名元素会保留 #如果值不存在会报错ValueError: list.remove(x): x not in listdel 是 Python 的关键字可以按下标删除指定位置的元素也可以直接删除整个列表。删除后列表长度会变短# del按下标删除元素 fruits [apple, banana, cherry] del fruits[1] # 删除下标 1 的元素 print(fruits) # [apple, cherry] # del 也可以删除整个列表 nums [1, 2, 3] del nums print(nums) # 报错NameError因为列表已被删除pop() 会删除指定下标的元素并返回被删除的那个值。如果不传下标默认删除并返回最后一个元素# pop按下标删除并返回被删除的元素 fruits [apple, banana, cherry] removed fruits.pop(1) # 删除下标 1 的元素并返回 print(removed) # banana print(fruits) # [apple, cherry] #不传下标时默认删除最后一个元素 last fruits.pop() print(last) # cherry print(fruits) # [apple]小结remove按值删除第一个匹配项del按下标删除且不返回值pop按下标删除并返回被删除的值。三者都会让列表变短选择哪种方式取决于你是按值删除还是按下标删除以及是否需要拿到被删除的元素。5.4 搜索列表搜索列表中的元素有两种常用方式in和index()。下面分别介绍它们的用法。in 运算符用于判断某个值是否存在于列表中返回结果是布尔值True 或 False。配合 if 语句使用可以避免因元素不存在而报错。# in判断元素是否存在 fruits [apple, banana, cherry] # 配合 if 使用先判断再操作 if banana in fruits: print(列表中有香蕉) else: print(列表中没有香蕉)index() 方法会返回指定值在列表中第一次出现的下标。如果列表中不存在该值程序会报错所以通常先配合 in 判断再使用# index()查找元素的下标 fruits [apple, banana, cherry, banana] print(fruits.index(banana)) # 1返回第一次出现的下标 #如果值不存在会报错ValueError: orange is not in list #可以先判断再查找避免报错 if orange in fruits: print(fruits.index(orange)) else: print(orange 不在列表中)小结in用于判断元素是否存在返回 True 或 Falseindex()用于查找元素第一次出现的下标。两者经常配合使用先用 in 判断存在性再用 index() 获取下标可以避免程序报错。5.5 列表排序列表排序有三种常用方式sort()、reverse()和sorted()。下面分别介绍它们的用法。sort() 方法会直接修改原列表把列表中的元素按升序排列。默认从小到大排序也可以通过参数reverseTrue 实现从大到小排序。# sort()原地排序直接修改原列表 nums [3, 1, 4, 1, 5, 9, 2] nums.sort() print(nums) # [1, 1, 2, 3, 4, 5, 9] # 降序排序加参数 reverseTrue nums2 [3, 1, 4, 1, 5] nums2.sort(reverseTrue) print(nums2) # [5, 4, 3, 1, 1]reverse() 方法会会直接修改原列表把列表中元素的顺序颠倒过来也就是把最后一个元素放到最前面。它同样会直接修改原列表但不会对元素进行大小排序。# 注意reverse 只是颠倒顺序不是排序 nums [3, 1, 2] nums.reverse() print(nums) # [2, 1, 3]sorted() 是 Python 的内置函数它不会修改原列表而是返回一个新的已排序列表。原列表保持不变适合需要保留原始数据时使用。# sorted()返回新列表不修改原列表 nums [3, 1, 4, 1, 5] new_nums sorted(nums) print(new_nums) # [1, 1, 3, 4, 5] print(nums) # [3, 1, 4, 1, 5]原列表不变 # 降序排序 new_nums2 sorted(nums, reverseTrue) print(new_nums2) # [5, 4, 3, 1, 1]5.6 列表推导式# 生成 1 到 10 的平方列表 squares [x ** 2 for x in range(1, 11)] print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]5.7 元组-不可变的列表point (3, 5) print(point[0]) # 3 print(point[1]) # 5 #元组解包 x, y point print(x, y) # 3 5元组是不可变的因此不能对元组进行排序也不能在其中添加元素或者删除元素一旦创建了一个元组它就会一直保持不变。6. 字典与集合字典以键-值对形式存储数据集合用于存储不重复的元素。电话簿就是一个简单的例子姓名就是“键”号码就是“值”可以通过“键”来找“值”。列表和字典都是有序的区别在于列表用索引来访问字典用键来访问。6.1 字典的基本操作student {name: Alice, age: 20, grade: A} # 访问值 print(student[name]) # Alice #添加或修改键值对 student[school] MIT print(student) #student{school:MIT} 添加效果一致 #遍历字典 for key, value in student.items(): print(f{key}: {value}) # keys()会列出字典中所有元素的键 student.keys() #dict_keys([name,age,grade]) # values()会列出字典中所有元素的值 studuent.values() #dict_values([Alice,20,A])keys()和values()返回的并不是真正的列表可以再多使用list(stduent.keys())# 字典中没有类似sort()的排序方法 # 但可以对所有的键进行排序然后用排序后的键对字典进行迭代 for key in sort(student.keys()): print(key,student[key]) # del删除某个元素 del student[age] # clear()删除所有元素 student.clear() # 使用 in 关键字判断字典中是否存在某个键 age in student #True6.2 集合的基本操作set_a {1, 2, 3, 4} set_b {3, 4, 5, 6} #并集 print(set_a | set_b) # {1, 2, 3, 4, 5, 6} #交集 print(set_a set_b) # {3, 4} #差集 print(set_a - set_b) # {1, 2}7. 流程控制流程控制语句包括条件判断和循环是程序逻辑的核心组成部分。7.1 if 条件判断score 85 if score 90: print(优秀) elif score 60: print(及格) else: print(不及格) if not (score 60): #与 if score 60含义相同 print(及格)if 后面的 elif 语句的数目是没有限制的7.2 for 循环# 遍历列表fruit叫做循环变量 for fruit in [apple, banana, cherry]: print(fruit) 使用 range for i in range(1, 6): print(i) # 输出 1 到 5 for i in range(5): print(i) # 输出 0 到 5 遍历字符串逐个输出每个字符 for letter in Python: print(letter) 按步长计数从 0 到 10每次加 2 for i in range(0, 11, 2): print(i) # 输出 0, 2, 4, 6, 8, 10 倒着计数从 5 到 1每次减 1 for i in range(5, 0, -1): print(i) # 输出 5, 4, 3, 2, 1按步长计数range 的第三个参数可以指定步长实现隔几个数取一个负数则反向计数可以实现倒计时的功能7.3 while 循环条件循环count 0 while count 5: print(count) count 17.4 跳出循环break 与 continue# break提前结束循环 for i in range(10): if i 5: break print(i) # 输出 0 到 4 continue跳过当前迭代 for i in range(5): if i 2: continue print(i) # 输出 0, 1, 3, 4如果想要停止当前的迭代循环提前跳到下一次的迭代循环使用continue想要彻底跳出循环不再完成循环计数或者不再判断循环条件使用break7.5 嵌套循环与可变循环嵌套循环是指在一个循环的循环体里再写一个循环外层循环每执行一次内层循环就会完整地执行一遍。可变循环则是指循环的次数不是固定的而是根据条件或数据动态变化的。# 嵌套循环打印乘法口诀表 for i in range(1, 4): for j in range(1, 4): print(f{i} x {j} {i * j}) print(---) # 每完成一行就分隔一下 可变循环循环次数由用户输入决定 n int(input(请输入要打印几行星星)) for i in range(1, n 1): print(* * i)第一个例子中外层循环控制行数内层循环控制列数两者配合就能生成表格状的结果。第二个例子中循环次数由用户输入决定这就是可变循环的典型用法。学习心得与后续计划目前已经掌握了 Python 的基础内容和各类数据类型的处理方法接下来讲解版二会重点探索函数、图形、图像和各类游戏制作欢迎大家学习阅读