在 Python 中,将其他数据类型转换为整型(int
)主要通过 int()
函数实现。以下是详细的原理、用法和可执行代码示例:
转换原理
- 底层机制:
int()
调用对象的__int__()
方法实现转换。 - 支持类型:可以转换
float
、bool
、符合格式的str
(如"123"
)、bytes
(需可解码为数字)等类型。 - 失败条件:若数据无法转换为整数(如
"abc"
字符串),会抛出ValueError
。
基本用法
1. 从浮点数转换(截断小数,不四舍五入)
num_float = 3.9
num_int = int(num_float) # 结果为 3(直接丢弃小数部分)
print(num_int) # 输出: 3
输出:
2. 从布尔值转换
bool_true = True
bool_false = False
print(int(bool_true)) # 输出: 1
print(int(bool_false)) # 输出: 0
输出:
3. 从字符串转换(需为整数格式)
str_num = "123"
num = int(str_num)
print(num + 1) # 输出: 124
# 若字符串包含非数字字符会报错
# int("123.5") # ValueError
输出:
4. 从其他进制字符串转换
binary_str = "1010" # 二进制
hex_str = "1a" # 十六进制(a 表示 10)
print(int(binary_str, 2)) # 输出: 10
print(int(hex_str, 16)) # 输出: 26
输出:
错误处理
使用 try-except
捕获无效输入
user_input = input("请输入一个整数:")
try:
num = int(user_input)
print("转换成功:", num)
except ValueError:
print("错误:输入内容不是有效整数!")
# 示例执行:
# 输入 "42" → 输出 "转换成功: 42"
# 输入 "3.14" → 输出 "错误:输入内容不是有效整数!"
输出:
进阶用法
1. 混合转换(浮点数字符串 → 整数)
# 先将字符串转为浮点数,再转为整数
str_float = "123.45"
num = int(float(str_float)) # 分两步转换
print(num) # 输出: 123
输出:
2. 处理科学计数法字符串
sci_str = "2e3" # 表示 2×10^3 = 2000
num = int(float(sci_str)) # 先转浮点数,再转整数
print(num) # 输出: 2000
输出:
3. 转换字节类型(bytes)
byte_data = b"123" # bytes 类型的数字
num = int(byte_data.decode()) # 先解码为字符串,再转换
print(num) # 输出: 123
输出:
完整示例代码
# 示例1:浮点数转整数
price = 99.95
discount = int(price) # 结果为 99
print("折扣价:", discount)
# 示例2:处理用户输入
while True:
user_input = input("请输入一个整数:")
if user_input.strip() == "":
print("输入不能为空!")
continue
try:
num = int(user_input)
print(f"转换结果: {num}")
break
except ValueError:
print("输入无效,请重试!")
# 示例3:多进制转换
binary = "1101"
decimal = int(binary, 2)
print(f"二进制 {binary} 转十进制: {decimal}") # 输出: 13
hex_num = "ff"
decimal = int(hex_num, 16)
print(f"十六进制 {hex_num} 转十进制: {decimal}") # 输出: 255
输出:
注意事项
- 浮点精度问题:
print(int(2.9999999999999999)) # 输出 3(浮点数精度极限导致)
- 大数处理:
Python 的int
无大小限制,但超出系统内存的数值会导致崩溃。
通过合理使用 int()
函数和错误处理,可以安全地将多种数据类型转换为整数,适用于用户输入处理、数据清洗、数学计算等场景。