☰
(二)详解版!从零掌握 Python 基础知识!前半篇
2026/9/25 21:29:07 网站建设 项目流程

学习目标与规划

我是一名青少年幼儿编程教师,专注于机器人编程Scratch、Python教学。在日常教学中,我不断梳理Python知识体系,通过制作趣味项目如绘图小游戏、应用生成器和算法练习,提升自身能力。这些实践不仅巩固了编程基础,也让我能更生动地设计适合孩子的课程内容,激发学习兴趣。

其中也包括核心知识点、练习代码和踩坑记录。我会按照由浅入深的方式持续更新,方便自己回顾,也希望能给同样在入门的大、小朋友一些参考。也欢迎大家随时和我探讨相关内容!

一. Python 简介与环境搭建

Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言,语法简洁清晰,广泛应用于 Web 开发、数据分析、人工智能、自动化脚本等领域。本笔记将系统记录 Python 基础知识,并配合可运行的代码示例,帮助读者从零开始掌握 Python。

1.1 安装 Python

访问 Python 官网下载对应操作系统的安装包,安装时勾选「Add Python to PATH」选项,以便在命令行中直接使用 python 命令。安装完成后,在终端输入以下命令验证是否安装成功:

python --version

1.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) # 幂运算:1000(10的三次方,a的b次方) #还能使用非整数,3**5.5同样能算 a += 1 #自增运算a=a+1 b -= 1 #自减运算b=b-1

3.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]) # 3

5.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'] #对比 append:extend 会把列表拆开逐个加入 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 list

del 是 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 或 False;index()用于查找元素第一次出现的下标。两者经常配合使用,先用 in 判断存在性,再用 index() 获取下标,可以避免程序报错。

5.5 列表排序

列表排序有三种常用方式:sort()、reverse()和sorted()。下面分别介绍它们的用法。

sort() 方法会直接修改原列表,把列表中的元素按升序排列。默认从小到大排序,也可以通过参数reverse=True 实现从大到小排序。

# sort():原地排序,直接修改原列表 nums = [3, 1, 4, 1, 5, 9, 2] nums.sort() print(nums) # [1, 1, 2, 3, 4, 5, 9] # 降序排序:加参数 reverse=True nums2 = [3, 1, 4, 1, 5] nums2.sort(reverse=True) 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, reverse=True) 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 #True

6.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 += 1

7.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

想要彻底跳出循环,不再完成循环计数,或者不再判断循环条件,使用break

7.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 的基础内容和各类数据类型的处理方法,接下来讲解版(二)会重点探索函数、图形、图像和各类游戏制作,欢迎大家学习阅读

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询