当前位置:首页>python>Python3 数据类型转换:让数据自由流动

Python3 数据类型转换:让数据自由流动

  • 2026-09-02 19:31:47
Python3 数据类型转换:让数据自由流动

Python3 数据类型转换:让数据自由流动

我是陈默,一个正拼命上岸的码农。

你有没有遇到过这种情况?

从用户那里拿到一个数字,想用它做计算,结果程序报错。

为什么?

因为用户输入的是字符串 "25",不是数字 25。

它们看起来一样,但对计算机来说,完全是两回事。

今天我们来聊聊数据类型转换——让数据在不同类型之间自由切换。


1. 先认识几种基本类型

在开始转换之前,先快速回顾一下 Python 的几种基本数据类型:

# 整数 intage = 25print(type(age))        # 输出: <class 'int'># 浮点数 float(小数)price = 19.9print(type(price))      # 输出: <class 'float'># 字符串 strname = "陈默"print(type(name))       # 输出: <class 'str'># 布尔值 boolis_student = Trueprint(type(is_student)) # 输出: <class 'bool'>

type() 函数可以告诉你,一个变量是什么类型。


2. 字符串转数字:最常用的转换

这是最常见的场景:从用户输入或文件读取的数据,默认都是字符串。

字符串转整数:int()

# 正常转换num_str = "123"num_int = int(num_str)print(num_int)           # 输出: 123print(type(num_int))     # 输出: <class 'int'># 可以做数学运算了print(num_int + 10)      # 输出: 133

如果字符串不是纯数字呢?

# 包含小数点,转整数会报错# int("12.5")  # 这行会报错!# 正确做法:先转浮点数,再转整数num = int(float("12.5"))print(num)               # 输出: 12# 包含非数字字符,直接报错# int("abc")   # 这行会报错!# int("12a")   # 这行也会报错!

字符串转浮点数:float()

# 整数字符串num1 = float("100")print(num1)              # 输出: 100.0print(type(num1))        # 输出: <class 'float'># 小数字符串num2 = float("3.14")print(num2)              # 输出: 3.14# 科学计数法也行num3 = float("1.5e2")    # 1.5 × 10²print(num3)              # 输出: 150.0

3. 数字转字符串:拼接必备

当你需要把数字和文字拼在一起显示时,必须先转成字符串。

用 str()

age = 25score = 95.5# 直接拼接会报错# result = "年龄:" + age  # 报错!# 先转成字符串result = "年龄:" + str(age)print(result)            # 输出: 年龄:25result2 = "分数:" + str(score)print(result2)           # 输出: 分数:95.5

另一个场景:获取数字的长度

num = 12345# 数字没有长度,会报错# print(len(num))  # 报错!# 转成字符串就可以print(len(str(num)))     # 输出: 5

4. 整数和浮点数互转

浮点数转整数:int()

# 直接截断小数部分(不是四舍五入)print(int(3.7))          # 输出: 3print(int(3.2))          # 输出: 3print(int(-3.7))         # 输出: -3(往零的方向截断)# 从浮点数字符串转整数,要分两步print(int(float("3.14"))) # 输出: 3

注意:int() 是直接砍掉小数部分,不是四舍五入。

如果要四舍五入:

# 用 round() 函数print(round(3.4))        # 输出: 3print(round(3.5))        # 输出: 4print(round(3.6))        # 输出: 4# 保留小数位数print(round(3.14159, 2)) # 输出: 3.14

整数转浮点数:float()

num = 10result = float(num)print(result)            # 输出: 10.0print(type(result))      # 输出: <class 'float'>

5. 转布尔值:bool()

任何数据都可以转成布尔值。这对条件判断很重要。

什么情况是 False?

# 这些都会转成 Falseprint(bool(0))           # 输出: Falseprint(bool(0.0))         # 输出: Falseprint(bool(""))          # 输出: False(空字符串)print(bool(None))        # 输出: False(空值)# 其他都是 Trueprint(bool(1))           # 输出: Trueprint(bool(-1))          # 输出: True(负数也是 True)print(bool(0.1))         # 输出: Trueprint(bool(" "))         # 输出: True(空格也是字符)print(bool("False"))     # 输出: True(字符串 "False" 是 True!)

记住: 只有 0、0.0、空字符串 ""、None 是 False,其他都是 True。


6. 实战场景:用户输入

这是最经典的应用场景。

用户输入的数字,默认是字符串

# 模拟用户输入user_input = "25"# 直接用字符串做运算# result = user_input + 5  # 报错!不能把字符串和数字相加# 正确做法:先转类型age = int(user_input)result = age + 5print(result)            # 输出: 30

完整示例:计算器

# 模拟用户输入两个数字num1_str = "10"num2_str = "3"# 转换类型num1 = float(num1_str)num2 = float(num2_str)# 计算print(f"加法:{num1 + num2}")   # 输出: 加法:13.0print(f"减法:{num1 - num2}")   # 输出: 减法:7.0print(f"乘法:{num1 * num2}")   # 输出: 乘法:30.0print(f"除法:{num1 / num2}")   # 输出: 除法:3.333...

7. 常见错误和解决方法

错误 1:转换失败

# 字符串不是有效数字# int("hello")     # ValueError!# float("12.5.6")  # ValueError!

解决方法: 转换前先检查,或者用 try-except(后面会讲)。

错误 2:精度问题

# 浮点数计算可能有精度误差result = 0.1 + 0.2print(result)           # 输出: 0.30000000000000004# 解决方法:四舍五入print(round(result, 1)) # 输出: 0.3

错误 3:类型混淆

# 字符串 "123" 和数字 123 不相等print("123" == 123)     # 输出: False# 转换后才相等print(int("123") == 123) # 输出: True

8. 快速参考表

转换目标
函数
示例
结果
整数
int()
int("123")
123
整数
int()
int(3.7)
3
浮点数
float()
float("3.14")
3.14
浮点数
float()
float(10)
10.0
字符串
str()
str(123)
"123"
字符串
str()
str(3.14)
"3.14"
布尔值
bool()
bool(1)
True
布尔值
bool()
bool(0)
False

最后

数据类型转换看起来简单,但它是你写代码时每天都在用的技能。

记住三点:

  1. 用户输入的数字,默认是字符串,要手动转换
  2. 不同类型不能直接运算,先统一类型
  3. 转换可能会失败,要考虑异常情况

我的建议:

把今天这些代码敲一遍,尝试自己构造一些转换场景。比如:把你的年龄转成字符串,再转回来。

编程这件事,动手就懂了。

今天就到这里。

我是陈默,我们下期再见。


如果你觉得这篇文章有帮助,欢迎关注我。我会持续分享 Python 学习的干货。

最新文章

随机文章