PYTHON基础技能 – Python数据类型转换中的隐藏宝藏

释放双眼,带上耳机,听听看~!

1. 什么是数据类型?

在编程中,数据类型定义了变量可以存储的数据种类。Python 中常见的数据类型有整型(

1
int

)、浮点型(

1
float

)、字符串(

1
str

)等。正确使用这些类型是编写高效程序的基础。

2. 数据类型转换的重要性

随着项目的复杂度增加,不同类型的数据常常需要相互转换以满足特定需求。例如,从用户输入获取的数据可能是字符串类型,但我们需要将其转换为数值类型来进行数学计算。

3. 常见的数据类型转换

  • 从字符串到整数 (
    1
    int()

    )

  • 从字符串到浮点数 (
    1
    float()

    )

  • 从整数或浮点数到字符串 (
    1
    str()

    )

4. 示例 1:从字符串到整数


1
<em>#&nbsp;将字符串&nbsp;"123"&nbsp;转换为整数</em><br>s&nbsp;=&nbsp;"123"<br>i&nbsp;=&nbsp;int(s)<br>print(i)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;123</em>

解释

1
int()

函数将字符串

1
s

转换成整数。注意,如果

1
s

包含非数字字符,会抛出

1
ValueError

异常。

5. 示例 2:从字符串到浮点数


1
f&nbsp;=&nbsp;float("123.45")<br>print(f)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;123.45</em>

解释

1
float()

函数将字符串

1
"123.45"

转换成浮点数。同样地,如果字符串不是有效的浮点数格式,也会引发错误。

6. 示例 3:从整数到字符串


1
age&nbsp;=&nbsp;25<br>age_str&nbsp;=&nbsp;str(age)<br>print(age_str)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;'25'</em>

解释

1
str()

函数将整数

1
age

转换成字符串。这对于需要将数字包含在字符串中的情况非常有用,比如生成报告或用户界面文本。

7. 更高级的数据类型转换

除了基本的类型转换外,Python 还支持更多复杂的操作,如布尔值转换、列表与字符串之间的转换等。

8. 示例 4:布尔值转换


1
<em>#&nbsp;任何非空值都会被转换为&nbsp;True</em><br>print(bool(1))&nbsp;&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;True</em><br>print(bool(""))&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;False</em>

解释

1
bool()

函数可以将任意值转换为布尔值。通常情况下,非零数值和非空字符串会被视为

1
True

,而

1
0

和空字符串会被视为

1
False

9. 示例 5:列表与字符串之间的转换


1
<em>#&nbsp;将列表转换为字符串</em><br>numbers&nbsp;=&nbsp;&#091;1,&nbsp;2,&nbsp;3]<br>numbers_str&nbsp;=&nbsp;''.join(map(str,&nbsp;numbers))<br>print(numbers_str)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;'123'</em><br><br><em>#&nbsp;将字符串转换为列表</em><br>digits&nbsp;=&nbsp;list("123")<br>print(digits)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;&#091;'1',&nbsp;'2',&nbsp;'3']</em>

11. 示例 6:列表与元组之间的转换


1
<em>#&nbsp;将列表转换为元组</em><br>my_list&nbsp;=&nbsp;&#091;1,&nbsp;2,&nbsp;3]<br>my_tuple&nbsp;=&nbsp;tuple(my_list)<br>print(my_tuple)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;(1,&nbsp;2,&nbsp;3)</em><br><br><em>#&nbsp;将元组转换为列表</em><br>my_tuple&nbsp;=&nbsp;(1,&nbsp;2,&nbsp;3)<br>my_list&nbsp;=&nbsp;list(my_tuple)<br>print(my_list)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;&#091;1,&nbsp;2,&nbsp;3]</em>

解释

  • 使用
    1
    tuple()

    函数将列表转换为元组。

  • 使用
    1
    list()

    函数将元组转换为列表。

12. 示例 7:列表与集合之间的转换


1
<em>#&nbsp;将列表转换为集合</em><br>my_list&nbsp;=&nbsp;&#091;1,&nbsp;2,&nbsp;3,&nbsp;3,&nbsp;4]<br>my_set&nbsp;=&nbsp;set(my_list)<br>print(my_set)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;{1,&nbsp;2,&nbsp;3,&nbsp;4}</em><br><br><em>#&nbsp;将集合转换为列表</em><br>my_set&nbsp;=&nbsp;{1,&nbsp;2,&nbsp;3}<br>my_list&nbsp;=&nbsp;list(my_set)<br>print(my_list)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;&#091;1,&nbsp;2,&nbsp;3]&nbsp;(顺序可能不同)</em>

解释

  • 使用
    1
    set()

    函数将列表转换为集合,同时去除了重复元素。

  • 使用
    1
    list()

    函数将集合转换为列表。

13. 示例 8:字典键值对的转换


1
<em>#&nbsp;字典键值对转换为列表</em><br>my_dict&nbsp;=&nbsp;{'a':&nbsp;1,&nbsp;'b':&nbsp;2}<br>keys&nbsp;=&nbsp;list(my_dict.keys())<br>values&nbsp;=&nbsp;list(my_dict.values())<br>print(keys)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;&#091;'a',&nbsp;'b']</em><br>print(values)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;&#091;1,&nbsp;2]</em><br><br><em>#&nbsp;列表转换为字典键值对</em><br>keys&nbsp;=&nbsp;&#091;'a',&nbsp;'b']<br>values&nbsp;=&nbsp;&#091;1,&nbsp;2]<br>my_dict&nbsp;=&nbsp;dict(zip(keys,&nbsp;values))<br>print(my_dict)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;{'a':&nbsp;1,&nbsp;'b':&nbsp;2}</em>

