类型转换<自动转换、强制转换>

发布于:2024-07-05 ⋅ 阅读:(23) ⋅ 点赞:(0)

Python 是动态类型的语言(也称为弱类型语言),不需要像 Java 或者 C 语言一样必须在使 用变量前声明变量的类型。虽然 Python 不需要先声明变量的类型,但有时仍然需要用到类型转换。

自动转换

自动转换也称为隐式类型转换,程序在执行过程中自动完成,将数据精度低转换为数据精度高的类型。

有些时候,在对不同类型的数据进行运算时,Python 会自动将它们转成同样的类型,然后再计算结果。

n = 10 + 3.14
print(n, type(n))

n = False + 1
print(n)
print(type(n))

强制转换

强制转换也称为显式类型转换,需要在代码中使用类型函数来转换。

比如通过 input() 函数获取的数字,实际为一个数字字符串,如果需要进行计算,需要将其转换成真正的数字才能进行数据计算。

如果我们不进行类型转换,那么可能会导致程序出现错误或者无法正常运行。

# 此代码在执行时会报类型错误
title = "sinocare + 666
print(title, type(title))

title = "sinocare" + str(666)
print(title, type(title))
 

Python 提供了多种类型转换的函数:

  • int(x):将 x 转换为整数。

    如果 x 是一个字符串,那么它必须是一个表示整数的字符串,否则将会抛出异常。

  • float(x):将 x 转换为浮点数。

    如果 x 是一个字符串,那么它必须是一个表示浮点数的字符串,否则将会抛出异常。

  • complex(x):将 x 转换为复数。

    如果 x 是一个字符串,那么它必须是一个表示复数的字符串,否则将会抛出异常。

  • bool(x):将 x 转换为布尔值。

    如果 x 是一个空对象0空字符串空列表空元组空字典 或者 False ,那么将返回 False ,否则将返回 True 。

  • str(x):将 x 转换为字符串。

    如果 x 是一个对象,那么将会调用该对象的 str() 方法,将其转换为字符串。

  • chr(x): 将一个整数转换为一个字符。

    虽然结果是一个字符,但其本质依然是一个字符串类型。

# 将字符串转换为整数
x = int("123")
print(x)
print(type(x))

# 将字符串转换为浮点数
y = float("3.14")
print(y)
print(type(y))

# 将数字转换为字符串
z = str(123)
print(z)
print(type(z))

# 将数字转换为布尔类型
b = bool(123)
print(b)
print(type(b))

# 将数字转换为字符
c = chr(65)
print(c)
print(type(c))

需要注意的是,如果在强制类型转换时,传递的转换数据不合法导致无法转换,那么将会抛出异常。

x = int("今天天气真好")

执行后会提示:ValueError: invalid literal for int() with base 10: '霍格沃兹'

for exemple:

# 类型转换(自动类型转(隐式类型转换)、强制类型转换(显式类型转换))
# 隐式转换
import abc

def type_trans():
    result = 10 + 3.14  # 自动将整型转变为浮点型进行计算,自从由精度低的向精度高的转化
    print(result)  # 13.14
    print(type(result))  # <class 'float'>

    result = True + 1  # true作为1 进行计算为 2
    print(result)
    print(type(result))  # <class 'int'>

# 强制类型转换

# data = input("请输入一个数字: ")
# result = int(data) + 10   # 将data 强制转换成int 进行计算
# print(result)
# print(type(result))

print(float(1))  # 1.0
print(int(3.14))  # 3
print(int(3.74))  # 3
print(complex(3.74))  # (3.74+0j)
print(bool(3.74))  # True
print(bool())  # False
print(str(3.74))  # 3.74
print(chr(48))         # 0
print(type(chr(48)))   # <class 'str'>
print(chr(65))         # A
print(chr(97))         # a

type_trans()

网站公告

今日签到

点亮在社区的每一天
去签到