Python实战第2期: 变量与数据类型

文章目录

✍创作者:全栈弄潮儿

🏡 个人主页:全栈弄潮儿的个人主页

🏙️ 个人社区,欢迎你的加入:全栈开发社区

📙 专栏:Python实战教程:从零基础到AI Agent开发

引言:为什么需要变量?

在第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:类型不匹配报错

原因 :字符串和数字不能直接拼接

解决方法:

  1. 使用 str() 将数字转换为字符串
  2. 或使用 f-string 格式化
python 复制代码
# ❌ 错误
age = 25
print("我今年" + age + "岁")  # TypeError

# ✅ 正确
print("我今年" + str(age) + "岁")
# 或使用 f-string
print(f"我今年{age}岁")

问题2:无法转换的类型

原因 :字符串内容不是有效的数字格式

解决方法:

  1. 确保字符串内容是有效的数字
  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)

六、本篇小结

今天,我们完成了以下学习内容:

  1. 变量的概念:理解变量是存储数据的容器
  2. 变量命名规则:掌握变量命名的规范和限制
  3. 三种基本数据类型 :
    • 数字(int、float):用于数学运算
    • 字符串(str):用于文本处理
    • 布尔值(bool):用于条件判断
  4. 类型转换:学会使用 int()、float()、str()、bool() 进行类型转换

请记住这三个结论:

  1. 变量是编程的基础:所有程序都需要用变量来存储和处理数据
  2. 数据类型决定操作方式:不同类型的数据支持不同的操作
  3. 类型转换要谨慎:转换前确保数据格式有效

下期预告

在第3期中,我们将学习Python的条件判断与循环,包括:

  • if-elif-else 条件语句
  • for 循环和 while 循环
  • break、continue 和 pass
  • 循环的高级用法

敬请期待!


✍坚持原创,求关注,点赞,收藏

相关推荐
程序员yu1 小时前
会编网络:别被入门教程骗了,Python实用能力不在语法本身
开发语言·python·学习·算法
鬼手点金2 小时前
opencode组件详解-安装方式
人工智能·python·优化器·分析器·nanogpt
Bruce_Liuxiaowei2 小时前
Python 字典默认值完全指南:从 KeyError 到 defaultdict
开发语言·数据结构·python·字典
数据杂坛2 小时前
【Python程序开发系列】一文搞清楚Gunicorn以及和Nginx的区别
python·nginx·gunicorn
zjh9005302 小时前
Visual C++ 2010 安装使用完整包:高手秘籍
python
Allen_LVyingbo2 小时前
信息化部门在AI时代的编程转移路径分析(上)
人工智能·python·算法·健康医疗·数据库开发·时序数据库·数据库架构
用户0332126663672 小时前
Python 实现 Word/TXT 互转:附完整代码
python
常山云栈3 小时前
Anaconda和uv的区别是什么?
python·anaconda·uv
AC赳赳老秦3 小时前
公开 CSV 数据集批量处理实战:用 OpenClaw 高效完成下载、清洗与标准化分析样本生成
java·开发语言·汇编·c++·python·deepseek·openclaw