文章目录
-
- 引言:为什么需要变量?
- 一、什么是变量
-
- [1. 变量的概念](#1. 变量的概念)
- [2. 变量的命名规则](#2. 变量的命名规则)
- [3. 变量的赋值与重新赋值](#3. 变量的赋值与重新赋值)
- [4. 同时给多个变量赋值](#4. 同时给多个变量赋值)
- 二、数字、字符串、布尔值
- 三、类型转换
-
- [1. 隐式类型转换](#1. 隐式类型转换)
- [2. 显式类型转换](#2. 显式类型转换)
-
- [转换为整数 int()](#转换为整数 int())
- [转换为浮点数 float()](#转换为浮点数 float())
- [转换为字符串 str()](#转换为字符串 str())
- [转换为布尔值 bool()](#转换为布尔值 bool())
- [3. 类型检查](#3. 类型检查)
- 四、实战练习
- 五、常见问题与排错
- 六、本篇小结
- 下期预告
✍创作者:全栈弄潮儿
🏡 个人主页:全栈弄潮儿的个人主页
🏙️ 个人社区,欢迎你的加入:全栈开发社区

引言:为什么需要变量?
在第1期中,我们学会了编写第一个Python程序。但你可能发现了一个问题:如果我们想在程序中多次使用同一个数据,每次都要重新写一遍,非常麻烦。
比如,你想在程序中多次使用你的名字:
python
print("你好,小明!")
print("小明,欢迎学习Python!")
print("小明,今天天气不错!")
如果名字变了,你需要修改每一行代码。这时候,变量就派上用场了。
变量就像一个有标签的盒子,可以把数据存储起来,需要的时候随时取用。
一、什么是变量
1. 变量的概念
变量就像一个有标签的盒子,用来存储数据。
python
# 创建一个变量,存储你的名字
name = "小明"
# 创建一个变量,存储你的年龄
age = 25
# 使用变量
print(name) # 输出:小明
print(age) # 输出:25
💡 提示 :
=是赋值符号,意思是"把右边的值放进左边的盒子里"。
2. 变量的命名规则
python
# ✅ 正确的命名
user_name = "张三" # 使用下划线分隔
age2 = 30 # 可以包含数字,但不能以数字开头
_private = "私有变量" # 可以以下划线开头
# ❌ 错误的命名
# 2age = 30 # 不能以数字开头
# user-name = "李四" # 不能使用连字符
# class = "一班" # 不能使用Python关键字
💡 提示:变量命名要见名知意,使用英文小写字母,多个单词用下划线连接。
3. 变量的赋值与重新赋值
python
# 第一次赋值
score = 80
print(score) # 输出:80
# 重新赋值
score = 95
print(score) # 输出:95
# 基于原值修改
score = score + 5
print(score) # 输出:100
# 简写形式
score += 10 # 等同于 score = score + 10
print(score) # 输出:110
4. 同时给多个变量赋值
python
# 同时给多个变量赋相同的值
a = b = c = 0
print(a, b, c) # 输出:0 0 0
# 同时给多个变量赋不同的值
x, y, z = 1, 2, 3
print(x, y, z) # 输出:1 2 3
# 交换两个变量的值
x, y = y, x
print(x, y) # 输出:2 1
二、数字、字符串、布尔值
1. 数字类型
整数(int)
python
# 整数
age = 25
count = -10
big_number = 1000000
# 可以使用下划线提高可读性
population = 1_400_000_000
print(population) # 输出:1400000000
# 查看类型
print(type(age)) # 输出:<class 'int'>
浮点数(float)
python
# 浮点数(小数)
price = 9.99
pi = 3.14159
temperature = -5.5
# 科学计数法
big_float = 1.5e10 # 1.5 × 10^10
small_float = 2.5e-5 # 2.5 × 10^-5
print(type(price)) # 输出:<class 'float'>
数字运算
python
# 基本运算
a = 10
b = 3
print(a + b) # 加法:13
print(a - b) # 减法:7
print(a * b) # 乘法:30
print(a / b) # 除法:3.3333...(结果是浮点数)
print(a // b) # 整除:3(只取整数部分)
print(a % b) # 取余:1
print(a ** b) # 幂运算:1000(10的3次方)
2. 字符串(str)
字符串的创建
python
# 单引号
name1 = '小明'
# 双引号
name2 = "小红"
# 三引号(多行字符串)
poem = """
静夜思
床前明月光,
疑是地上霜。
"""
print(poem)
字符串操作
python
text = "Hello, Python!"
# 获取长度
print(len(text)) # 输出:14
# 拼接
greeting = "Hello" + " " + "World"
print(greeting) # 输出:Hello World
# 重复
line = "-" * 20
print(line) # 输出:--------------------
# 索引(从0开始)
print(text[0]) # 输出:H
print(text[-1]) # 输出:!
# 切片
print(text[0:5]) # 输出:Hello
print(text[7:]) # 输出:Python!
字符串方法
python
text = " Hello, Python! "
# 大小写转换
print(text.upper()) # 全大写
print(text.lower()) # 全小写
print(text.title()) # 首字母大写
# 去除空白
print(text.strip()) # 去除两端空白
print(text.lstrip()) # 去除左侧空白
print(text.rstrip()) # 去除右侧空白
# 查找与替换
print(text.find("Python")) # 查找位置:9
print(text.replace("Python", "World")) # 替换
# 分割与连接
csv_line = "apple,banana,orange"
fruits = csv_line.split(",") # 分割成列表
print(fruits) # 输出:['apple', 'banana', 'orange']
joined = "-".join(fruits) # 用-连接
print(joined) # 输出:apple-banana-orange
字符串格式化
python
name = "小明"
age = 25
score = 95.5
# 方法1:使用 + 拼接(不推荐)
msg1 = "我叫" + name + ",今年" + str(age) + "岁"
# 方法2:使用 % 格式化(旧式)
msg2 = "我叫%s,今年%d岁,分数%.1f" % (name, age, score)
# 方法3:使用 format() 方法
msg3 = "我叫{},今年{}岁,分数{:.1f}".format(name, age, score)
# 方法4:使用 f-string(推荐,Python 3.6+)
msg4 = f"我叫{name},今年{age}岁,分数{score:.1f}"
print(msg4) # 输出:我叫小明,今年25岁,分数95.5
💡 提示:推荐使用 f-string,语法简洁,可读性强。
3. 布尔值(bool)
python
# 布尔值只有两个:True 和 False
is_student = True
is_working = False
print(type(is_student)) # 输出:<class 'bool'>
# 布尔值常用于条件判断
age = 20
is_adult = age >= 18
print(is_adult) # 输出:True
# 比较运算
print(5 > 3) # True
print(5 < 3) # False
print(5 == 5) # True(等于)
print(5 != 3) # True(不等于)
print(5 >= 5) # True(大于等于)
print(5 <= 3) # False(小于等于)
# 逻辑运算
print(True and True) # True
print(True and False) # False
print(True or False) # True
print(not True) # False
# 实际应用
age = 25
has_id = True
can_enter = age >= 18 and has_id
print(can_enter) # 输出:True
4. None 类型
python
# None 表示"空"或"没有值"
result = None
print(result) # 输出:None
print(type(result)) # 输出:<class 'NoneType'>
# 常用于表示函数没有返回值
def say_hello():
print("Hello!")
# 没有 return,默认返回 None
result = say_hello()
print(result) # 输出:None
# 判断是否为 None
if result is None:
print("结果为空")
三、类型转换
1. 隐式类型转换
Python会自动进行一些类型转换:
python
# 整数 + 浮点数 = 浮点数
result = 10 + 3.5
print(result) # 输出:13.5
print(type(result)) # 输出:<class 'float'>
# 布尔值参与运算
print(True + 1) # 输出:2(True 被当作 1)
print(False + 1) # 输出:1(False 被当作 0)
2. 显式类型转换
转换为整数 int()
python
# 浮点数转整数(直接截断小数部分)
print(int(3.7)) # 输出:3
print(int(-3.7)) # 输出:-3
# 字符串转整数
print(int("123")) # 输出:123
print(int("-45")) # 输出:-45
# 布尔值转整数
print(int(True)) # 输出:1
print(int(False)) # 输出:0
# ⚠️ 注意:无法转换的字符串会报错
# int("hello") # 报错:ValueError
# int("3.14") # 报错:ValueError(不能直接转换小数字符串)
转换为浮点数 float()
python
# 整数转浮点数
print(float(10)) # 输出:10.0
# 字符串转浮点数
print(float("3.14")) # 输出:3.14
print(float("100")) # 输出:100.0
# 布尔值转浮点数
print(float(True)) # 输出:1.0
print(float(False)) # 输出:0.0
转换为字符串 str()
python
# 数字转字符串
print(str(123)) # 输出:"123"
print(str(3.14)) # 输出:"3.14"
# 布尔值转字符串
print(str(True)) # 输出:"True"
print(str(False)) # 输出:"False"
# 实际应用:拼接字符串
age = 25
# print("我今年" + age + "岁") # 报错!不能直接拼接
print("我今年" + str(age) + "岁") # 正确:我今年25岁
转换为布尔值 bool()
python
# 数字转布尔值
print(bool(0)) # False(0是False)
print(bool(1)) # True(非0是True)
print(bool(-5)) # True
print(bool(3.14)) # True
# 字符串转布尔值
print(bool("")) # False(空字符串是False)
print(bool("hello")) # True(非空字符串是True)
print(bool(" ")) # True(空格也是True)
# None转布尔值
print(bool(None)) # False
# 实际应用
name = input("请输入你的名字:")
if name: # 等价于 if name != ""
print(f"你好,{name}!")
else:
print("名字不能为空!")
3. 类型检查
python
# 使用 type() 查看类型
x = 10
print(type(x)) # 输出:<class 'int'>
# 使用 isinstance() 检查类型
print(isinstance(x, int)) # 输出:True
print(isinstance(x, float)) # 输出:False
print(isinstance(x, (int, float))) # 输出:True(是int或float之一)
四、实战练习
练习1:个人信息卡
python
# 创建变量存储个人信息
name = "小明"
age = 25
height = 1.75
is_student = True
# 使用 f-string 格式化输出
print("=" * 30)
print(f"姓名:{name}")
print(f"年龄:{age}岁")
print(f"身高:{height}米")
print(f"是否学生:{'是' if is_student else '否'}")
print("=" * 30)
预期输出:
==============================
姓名:小明
年龄:25岁
身高:1.75米
是否学生:是
==============================
练习2:温度转换器
python
# 摄氏度转华氏度
celsius = 25
fahrenheit = celsius * 9/5 + 32
print(f"{celsius}°C = {fahrenheit}°F")
# 华氏度转摄氏度
fahrenheit = 77
celsius = (fahrenheit - 32) * 5/9
print(f"{fahrenheit}°F = {celsius:.1f}°C")
练习3:数据类型转换练习
python
# 用户输入的是字符串,需要转换
user_input = "25"
# 转换为整数
age = int(user_input)
print(f"年龄:{age},类型:{type(age)}")
# 转换为浮点数
price = float("9.99")
print(f"价格:{price},类型:{type(price)}")
# 转换为字符串
score = 95
score_str = str(score)
print(f"分数:{score_str},类型:{type(score_str)}")
练习4:简单计算器
python
# 获取用户输入
num1 = input("请输入第一个数字:")
num2 = input("请输入第二个数字:")
# 转换为浮点数
a = float(num1)
b = float(num2)
# 计算并输出
print(f"\n计算结果:")
print(f"{a} + {b} = {a + b}")
print(f"{a} - {b} = {a - b}")
print(f"{a} × {b} = {a * b}")
print(f"{a} ÷ {b} = {a / b:.2f}")
五、常见问题与排错
问题1:类型不匹配报错
原因 :字符串和数字不能直接拼接
解决方法:
- 使用
str()将数字转换为字符串 - 或使用 f-string 格式化
python
# ❌ 错误
age = 25
print("我今年" + age + "岁") # TypeError
# ✅ 正确
print("我今年" + str(age) + "岁")
# 或使用 f-string
print(f"我今年{age}岁")
问题2:无法转换的类型
原因 :字符串内容不是有效的数字格式
解决方法:
- 确保字符串内容是有效的数字
- 使用 try-except 处理异常
python
# ❌ 错误
number = int("hello") # ValueError
# ✅ 正确:使用 try-except 处理
try:
number = int("hello")
except ValueError:
print("无法转换为整数")
问题3:变量未定义
原因 :使用变量前没有定义
解决方法:先定义再使用
python
# ❌ 错误
print(x) # NameError
# ✅ 正确:先定义再使用
x = 10
print(x)
六、本篇小结
今天,我们完成了以下学习内容:
- 变量的概念:理解变量是存储数据的容器
- 变量命名规则:掌握变量命名的规范和限制
- 三种基本数据类型 :
- 数字(int、float):用于数学运算
- 字符串(str):用于文本处理
- 布尔值(bool):用于条件判断
- 类型转换:学会使用 int()、float()、str()、bool() 进行类型转换
请记住这三个结论:
- 变量是编程的基础:所有程序都需要用变量来存储和处理数据
- 数据类型决定操作方式:不同类型的数据支持不同的操作
- 类型转换要谨慎:转换前确保数据格式有效
下期预告
在第3期中,我们将学习Python的条件判断与循环,包括:
- if-elif-else 条件语句
- for 循环和 while 循环
- break、continue 和 pass
- 循环的高级用法
敬请期待!
✍坚持原创,求关注,点赞,收藏