数据类型

数据类型

进制转换

  • 十进制
    • 基数0~9,逢10进1
    • 示例:123 = 1* 10^2 + 2 * 10^1 + 3 * 10^0 = 100 + 20 + 3 = 123
    • 转二进制:除2取余,倒序书写
      • 22 = 0b10110
  • 二进制
    • 基数0和1,逢2进1
    • 示例:0b110100 = 2^5 + 2^4 + 2^2 = 32 + 16 + 4 = 52
  • 八进制
    • 基数0~7,逢8进1
    • 示例:0o123 = 1 * 8^2 + 2 * 8^1 + 3 * 8^0 = 64 + 16 + 3 = 83
    • 转二进制:八进制的1位可以表示3位二进制数
      • 0o123 = 0b 001 010 011
  • 十六进制
    • 基数09、AF,逢16进1
    • 示例:0xAB = 10 * 16^1 + 11 * 16^0 = 160 + 11 = 171
    • 转二进制:十六进制的1位可以表示4位二进制数
      • 0xAB = 0b 1010 1011
  • 计算机中的数据是以哪种进制存储的,为什么?
    • 二进制,因为计算机设计时就只能识别二进制。具体原因:
    • 成本低(技术上容易实现)、稳定性高(只有两种状态)、与生活中的真假逻辑相对应
  • 计算机设计的优化
    • 拿掉减法器,负数如何表示?
      • 最高位作为符号位:0表示正数,1表示负数
      • 虽然牺牲了最高,但是解决了负数的表示问题,简化了硬件设计,降低了成本
    • 原码、反码、补码:都是为了解决负数问题而出现的,正数的三码一致
      • 负数的反码等于原码的符号位不变,其余位取反
      • 负数的补码等于对应的反码加1
    • 计算机中是以补码的形式存储数据的

数据类型

  • 说明:编程语言的数据类型都是为了解决实际问题而出现的。

  • python中常见数据类型:整型、浮点、布尔、字符串、列表、元组、集合、字典等

  • 数值类型:

    # 整型
    a = 250
    
    print(a)
    # type可以获取变量的数据类型
    print(type(a))
    
    # 浮点
    b = 3.14
    print(b, type(b))
    
    # 科学计数法
    c = 3.1415926e-3
    print(c)
    
    # 复数
    d = 3 + 4j
    print(d, type(d))
    
  • 特殊类型:

    # 布尔:bool,只有两个值:True/False
    a = True
    print(a, type(a))
    
    # 空:NoneType,只有一个值 None
    b = None
    print(b, type(b))
    
  • 字符串类型:

    # 字符串:str
    
    # 单行字符串
    # s1 = 'hello'
    # s1 = "hello"
    
    # 多行字符串
    # s1 = '''hello'''
    s1 = """hello
    world"""
    
    print(s1, type(s1))
    
    # 转义:让特殊字符失去意义,变为普通
    s2 = 'I\'am good man'
    print(s2)
    
    # 特殊字符:\n换行、\r回到开头、\t制表
    s3 = 'hello\\nworld'
    print(s3)
    
    # 字符串前面加一个'r',其中的所有字符都是普通字符
    s4 = r'hello\nworld'
    print(s4)
    
  • 元组与列表

    # 列表:list,可以存储一系列的任意类型的数据
    lt = [100, 200, 300]
    print(lt, type(lt))
    
    # 元素访问:通过下标访问,从0开始
    print(lt[0])
    
    # 存在越界问题,会报IndexError错
    # print(lt[3])
    
    # 元组:tuple,元组是不可更改的
    # tp = (10, 20, 30)
    tp = 10, 20, 30
    print(tp, type(tp))
    print(tp[1])
    
    # 定义只有一个元素的元组时,末尾需要添加一个逗号
    tp2 = (10,)
    print(type(tp2))
    
  • 集合类型

    # 集合:set,元素是无序的且不能重复
    s1 = {'小马', '小乔', '小方', '小周', '小马'}
    s2 = {'小杜', '小马', '小王'}
    
    print(s1, type(s1))
    
    # 交集
    print(s1 & s2)
    
    # 并集
    print(s1 | s2)
    
    # 差集
    print(s1 - s2)
    print(s2 - s1)
    
    # 定义空集合不能使用{},这是给定义空字典使用的
    # s3 = {}
    # 这样可以定义空集合
    s3 = set()
    print(type(s3))
    
  • 字典类型:是一种映射类型

    • 元素是由键值对构成的
    • 键值之间使用:进行连接
    • 键是唯一的,值是任意的
    • 字典是可以更改的
    • 示例:
    # 字典:dict
    d1 = {'name': 'dahua', 'age': 18}
    print(d1, type(d1))
    
    # 获取元素:根据键获取值
    print(d1['name'])
    
    # 当键不存在时,会报KeyError错
    # print(d1['weight'])
    
    # 根据键返回值,键存在时返回对应的值,不存在则返回None
    # 可以指定默认值
    print(d1.get('weight', '90'))
    
    # 统计元素个数,字典统计的是键值对的个数
    print(len(d1))
    print(len([1, 2, 3]))
    print(len('hello'))
    

