Python3 数据类型转换

Python3 数据类型转换


🎯 学习目标

掌握 Python 中常用数据类型的相互转换方法,包括整型、浮点型、字符串、布尔值等基本类型的转换技巧,理解隐式转换与显式转换的区别,并能结合实际场景进行灵活应用,提升代码的健壮性与可读性。


🔑 核心重点

分类 内容
基本类型 int, float, str, bool
显式转换函数 int(), float(), str(), bool()
隐式转换 Python 自动进行的类型转换(如 int + float)
转换异常处理 使用 try-except 捕获转换错误(如 ValueError)
字符串格式化输出 f-string、.format()% 运算符

📚 详细讲解

一、Python 类型转换概述

Python 是动态类型语言,变量无需声明类型。但在某些操作中,需要将一种数据类型转换为另一种,例如:

  • 用户输入的是字符串,但你想进行数学运算。
  • 将数字结果转换为字符串以便输出给用户。
  • 判断某个对象是否“存在”时使用布尔转换。

✅ 类型转换分类:

  1. 显式转换(Explicit Conversion):由程序员主动调用函数完成。
  2. 隐式转换(Implicit Conversion):由 Python 自动完成。

二、常见数据类型之间的转换

1. 整型(int) ↔ 浮点型(float)

a = 5
b = float(a)      # 显式转换:int → float
print(b)          # 输出 5.0

c = 3.7
d = int(c)        # 显式转换:float → int(截断小数部分)
print(d)          # 输出 3

⚠️ 注意:int(3.9) 会变成 3,不会四舍五入!


2. 字符串(str) ↔ 数值类型(int / float)

s1 = "123"
n1 = int(s1)       # 字符串转整数
print(n1)          # 输出 123

s2 = "3.14"
n2 = float(s2)     # 字符串转浮点数
print(n2)          # 输出 3.14

num = 456
s3 = str(num)      # 数字转字符串
print(s3 + "abc")  # 输出 "456abc"

⚠️ 如果字符串不是合法数字,转换会抛出 ValueError 错误。


3. 布尔型(bool)与其他类型

print(bool(0))         # False
print(bool(1))         # True
print(bool(""))        # False
print(bool("hello"))   # True
print(bool([]))        # False
print(bool([1, 2]))    # True
print(bool(None))      # False

✅ 所有“空”或“零”的值在布尔上下文中会被视为 False,其余为 True


三、隐式类型转换示例

Python 在某些表达式中会自动进行类型转换:

x = 5 + 3.0     # int + float → float
print(x)        # 输出 8.0

y = "Hello" + str(123)   # 必须手动转换
print(y)        # 输出 Hello123

⚠️ 隐式转换只适用于兼容类型,字符串和数字不能直接相加,必须显式转换。


四、类型转换异常处理

在实际开发中,尤其是处理用户输入时,类型转换容易出错。建议使用 try-except 来捕获异常:

def convert_to_int(s):
    try:
        return int(s)
    except ValueError:
        print("错误:无法将该字符串转换为整数。")
        return None

user_input = input("请输入一个整数:")
result = convert_to_int(user_input)
if result is not None:
    print(f"你输入的整数是:{result}")

五、字符串格式化输出(用于展示转换结果)

✅ 推荐方式:f-string(Python 3.6+)

name = "Alice"
age = 25
print(f"{name} 的年龄是 {age} 岁。")

其他方式:

print("姓名:%s,年龄:%d" % (name, age))
print("姓名:{0},年龄:{1}".format(name, age))

⚠️ 注意事项

  • 不要盲目转换类型,应先判断是否安全。
  • 使用 try-except 捕获转换异常,避免程序崩溃。
  • 布尔转换要小心逻辑陷阱(如 ""None 都是 False)。
  • 类型转换时注意变量作用域和生命周期。
  • 字符串和数值不能直接拼接,需显式转换。

🧪 实际案例分析

📌 场景:简易单位转换器(千克 ↔ 克)

功能要求:

  • 用户输入一个重量值和单位(kg 或 g)
  • 程序将其转换为另一个单位
  • 支持错误处理(如非法输入)

示例代码:

def unit_converter():
    value = input("请输入重量值:")
    unit = input("请输入单位(kg/g):").lower()

    try:
        num = float(value)
    except ValueError:
        print("错误:请输入有效的数字!")
        return

    if unit == 'kg':
        result = num * 1000
        print(f"{num} kg = {result} g")
    elif unit == 'g':
        result = num / 1000
        print(f"{num} g = {result} kg")
    else:
        print("错误:单位只能是 kg 或 g")

unit_converter()

🧩 拓展练习(动手实践)

  1. 编写一个程序,接收用户输入的年份,并判断是否为闰年(提示:需要将字符串转为整数)。
  2. 输入一段英文句子,统计其中的单词数量(提示:使用 .split() 并转换为列表长度)。
  3. 实现一个温度转换器:从摄氏度转为华氏度(公式:℉ = ℃ × 9 ÷ 5 + 32),并格式化输出。
  4. 编写一个程序,接收两个数字和一个运算符,执行运算后输出结果(考虑类型转换和异常处理)。
  5. 使用 input() 获取用户名,使用 str()int() 组合输出:“我的名字是 Alice,今年 25 岁。”

📚 推荐阅读


🧭 下一步建议

  • 下一章学习内容:《Python 容器类型详解(列表、元组、集合、字典)》
  • 深入理解复合数据类型及其内部转换机制
  • 在 PyCharm 中调试类型转换过程中的错误
  • 开始学习函数封装,将类型转换逻辑模块化
  • 探索第三方库(如 pandas)中的类型转换功能(适用于数据分析)

如果你希望我为你提供:

  • Python 类型转换流程图 PDF
  • 更多实际项目练习题(如计算器、天气查询接口解析等)
  • 异常处理进阶技巧(自定义异常类)
  • f-string 高级用法与性能优化
  • 视频教学资源推荐(中文讲解)

欢迎随时告诉我 😊

posted @ 2025-05-27 23:50  红尘过客2022  阅读(78)  评论(0)    收藏  举报