Python的基本数据类型 整数进制转换 数据类型转换函数

Python的基本数据类型 整数进制转换 数据类型转换函数

一、Python的基本数据类型

(1)Python中有5种基本数据类型:int(整数)、float(浮点数)、str(字符串)、bool(布尔值)和None(空值)。

1. int(整数)

整数是不带小数部分的数字,可以是正数、负数或零。

# 整数示例age=25count=-10zero=0large_number=1000000

2. float(浮点数)

浮点数是带有小数部分的数字,用于表示实数。

# 浮点数示例price=19.99pi=3.14159temperature=-5.5scientific=1.23e-4# 科学计数法:0.000123

3. str(字符串)

字符串是由字符组成的序列,用于表示文本数据,用单引号、双引号或三引号包裹。

# 字符串示例name="张三"greeting='Hello, World!'multiline="""这是一个 多行字符串"""

4. bool(布尔值)

布尔值只有两个值:True(真)和False(假),用于逻辑判断。

# 布尔值示例is_active=Truehas_permission=Falseresult=10>5# 结果为True

5. None(空值)

None表示空值或没有值,是Python中的一个特殊常量。

# None示例result=Noneuser_input=None# 表示用户尚未输入

数据类型检查与转换

可以使用type()函数检查变量的数据类型:

# 类型检查print(type(42))# <class 'int'>print(type(3.14))# <class 'float'>print(type("hello"))# <class 'str'>print(type(True))# <class 'bool'>print(type(None))# <class 'NoneType'>

数据类型之间可以相互转换:

# 类型转换示例num_str="123"num_int=int(num_str)# 字符串转整数:123num_float=float(num_str)# 字符串转浮点数:123.0bool_val=bool(0)# 整数转布尔值:Falsestr_val=str(3.14)# 浮点数转字符串:"3.14"

二、Python整数进制转换

在Python中,整数(int)不仅支持十进制表示,还支持二进制、八进制和十六进制表示。进制转换是编程中常见的操作,特别是在处理底层数据、网络协议或硬件交互时。

1. 不同进制的表示方法

Python支持以下进制表示法:

# 十进制(默认)decimal_num=42# 二进制(以0b或0B开头)binary_num=0b101010# 等于十进制的42# 八进制(以0o或0O开头)octal_num=0o52# 等于十进制的42# 十六进制(以0x或0X开头)hex_num=0x2A# 等于十进制的42

2. 进制转换函数

Python提供了内置函数进行进制转换:

# 十进制转其他进制num=42# 十进制转二进制字符串bin_str=bin(num)# '0b101010'print(bin_str)# 十进制转八进制字符串oct_str=oct(num)# '0o52'print(oct_str)# 十进制转十六进制字符串hex_str=hex(num)# '0x2a'print(hex_str)# 去掉前缀print(bin(num)[2:])# '101010'print(oct(num)[2:])# '52'print(hex(num)[2:])# '2a'

3. 其他进制转十进制

使用int()函数的第二个参数可以指定进制:

# 二进制字符串转十进制binary_str="101010"decimal_from_bin=int(binary_str,2)# 42print(f"二进制{binary_str}= 十进制{decimal_from_bin}")# 八进制字符串转十进制octal_str="52"decimal_from_oct=int(octal_str,8)# 42print(f"八进制{octal_str}= 十进制{decimal_from_oct}")# 十六进制字符串转十进制hex_str="2A"decimal_from_hex=int(hex_str,16)# 42print(f"十六进制{hex_str}= 十进制{decimal_from_hex}")# 带前缀的字符串也可以转换print(int("0b101010",0))# 42(0表示自动检测前缀)print(int("0o52",0))# 42print(int("0x2A",0))# 42

4. 格式化输出

使用格式化字符串可以控制进制输出:

num=42# 格式化输出print(f"十进制:{num}")# 十进制:42print(f"二进制:{num:b}")# 二进制:101010print(f"八进制:{num:o}")# 八进制:52print(f"十六进制(小写):{num:x}")# 十六进制(小写):2aprint(f"十六进制(大写):{num:X}")# 十六进制(大写):2A# 带前缀的格式化print(f"二进制(带前缀):{num:#b}")# 二进制(带前缀):0b101010print(f"八进制(带前缀):{num:#o}")# 八进制(带前缀):0o52print(f"十六进制(带前缀):{num:#x}")# 十六进制(带前缀):0x2a

5. 实际应用示例

