🖥 学习目标
目标: 能定义变量、使用基本数据类型、写if判断
学习任务:
- 变量命名规则、赋值
- 基本数据类型:int, float, str, bool、NoneType
- 类型转换:int(), str(), float(),bool()
- if / elif / else 结构
- 比较运算符:==, !=, >, <, >=, <=
- 逻辑运算符:and, or, not
📋 相关知识
-
变量命名规则、赋值
(1)变量命名(核心规则)
硬性规则:仅含字母 / 数字 / 下划线,不能以数字开头,禁用 Python 关键字(如 if/for/True),大小写敏感;
✅ 正确:
user_age、score100、_temp、age18、_name❌ 错误:
user age(含空格)、score@100(含特殊字符)、18age、123_abc
软性规范:优先蛇形命名(如user_age)、见名知意,全大写表示常量(如PI = 3.14)。
✅ 推荐:
student_score(学生成绩)、total_price(总价)、user_name、order_number❌ 不推荐:
a1、x2y、tempuserName(小驼峰,Python 中仅用于类名)、UserName(大驼峰,仅类名用)
特殊命名约定:
-
单下划线开头(
_var):表示 “私有变量”,提示他人尽量不要直接访问(仅规范); -
双下划线开头(
__var):表示 “强私有变量”,Python 会对其做名称混淆(实际开发中少用); -
全大写(
CONSTANT):表示常量(如PI = 3.1415926),提示他人不要修改。
(2)赋值(核心语法)
基础写法:变量名 = 值,无需声明类型,支持动态修改(如age=18→age="十八");
实用技巧:支持多变量赋值(a,b=1,2)、交换赋值(x,y=y,x)、增量赋值(count += 1)。
🚨 避坑关键点
- 不能用空格 / 特殊字符(如 @、#)命名,不能把值写在赋值号左边(如
10=num);- 命名优先体现用途,拒绝
a1/x2y这类无意义命名
A. 基础赋值
# 1. 基本类型赋值
age = 25 # 整数(int)
height = 1.75 # 浮点数(float)
name = "王小明" # 字符串(str)
is_adult = True # 布尔值(bool)
hobbies = ["篮球", "阅读"] # 列表(list)
# 2. 变量重新赋值(类型可随意切换,动态类型特性)
age = "二十五" # 从int变为str,Python允许
print(age) # 输出:二十五
B. 进阶赋值技巧(高频使用)
# 1. 多变量同时赋值(解包赋值)
a, b, c = 1, 2, 3 # 一一对应赋值
print(a, b, c) # 输出:1 2 3
# 交换两个变量的值(Python特有简洁写法)
x = 10
y = 20
x, y = y, x # 无需临时变量,直接交换
print(x, y) # 输出:20 10
# 2. 链式赋值
m = n = p = 0 # m、n、p都赋值为0
print(m, n, p) # 输出:0 0 0
# 3. 增量赋值(简化运算赋值)
count = 5
count += 3 # 等价于 count = count + 3
print(count) # 输出:8
count *= 2 # 等价于 count = count * 2
print(count) # 输出:16
# 4. 解包可迭代对象(列表、元组等)
scores = [90, 85, 95]
chinese, math, english = scores
print(math) # 输出:85
-
基本数据类型
| 类型名称 | 说明 | 示例 |
|---|---|---|
| 整数 (int) | 无小数部分的数字,可正可负,支持任意大小 | 10, -5, 0, 1000000000000 |
| 浮点数 (float) | 带小数的数字,也支持科学计数法 | 3.14, -0.5, 2e3(即 2000.0) |
| 布尔值 (bool) | 只有两个值:True(真)/False(假),本质是 int 的子类(True=1,False=0) | True, False |
| 字符串 (str) | 字符的序列,用单引号、双引号或三引号包裹 | 'hello', "Python", '''多行文本''' |
| 空值 (NoneType) | 表示 “无” 或 “空”,只有一个值 None | None |
(1)整数 ( int )
- 定义:用来表示没有小数部分的数字,包括正整数、负整数和 0。就像我们日常生活中数个数、记年龄、表示数量的数字。
- 常见用法:直接赋值、数学运算(加减乘除、取余、幂运算等)。
- 代码示例:
# 定义整数变量
age = 25 # 正整数
score = -5 # 负整数
zero = 0 # 0也是整数
# 整数运算
print(10 + 5) # 加法,输出 15
print(10 - 3) # 减法,输出 7
print(10 * 3) # 乘法,输出 30
print(10 / 3) # 除法,注意:结果是浮点数,输出 3.3333333333333335
print(10 // 3) # 整除,只保留整数部分,输出 3
print(10 % 3) # 取余,输出 1
print(2 ** 3) # 幂运算(2的3次方),输出 8
(2) 浮点数 ( float )
- 定义:用来表示带有小数部分的数字,也可以表示科学计数法(如
1.23e4表示 12300)。比如表示身高(1.75 米)、价格(99.9 元)、圆周率(3.14159)等。 - 注意点:浮点数运算可能存在微小的精度误差(因为计算机二进制存储的特性),这是正常现象。
- 代码示例:
# 定义浮点数变量
height = 1.75 # 普通浮点数
price = 99.9 # 价格
sci_num = 1.23e4 # 科学计数法,等价于 12300.0
# 浮点数运算
print(0.1 + 0.2) # 注意:输出不是 0.3,而是 0.30000000000000004(精度误差)
print(3.14 * 2) # 输出 6.28
print(10.0 / 3) # 输出 3.3333333333333335
(3)字符串 ( str )
- 定义:用来表示文本信息,由字符(字母、数字、符号、中文等)组成,必须用引号包裹(单引号
'、双引号"、三引号'''/"""都可以)。 - 常见用法:赋值、拼接、索引(取单个字符)、切片(取部分字符)、常用方法(如去空格、转大小写)。
- 代码示例:
# 定义字符串变量
name = '小明' # 单引号
message = "Hello World" # 双引号
long_text = '''这是一段
多行文本''' # 三引号(支持换行)
# 字符串拼接
print('你好' + '小明') # 输出 你好小明
print('年龄:' + str(25)) # 拼接不同类型需先转换,输出 年龄:25
# 索引(从 0 开始计数)
print(message[0]) # 取第1个字符,输出 H
print(message[-1]) # 取最后1个字符,输出 d
# 常用方法
print(message.upper()) # 转大写,输出 HELLO WORLD
print(' 测试 '.strip()) # 去除首尾空格,输出 测试
(4) 布尔值 ( bool )
- 定义:只有两个值:
True(真)和False(假),主要用于判断条件(比如判断是否满足某个条件、比较大小等)。 - 注意点:
True等价于 1,False等价于 0;非 0 数字、非空字符串等会被判定为True,0、空字符串''、None等会被判定为False。 - 代码示例:
# 直接定义布尔值
is_adult = True
is_empty = False
# 条件判断中使用
print(10 > 5) # 输出 True
print(10 == 5) # 输出 False
print('abc' == 'abc') # 输出 True
# 布尔值与其他类型转换
print(bool(0)) # 输出 False
print(bool('')) # 输出 False
print(bool(1)) # 输出 True
print(bool('a')) # 输出 True
-
类型转换
实际开发中经常需要在不同类型间转换,核心转换函数:
int():转整数(浮点数转整数会舍去小数,字符串需是纯数字)float():转浮点数str():转字符串bool():转布尔值
# 类型转换示例
print(int(3.9)) # 输出 3(舍去小数)
print(float(10)) # 输出 10.0
print(str(100)) # 输出 '100'
print(bool(0)) # 输出 False
-
if /elif/else条件判断
(1)核心概念: 什么是 if/elif/else 结构?
if/elif/else 是 Python 中用于条件判断的语句,作用是让程序根据不同的条件执行不同的代码块,就像生活中 “如果… 就…,否则如果… 就…,再否则… 就…” 的逻辑。其结构
if:必须有,用于判断第一个条件,条件为True时执行其代码块。elif:可选,可多个,用于判断 “其他条件”,只有前面的if/elif条件都不满足时才会判断。else:可选,只有一个,用于 “所有前面条件都不满足” 的情况,无需写条件。
(2)语法格式
基础语法
# 注意:条件后要加冒号 :,代码块要缩进(通常4个空格)
if 条件1:
# 条件1为True时执行的代码
代码块1
elif 条件2:
# 条件1为False,且条件2为True时执行的代码
代码块2
elif 条件3:
# 前面条件都False,条件3为True时执行的代码
代码块3
else:
# 所有前面条件都False时执行的代码
代码块4
实战示例(判断成绩等级)
这是最常见的应用场景,能直观体现分支逻辑:
score = 85 # 定义成绩变量
if score >= 90:
print("优秀") # 分数≥90时执行
elif score >= 80:
print("良好") # 分数<90但≥80时执行
elif score >= 60:
print("及格") # 分数<80但≥60时执行
else:
print("不及格") # 分数<60时执行
# 输出结果:良好
(3)关键细节说明
- 缩进是核心:Python 不靠大括号
{}区分代码块,而是靠缩进(4 个空格 / 1 个 Tab),缩进错误会直接报错。 - 条件判断顺序:程序会从上到下依次判断条件,只要某个条件为
True,执行对应的代码块后就会跳过后面所有elif/else。 - elif 和 else 不能单独使用:必须跟在
if后面,且else必须在最后。 - 简化写法(单条件) :如果只有一个条件,可只用
if,不用elif/else:
age = 18
if age >= 18:
print("已成年") # 输出:已成年
-
比较运算符
(1)核心概念: 什么是比较运算符?
比较运算符也叫关系运算符,用来判断两个值之间的 “关系”(相等、不等、大小等),运算结果永远是布尔值(True 真 / False 假),这是它最核心的特点。
(2)比较运算符的具体说明
| 运算符 | 名称 | 作用 | 示例 | 结果 |
|---|---|---|---|---|
| == | 等于 | 判断左右两边值是否完全相等 | 5 == 5 | TRUE |
| != | 不等于 | 判断左右两边值是否不相等 | 5 != 3 | TRUE |
| 大于 | 判断左边值是否大于右边值 | 7 > 9 | FALSE | |
| < | 小于 | 判断左边值是否小于右边值 | 7 < 9 | TRUE |
| >= | 大于等于 | 判断左边值是否≥右边值(满足其一即可) | 8 >= 8 | TRUE |
| <= | 小于等于 | 判断左边值是否≤右边值(满足其一即可) | 8 <= 7 | FALSE |
| is | 身份运算符(是) | 判断两个对象是否指向同一个内存地址 | a=10; b=a; a is b | TRUE |
| is not | 身份运算符(不是) | 判断两个对象是否指向不同内存地址 | a=10; b=10.0; a is not b | TRUE |
| in | 成员运算符(存在) | 判断元素是否在可迭代对象(列表 / 字符串等)中 | 'a' in 'abc' / 5 in [1,2,3] | True / False |
| not in | 成员运算符(不存在) | 判断元素是否不在可迭代对象中 | 6 not in [1,2,3] | TRUE |
(3)实际代码示例
# 定义两个测试变量
a = 10
b = 5
# 1. 等于 (==):判断a和b是否相等
print(f"a == b: {a == b}") # 输出:a == b: False
# 2. 不等于 (!=):判断a和b是否不相等
print(f"a != b: {a != b}") # 输出:a != b: True
# 3. 大于 (>):判断a是否大于b
print(f"a > b: {a > b}") # 输出:a > b: True
# 4. 小于 (<):判断a是否小于b
print(f"a < b: {a < b}") # 输出:a < b: False
# 5. 大于等于 (>=):判断a是否大于或等于b
print(f"a >= b: {a >= b}") # 输出:a >= b: True
print(f"5 >= 5: {5 >= 5}") # 输出:5 >= 5: True(等于的情况也返回True)
# 6. 小于等于 (<=):判断a是否小于或等于b
print(f"a <= b: {a <= b}") # 输出:a <= b: False
print(f"5 <= 5: {5 <= 5}") # 输出:5 <= 5: True(等于的情况也返回True)
-
逻辑运算符
(1)核心概念: 什么是逻辑运算符?
逻辑运算符(and、or、not)是用来组合或修改布尔条件的工具,最终返回布尔值(True/False)或特殊的 “短路求值” 结果,是实现复杂条件判断的基础,常与 if/elif/else、while 等语句结合使用。
(2) 逻辑运算符 的具体说明
| 运算符 | 名称 | 作用说明 | 优先级 | 示例 | 结果 |
|---|---|---|---|---|---|
| and | 逻辑与 | 所有条件都为 True 时,结果才为 True; 只要有一个 False,结果为 False | 中 | True and False | FALSE |
| or | 逻辑或 | 只要有一个条件为 True,结果就为 True; 所有条件都为 False 时,结果为 False | 低 | True or False | TRUE |
| not | 逻辑非 | 取反,True 变 False,False 变 True | 高 | not True | FALSE |
(3)具体细节说明
A. and:多条件需同时满足,一假则假,支持短路求值(遇 False 即停);
# 第一个条件10>20为False,直接返回False,不会执行后面的print
result = (10>20) and print("不会执行")
print(result) # 输出:False
# 所有条件都为True,才会执行全部判断并返回最后一个True值
result = (5>3) and (8<10) and print("会执行")
print(result) # 先输出"会执行",再输出:None(因为print返回None)
B. or:多条件满足其一即可,一真则真,支持短路求值(遇 True 即停);
# 第一个条件5>3为True,直接返回True,不会执行后面的print
result = (5>3) or print("不会执行")
print(result) # 输出:True
# 所有条件都为False,才会执行全部判断并返回最后一个False值
result = (10<0) or (8>20) or print("会执行")
print(result) # 先输出"会执行",再输出:None
C. not:单条件取反,无短路求值,优先级最高;
is_login = False
# 未登录(not is_login为True)时,提示登录
if not is_login:
print("请先登录后再操作") # 输出:请先登录后再操作
content = ""
# 输入内容为空(not content为True)时,提示输入
if not content:
print("请输入有效内容") # 输出:请输入有效内容
score = 50
# 成绩不在60~100范围内(取反),提示不及格
if not (score >= 60 and score <= 100):
print("成绩不及格") # 输出:成绩不及格
D. 特殊情况:非布尔值的逻辑运算
非布尔值参与运算时,返回原始值而非布尔值,0 / 空值为 False,非 0 / 非空为 True;
- 假值对象:
0、''、[]、{}、None、False等; - 真值对象:非空字符串 / 列表 / 字典、非 0 数字、
True等。
# and:返回第一个假值对象;若全为真,返回最后一个真值对象
print(10 and 20) # 20(全真,返回最后一个)
print(0 and 20) # 0(第一个假值,返回)
print('a' and '') # ''(第二个假值,返回)
# or:返回第一个真值对象;若全为假,返回最后一个假值对象
print(0 or 20) # 20(第一个真值,返回)
print('' or 'b') # 'b'(第一个真值,返回)
print([] or {}) # {}(全假,返回最后一个)
# not:始终返回布尔值
print(not 0) # True
print(not 'abc') # False
E. 逻辑运算符的优先级
使用多个逻辑运算符时,优先级从高到低为:not > and > or,建议用括号()明确优先级,避免出错
# 优先级:not > and > or
# 原逻辑:(not 5>3) and (8<10) or (10>20) → False and True or False → False
result = not 5>3 and 8<10 or 10>20
print(result) # 输出:False
# 加括号明确优先级,逻辑更清晰
result = not ((5>3 and 8<10) or 10>20) → not (True or False) → False
print(result) # 输出:False
🎨 课后练习
【考核问题】
-
能说出 Python 有哪些基本数据类型
-
能熟练写 if-elif-else 结构
-
能处理简单的类型转换
-
能熟练编写 if-elif-else 多分支结构,完成 “成绩等级判断”“闰年判断” 等经典场景
-
能熟练使用比较运算符和逻辑运算符
【通关自测】
实操题1:基础版 - 成绩等级判断
需求
-
提示用户输入一个成绩(可能是整数 / 小数,如 85、92.5);
-
先校验输入是否为有效数字(非数字则提示 “输入错误,请输入有效成绩”);
-
再判断成绩范围:
-
90 ≤ 成绩 ≤ 100 → 输出 “优秀”;
-
80 ≤ 成绩 <90 → 输出 “良好”;
-
60 ≤ 成绩 <80 → 输出 “及格”;
-
0 ≤ 成绩 <60 → 输出 “不及格”;
-
成绩 <0 或 成绩> 100 → 输出 “成绩无效,需在 0-100 之间”。
-
实操题 2:进阶版 - 个人信息校验工具
需求
-
依次提示用户输入:姓名(字符串)、年龄(数字)、手机号(字符串);
-
完成以下校验逻辑(全部通过则输出 “信息校验通过”,否则输出对应错误):
- 姓名:非空且长度≥2 → 否则 “姓名无效,需至少 2 个字符”;
- 年龄:18 ≤ 年龄 ≤ 120 → 否则 “年龄无效,需在 18-120 之间”;
- 手机号:长度 = 11 且全部为数字 → 否则 “手机号无效,需为 11 位数字”;
-
额外要求:
-
年龄输入非数字时,提示 “年龄需输入数字”;
-
逻辑运算符必须使用 and/or/not 组合条件;
-
变量命名符合 Python 规范(如
user_name/user_age)。
-
实操题 3:综合版 - 购物优惠计算器
需求
-
提示用户输入:消费金额(数字,如 199.9)、会员等级(1/2/3,数字)、是否有优惠券(y/n);
-
计算最终应付金额,优惠规则如下(需用逻辑运算符组合条件):
-
基础规则:消费金额≥0,否则提示 “金额无效”;
-
会员优惠:
- 1 级会员:无优惠;
- 2 级会员:消费≥100 减 10 元,消费 < 100 减 5 元;
- 3 级会员:消费≥200 减 30 元,消费 < 200 减 15 元;
-
优惠券叠加:有优惠券(y)则在会员优惠后再减 8 元(最终金额≥0);
-
非数字金额 / 非 1-3 级会员 / 非 y/n 优惠券,均提示对应错误;
-
-
最终输出:“原价 XX 元,优惠后应付 XX 元”(金额保留 1 位小数)。