类型转换

  • 隐式类型转换:混合运算、条件判断

  • 强制类型转换:使用专门的函数

    • 示例:
    # 转换为整数
    # a = int(3.84)
    # base:指定需要转换的参数的进制类型
    a = int('123', base=8)
    
    # 转换为浮点数
    a = float(250)
    
    # 转换为bool类型
    a = bool(0)
    print(int(False))
    
    # 转字符串
    a = str(123)
    print(a, type(a))
    
    # 容器转换
    b = list('hello')
    b = list((1, 2, 3))
    b = list({1, 2, 3})
    # 字典也可以转换,得到的内容只有键
    b = list({'name': 'dahua', 'age': 18})
    print(b)
    
    # 转换为字典:特定格式的数据
    lt = [('name', 'dahua'), ('age', 18)]
    c = dict(lt)
    print(c, type(c))
    

字符串操作

  • 常规操作

    s1 = 'hello'
    s2 = 'world'
    
    # '+':可以进行字符串的拼接
    print(s1 + s2)
    
    # '*':可以将指定内容重复指定次数
    print(s1 * 3)
    
    # 统计字符串中的字符个数
    print(len(s1))
    
    # 从开头提取元素,下标从0开始
    print(s1[0])
    # 从末尾提取元素,下标从-1开始
    print(s1[-1])
    
    # 切片操作:s[起始:结束:步进]
    # 提取的内容,包括起始下标,不包括结束下标
    s = '1234567890'
    print(s[3:5])
    
    # 省略边界将会提取到该边边界
    print(s[:5])
    print(s[3:])
    print(s[:])
    
    # 步进值默认为1
    print(s[::2])
    
    # 结合使用
    print(s[2:-2])
    # 逆序
    print(s[::-1])
    # 步进值为负数代表提取数据的方向
    print(s[-1:2:-1])
    
  • 格式化操作

    name = 'dahua'
    age = 18
    like = 'ergou'
    
    '''
    %s:字符串
    %d:整数
    %f:浮点数
    %c:单个字符
    '''
    s = '俺叫%s,喜欢%s,今年%d' % (name, like, age)
    print(s, type(s))
    
    # 推荐方式
    print('俺叫{},喜欢{},今年{}'.format(name, like, age))
    # 可以通过序号该边顺序
    print('俺叫{1},喜欢{0},今年{2}'.format(name, like, age))
    # 可以给参数起名字,通过名字设置顺序
    print('俺叫{n},喜欢{l},今年{a}'.format(n=name, l=like, a=age))
    
    s = 'hello'
    
    # 填充与对齐
    # 左对齐
    print('{0:<8}'.format(s) + 'AAAAAA')
    # 右对齐
    print('{:>8}'.format(s))
    # 指定填充,默认填充空格
    print('{0:0<8}'.format(s))
    print('{0:A<8}'.format(s))
    
    print('{:b}'.format(123))
    print('{:o}'.format(123))
    print('{:x}'.format(123))
    print('{:#x}'.format(123))
    print('{:#X}'.format(123))
    
    # 转换函数
    print(bin(123))
    print(oct(123))
    print(hex(123))
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值