解释

  • 使用
    1
    dict.keys()

    1
    dict.values()

    获取字典的键和值,再通过

    1
    list()

    转换为列表。

  • 使用
    1
    zip()

    函数将两个列表组合成键值对,再通过

    1
    dict()

    转换为字典。

14. 示例 9:日期时间类型的转换


1
import&nbsp;datetime<br><br><em>#&nbsp;将字符串转换为日期时间对象</em><br>date_str&nbsp;=&nbsp;"2023-01-01"<br>date_obj&nbsp;=&nbsp;datetime.datetime.strptime(date_str,&nbsp;"%Y-%m-%d")<br>print(date_obj)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;2023-01-01&nbsp;00:00:00</em><br><br><em>#&nbsp;将日期时间对象转换为字符串</em><br>date_obj&nbsp;=&nbsp;datetime.datetime.now()<br>date_str&nbsp;=&nbsp;date_obj.strftime("%Y-%m-%d&nbsp;%H:%M:%S")<br>print(date_str)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;格式化的当前日期时间字符串</em>

解释

  • 使用
    1
    datetime.datetime.strptime()

    将字符串转换为日期时间对象。

  • 使用
    1
    datetime.datetime.strftime()

    将日期时间对象转换为字符串。

15. 示例 10:自定义类的类型转换


1
class&nbsp;Person:<br>&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;__init__(self,&nbsp;name,&nbsp;age):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.name&nbsp;=&nbsp;name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.age&nbsp;=&nbsp;age<br><br>&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;__str__(self):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;f"{self.name},&nbsp;{self.age}"<br><br><em>#&nbsp;创建一个&nbsp;Person&nbsp;对象</em><br>p&nbsp;=&nbsp;Person("Alice",&nbsp;30)<br><br><em>#&nbsp;将&nbsp;Person&nbsp;对象转换为字符串</em><br>person_str&nbsp;=&nbsp;str(p)<br>print(person_str)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;Alice,&nbsp;30</em>

解释

  • 定义一个
    1
    Person

    类,并重写

    1
    __str__

    方法来实现自定义的字符串表示形式。

  • 使用
    1
    str()

    函数将

    1
    Person

    对象转换为字符串。

实战案例:学生信息管理系统

假设我们需要开发一个学生信息管理系统,用于记录学生的姓名、年龄和成绩。系统要求用户输入学生信息,并进行相应的处理和显示。这里我们将结合前面学到的类型转换技巧来实现这一功能。


1
import&nbsp;datetime<br><br>class&nbsp;Student:<br>&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;__init__(self,&nbsp;name,&nbsp;age,&nbsp;score):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.name&nbsp;=&nbsp;name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.age&nbsp;=&nbsp;age<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.score&nbsp;=&nbsp;score<br><br>&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;__str__(self):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;f"{self.name},&nbsp;{self.age},&nbsp;{self.score}"<br><br>def&nbsp;add_student():<br>&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;=&nbsp;input("请输入学生姓名:&nbsp;")<br>&nbsp;&nbsp;&nbsp;&nbsp;age_input&nbsp;=&nbsp;input("请输入学生年龄:&nbsp;")<br>&nbsp;&nbsp;&nbsp;&nbsp;try:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;age&nbsp;=&nbsp;int(age_input)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;age&nbsp;&lt;&nbsp;0:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("年龄不能为负数,请重新输入!")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return<br>&nbsp;&nbsp;&nbsp;&nbsp;except&nbsp;ValueError:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("输入无效,请输入一个有效的年龄数字!")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;score_input&nbsp;=&nbsp;input("请输入学生成绩:&nbsp;")<br>&nbsp;&nbsp;&nbsp;&nbsp;try:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;score&nbsp;=&nbsp;float(score_input)<br>&nbsp;&nbsp;&nbsp;&nbsp;except&nbsp;ValueError:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("输入无效,请输入一个有效的成绩数字!")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;current_date&nbsp;=&nbsp;datetime.datetime.now().strftime("%Y-%m-%d")<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;student&nbsp;=&nbsp;Student(name,&nbsp;age,&nbsp;score)<br>&nbsp;&nbsp;&nbsp;&nbsp;print(f"学生信息已添加:{student}")<br>&nbsp;&nbsp;&nbsp;&nbsp;print(f"当前日期:{current_date}")<br><br>add_student()

分析

1. 我们首先定义了一个

1
Student

类,用于存储学生的姓名、年龄和成绩。 2. 使用

1
input()

函数获取用户输入的学生姓名、年龄和成绩。 3. 使用

1
try-except

结构处理年龄和成绩的类型转换,并确保输入的有效性。 4. 使用

1
datetime.datetime.now().strftime()

获取当前日期并格式化为字符串。 5. 创建

1
Student

对象,并打印学生的详细信息及当前日期。

16. 练习技巧

  • 在处理用户输入时,始终使用异常处理来确保输入的有效性。
  • 对于需要多次使用的类型转换逻辑,可以封装成函数或类的方法。
  • 利用类型转换提高代码的灵活性和可维护性。

给TA打赏
共{{data.count}}人
人已打赏
安全运维

安全运维之道:发现、解决问题的有效闭环

2024-4-14 20:59:36

安全运维

稳定性建设 – 架构优化的关键策略

2025-2-11 17:15:56

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索