板块二:Python基础知识 —— 开始写真正的代码
写给刚高中毕业的你: 板块一我们认识了Python这个"翻译官"。现在开始,你要学的是"翻译官的语言规则"。别怕,规则不多,而且每个规则我们都边学边练。
01 变量 —— 给数据贴个标签
你可以把变量想象成一个有名字的盒子,你把东西放进去,以后想用的时候叫盒子的名字就行。
先看代码
name = "小明"
age = 18
score = 95.5
-
name、age、score就是变量名(盒子的标签) -
=是赋值符号,意思是"把右边的东西放进左边的盒子里" -
"小明"是文本(叫字符串),18是整数,95.5是小数(叫浮点数)
用变量
name = "小明"
print(name) # 输出:小明
age = 18
print(age) # 输出:18
# 变量还可以参与计算
new_age = age + 1
print(new_age) # 输出:19
🎯 核心理解: 变量就是给数据起个名字,方便以后反复使用。你可以随时改变变量里存的值(所以叫"变"量)。
变量的命名规则(简单记三条)
- 只能包含字母、数字、下划线(不能有空格或特殊符号如
@#¥%) - 不能以数字开头(
1name不行,name1可以) - 不能和Python的关键字冲突(比如
if、for、while这些不能当变量名)
✅ 好习惯: 变量名要能看懂意思。
score比s好,student_name比sn好。
02 数据类型 —— 盒子里的东西分种类
不同的数据有不同的类型,不同类型能做的事不一样。
最常用的四种类型
| 类型 | 英文名 | 例子 | 说明 |
|---|---|---|---|
| 整数 | int | 18、-5、0 | 就是数学里的整数 |
| 浮点数 | float | 3.14、95.5 | 就是小数 |
| 字符串 | str | "你好"、'Python' | 文本,用引号包起来 |
| 布尔值 | bool | True、False | 只有两个值:真/假 |
如何查看数据的类型
name = "小明"
age = 18
score = 95.5
is_pass = True
print(type(name)) # <class 'str'>
print(type(age)) # <class 'int'>
print(type(score)) # <class 'float'>
print(type(is_pass))# <class 'bool'>
类型之间的转换
# 数字转字符串
age = 18
text = "我今年" + str(age) + "岁"
print(text) # 我今年18岁
# 字符串转数字
num_str = "100"
num = int(num_str)
print(num + 50) # 150
🎯 核心理解: 不同类型的数据有不同的"操作权限"。比如数字可以做加法,字符串不能做加法(但可以做拼接)。
03 输入与输出 —— 和程序对话
程序不是死的。你可以用
input()让用户输入信息,用print()把结果显示出来。
print() —— 输出
print("你好") # 直接输出文本
print(3 + 5) # 输出计算结果:8
name = "小明"
print("我的名字是", name) # 输出:我的名字是 小明
input() —— 输入
name = input("请输入你的名字:")
print("你好," + name + "!")
运行效果:
请输入你的名字:小明
你好,小明!
⚠️ 重要:
input()获取到的永远是字符串类型。如果需要数字,要手动转换。
age_str = input("请输入你的年龄:")
age = int(age_str) # 把字符串转成整数
print("明年你", age + 1, "岁")
04 条件判断 —— 让程序自己"做选择"
程序遇到不同情况要做出不同反应,这就需要
if语句。
if 的基本结构
score = 85
if score >= 60:
print("及格了!")
if-else —— 二选一
score = 55
if score >= 60:
print("及格了!")
else:
print("不及格,继续加油")
if-elif-else —— 多选一
score = 85
if score >= 90:
print("优秀")
elif score >= 70:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")
运行效果:
良好
常用的比较运算符
| 符号 | 含义 |
|---|---|
| == | 等于(注意是两个等号) |
| != | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
⚠️ 重点提醒:
=是赋值,==是比较。写反了程序会出错。
# 错误示范
if score = 60: # 这会把60赋给score,而不是比较
# 正确写法
if score == 60: # 这才是比较
🎯 核心理解:
if让程序有了"判断力",能根据不同情况执行不同代码。这是所有智能程序的基础。
05 循环 —— 让程序重复干活
重复做同一件事是电脑最擅长的。用
for和while可以让程序批量执行任务。
for 循环 —— 遍历已知范围
# 重复5次
for i in range(5):
print("第", i, "次循环")
运行效果:
第 0 次循环
第 1 次循环
第 2 次循环
第 3 次循环
第 4 次循环
range(5)会生成0,1,2,3,4这5个数字。注意从0开始。
# 遍历列表中的每个元素
names = ["小明", "小红", "小刚"]
for name in names:
print(name, "你好!")
运行效果:
小明 你好!
小红 你好!
小刚 你好!
while 循环 —— 条件满足就一直执行
count = 0
while count < 5:
print("当前计数:", count)
count = count + 1 # 必须更新条件,否则会永远循环
运行效果:
当前计数: 0
当前计数: 1
当前计数: 2
当前计数: 3
当前计数: 4
⚠️ 致命警告:
while循环如果不更新条件,会变成死循环(程序永远停不下来)。
# ❌ 死循环(千万不要运行)
count = 0
while count < 5:
print("停不下来")
# 忘记写 count = count + 1
break —— 强行跳出循环
for i in range(10):
if i == 5:
break # i等于5时跳出循环
print(i)
运行效果:
0
1
2
3
4
continue —— 跳过本次循环
for i in range(5):
if i == 2:
continue # i等于2时跳过本次,继续下一次
print(i)
运行效果:
0
1
3
4
🎯 核心理解: 循环让程序有了"批量处理"的能力。当你要处理一堆数据时,循环就是最强的工具。
06 列表 —— 数据的有序"队列"
列表可以存储一串数据,并按顺序访问它们。
创建和使用列表
# 创建一个列表
students = ["小明", "小红", "小刚", "小丽"]
# 通过索引访问(索引从0开始)
print(students[0]) # 小明
print(students[2]) # 小刚
# 查看列表长度
print(len(students)) # 4
# 往列表末尾添加一个元素
students.append("小华")
print(students) # ['小明', '小红', '小刚', '小丽', '小华']
# 删除指定位置的元素
del students[1] # 删除"小红"
print(students) # ['小明', '小刚', '小丽', '小华']
⚠️ 重要: 列表的索引从 0 开始。所以
students[0]是第一个,students[3]是第四个。
遍历列表(最常用)
students = ["小明", "小红", "小刚"]
for name in students:
print(name, "考了90分")
运行效果:
小明 考了90分
小红 考了90分
小刚 考了90分
列表切片 —— 取其中一部分
nums = [0, 1, 2, 3, 4, 5]
print(nums[1:4]) # [1, 2, 3](从索引1到索引3,不包含4)
print(nums[:3]) # [0, 1, 2](从头到索引2)
print(nums[3:]) # [3, 4, 5](从索引3到尾)
🎯 核心理解: 列表就像一排带编号的储物柜,你可以往每个格子里放东西,通过编号(索引)快速找到它。
07 字典 —— 数据带"名牌"
列表是按"编号"找东西,字典是按"名字"找东西。
创建和使用字典
# 创建一个字典,保存一个人的信息
person = {
"name": "小明",
"age": 18,
"score": 95.5
}
# 通过"键"来访问"值"
print(person["name"]) # 小明
print(person["age"]) # 18
# 修改值
person["score"] = 98
print(person["score"]) # 98
# 添加新的键值对
person["city"] = "北京"
print(person) # {'name': '小明', 'age': 18, 'score': 98, 'city': '北京'}
字典和列表的配合使用(非常常见)
# 一个列表里存了多个字典
students = [
{"name": "小明", "score": 95},
{"name": "小红", "score": 88},
{"name": "小刚", "score": 76}
]
# 遍历每个学生
for stu in students:
print(stu["name"], "考了", stu["score"], "分")
运行效果:
小明 考了 95 分
小红 考了 88 分
小刚 考了 76 分
🎯 核心理解: 字典适合保存"有名字的数据",比如一个人的信息、一个商品的信息。当你需要根据名称找内容时,字典比列表更方便。
08 函数 —— 把"动作"打包
函数就是把一段代码打包成一个工具,起个名字,以后想用的时候直接"调用"就行。
定义一个简单的函数
def say_hello():
print("你好!")
# 调用函数
say_hello() # 输出:你好!
带参数的函数
def say_hello(name):
print("你好,", name, "!")
say_hello("小明") # 输出:你好, 小明 !
say_hello("小红") # 输出:你好, 小红 !
带返回值的函数
def add(a, b):
return a + b
result = add(3, 5)
print(result) # 输出:8
return是"返回"的意思,把结果交还给调用者。
参数的默认值
def say_hello(name="同学"):
print("你好,", name, "!")
say_hello() # 输出:你好, 同学 !
say_hello("小明") # 输出:你好, 小明 !
🎯 核心理解: 函数让你写一次代码,反复使用。写程序时,凡是重复出现的代码,都应该考虑"打包"成函数。
09 模块与包 —— 用别人写好的代码
Python 最大的优势就是有海量"现成的工具"可以用。这些工具叫模块。
导入模块
# 导入整个模块
import math
print(math.sqrt(16)) # 4.0(开平方)
print(math.pi) # 3.141592653589793(圆周率)
# 只导入模块中的特定功能
from random import randint
num = randint(1, 10) # 生成1到10之间的随机整数
print(num)
# 给模块起别名(让名字变短)
import datetime as dt
now = dt.datetime.now()
print(now)
自己写模块
如果你把一些常用函数存在 my_tools.py 文件里,在另一个文件中可以这样导入:
# 假设 my_tools.py 里有一个 add 函数
from my_tools import add
print(add(3, 5))
🎯 核心理解: 学Python某种意义上就是在学"有哪些好用的模块,以及怎么用它们"。
10 文件操作 —— 把数据"存下来"
程序运行时的数据存在内存里,关掉程序就没了。用文件可以把数据永久保存在硬盘上。
写文件
# 写入文本文件
with open("test.txt", "w", encoding="utf-8") as f:
f.write("你好,Python!\n")
f.write("第二行内容")
"w"表示写入模式。如果文件不存在会自动创建,存在则覆盖原有内容。
encoding="utf-8"是为了支持中文,建议每次都写上。
读文件
with open("test.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
逐行读取
with open("test.txt", "r", encoding="utf-8") as f:
for line in f:
print(line) # 每行依次打印
"r"表示读取模式。如果文件不存在会报错。
文件模式速查
| 模式 | 含义 |
|---|---|
| "r" | 只读(文件必须存在) |
| "w" | 写入(覆盖原内容,没有则创建) |
| "a" | 追加(在原内容后面添加) |
🎯 核心理解: 文件操作让程序"有记忆"。没有文件操作,程序每次重启都是一片空白。
11 异常处理 —— 让程序"不崩溃"
程序运行时不可避免会遇到错误。如果什么都不做,程序就直接崩溃退出。用
try-except可以"接住"错误,让程序继续运行。
基本写法
try:
num = int(input("请输入一个数字:"))
print("你输入了:", num)
except ValueError:
print("输入的不是有效数字,请重新运行")
运行效果:
请输入一个数字:abc
输入的不是有效数字,请重新运行
程序没有崩溃,而是给了用户一个友好的提示。
捕获多种异常
try:
nums = [1, 2, 3]
index = int(input("请输入索引:"))
print(nums[index])
except ValueError:
print("请输入数字")
except IndexError:
print("索引超出范围")
无论是否报错都执行(finally)
try:
f = open("test.txt", "r")
print(f.read())
except FileNotFoundError:
print("文件不存在")
finally:
print("程序执行完毕") # 无论成功还是失败都会执行
🎯 核心理解: 异常处理让你可以控制"程序出错时该怎么办",而不是任由它崩溃。
12 面向对象入门 —— 用"类"来组织代码
前面学的函数是把"动作"打包。类(class)是把"属性"和"动作"打包在一起。
定义一个类
class Student:
def __init__(self, name, score):
self.name = name # 属性:名字
self.score = score # 属性:分数
def say_hello(self):
print("你好,我是", self.name)
def show_score(self):
print(self.name, "考了", self.score, "分")
__init__是初始化方法,在创建对象时自动执行。
self表示"对象自己"。
创建并使用对象
# 创建一个学生对象
stu1 = Student("小明", 95)
stu1.say_hello() # 你好,我是 小明
stu1.show_score() # 小明 考了 95 分
# 创建另一个学生
stu2 = Student("小红", 88)
stu2.show_score() # 小红 考了 88 分
类的继承(简单了解)
class Person:
def __init__(self, name):
self.name = name
def say_hello(self):
print("你好,我是", self.name)
class Student(Person):
def __init__(self, name, score):
super().__init__(name) # 调用父类的初始化
self.score = score
def show_score(self):
print(self.name, "考了", self.score, "分")
stu = Student("小明", 95)
stu.say_hello() # 继承自 Person,输出:你好,我是 小明
stu.show_score() # 特有方法,输出:小明 考了 95 分
🎯 核心理解: 面向对象是一种代码组织方式,当你的程序变复杂时,它能帮你保持代码清晰。你可以把它看作更高级的"打包"。
本章小结
板块二到这里就结束了。你应该已经接触了 Python 的全部核心语法:
| 知识点 | 掌握了吗 |
|---|---|
| 变量与数据类型 | ✅ |
输入输出(input / print) |
✅ |
条件判断(if-elif-else) |
✅ |
循环(for / while) |
✅ |
| 列表与字典 | ✅ |
| 函数(定义、参数、返回值) | ✅ |
模块导入(import) |
✅ |
文件操作(open) |
✅ |
异常处理(try-except) |
✅ |
面向对象入门(class) |
✅ |
下章预告: 板块三 —— 入门案例。我们会用你学到的知识做几个完整的项目,包括猜数字游戏、学生成绩管理系统、Todo List 工具。
欢迎在评论区说说你学到这里最大的收获或者最困惑的地方。😊