# 示例1:IP地址转换ip_decimal=3232235777# 192.168.1.1的十进制表示ip_hex=hex(ip_decimal)print(f"IP地址192.168.1.1的十六进制表示:{ip_hex}")# 0xc0a80101# 示例2:权限掩码(Linux文件权限)permission=0o755# rwxr-xr-xprint(f"八进制权限:{oct(permission)}")# 0o755print(f"二进制权限:{bin(permission)}")# 0b111101101# 示例3:颜色值转换color_hex=0xFF5733# 橙色color_r=(color_hex>>16)&0xFF# 红色分量color_g=(color_hex>>8)&0xFF# 绿色分量color_b=color_hex&0xFF# 蓝色分量print(f"颜色0xFF5733的RGB值:({color_r},{color_g},{color_b})")

6. 注意事项

  1. 进制前缀:二进制0b、八进制0o、十六进制0x是Python的语法要求
  2. 大小写敏感:十六进制中0x2A0x2a表示相同的值
  3. 负数表示:负数也可以用其他进制表示,如-0b101010表示十进制的-42
  4. int()函数的base参数:可以是0或2-36之间的整数,0表示自动检测前缀
# 负数示例negative_num=-42print(bin(negative_num))# -0b101010print(hex(negative_num))# -0x2a# 大数支持large_num=10**100# 10的100次方print(f"大数的十六进制:{hex(large_num)[:50]}...")

掌握整数进制转换对于理解计算机底层原理、处理二进制数据、进行位运算等高级编程技巧非常重要。

这5种基本数据类型构成了Python编程的基础:

  • int:处理整数计算
  • float:处理小数和实数
  • str:处理文本信息
  • bool:进行逻辑判断
  • None:表示空值或缺失值

掌握这些数据类型是学习Python编程的第一步,后续的列表、元组、字典等复合数据类型都是基于这些基本类型构建的。

三、Python数据类型转换函数

Python提供了丰富的内置函数用于数据类型之间的转换,这些函数在处理数据输入、格式转换和类型兼容性时非常有用。

常用类型转换函数

int() - 转换为整数

# 将字符串、浮点数转换为整数num1=int("123")# 字符串转整数:123num2=int(3.99)# 浮点数转整数:3(向下取整)num3=int(True)# 布尔值转整数:True→1, False→0num4=int("1010",2)# 二进制字符串转整数:10num5=int("FF",16)# 十六进制字符串转整数:255print(f"int('123') ={num1}")print(f"int(3.99) ={num2}")print(f"int(True) ={num3}")print(f"int('1010', 2) ={num4}")print(f"int('FF', 16) ={num5}")

float() - 转换为浮点数

# 将字符串、整数转换为浮点数f1=float("3.14")# 字符串转浮点数:3.14f2=float(42)# 整数转浮点数:42.0f3=float("1.23e-4")# 科学计数法字符串:0.000123f4=float(True)# 布尔值转浮点数:True→1.0, False→0.0print(f"float('3.14') ={f1}")print(f"float(42) ={f2}")print(f"float('1.23e-4') ={f3}")print(f"float(True) ={f4}")

str() - 转换为字符串

# 将任意类型转换为字符串s1=str(123)# 整数转字符串:"123"s2=str(3.14159)# 浮点数转字符串:"3.14159"s3=str(True)# 布尔值转字符串:"True"s4=str([1,2,3])# 列表转字符串:"[1, 2, 3]"s5=str({"name":"张三"})# 字典转字符串:"{'name': '张三'}"print(f"str(123) = '{s1}'")print(f"str(3.14159) = '{s2}'")print(f"str(True) = '{s3}'")print(f"str([1,2,3]) = '{s4}'")print(f"str({{'name':'张三'}}) = '{s5}'")

bool() - 转换为布尔值

# 将任意类型转换为布尔值b1=bool(0)# 0转换为Falseb2=bool(1)# 非零整数转换为Trueb3=bool(0.0)# 0.0转换为Falseb4=bool("")# 空字符串转换为Falseb5=bool("Hello")# 非空字符串转换为Trueb6=bool([])# 空列表转换为Falseb7=bool([1,2])# 非空列表转换为Trueb8=bool(None)# None转换为Falseprint(f"bool(0) ={b1}")print(f"bool(1) ={b2}")print(f"bool(0.0) ={b3}")print(f"bool('') ={b4}")print(f"bool('Hello') ={b5}")print(f"bool([]) ={b6}")print(f"bool([1,2]) ={b7}")print(f"bool(None) ={b8}")