Python之路(三)Python数据类

发布时间:2019-09-03 09:13:18编辑:auto阅读(1842)

    运算符

    • 算数运算符
    序号 符号 描述 实例
    1 + 加,两个操作数相加 6 + 3 输出结果9
    2 - 减,两个操作数相减 6 - 3 输出结果3
    3 * 乘,两个操作数相乘 6 * 3 输出结果18
    4 / 除,两个操作数相除 6 / 3 输出结果2
    5 % 取模,返回除法的余数 6 % 4 输出结果2
    6 ** 幂,返回x的y次幂 2 ** 3 输出结果8
    7 // 取整除,返回商的整数部分 6 / 5 输出结果1
    • 比较运算符
    序号 符号 描述 实例
    1 == 等于,比较两个对象是否相等 1 == 1 返回True
    2 != 不等于,比较两个对象是否不相等 1 != 1 返回False
    3 > 大于,返回x是否大于y 2 > 1 返回True
    4 < 小于,返回x是否小于y 2 < 1 返回False
    5 >= 大于等于,返回x是否大于等于y 2 >= 1 返回True
    6 <= 小于等于,返回x是否小于等于y 2 <= 1 返回False
    • 赋值运算符
    序号 符号 描述 实例
    1 = 简单的赋值运算符 a = 123
    2 += 加法赋值运算符 a += 1 等效于a = a + 1
    3 -= 减法赋值运算符 a -= 1 等效于a = a - 1
    4 *= 乘法赋值运算符 a *= 1 等效于a = a * 1
    5 /= 除法赋值运算符 a /= 1 等效于a = a / 1
    6 %= 取模赋值运算符 a %= 1 等效于a = a % 1
    7 **= 幂赋值运算符 a **= 1 等效于a = a ** 1
    8 //= 取整除赋值运算符 a //= 1 等效于a = a // 1
    • 逻辑运算符
    序号 符号 表达式 描述 实例
    1 and x and y 布尔''与'' 1 = 1 and 2 > 1 返回True
    2 or x or y 布尔''或" 1 == 1 or 2 > 1 返回True
    3 not not x 布尔''非'' not 1 == 1 返回False
    • 成员运算符
    序号 符号 描述 实例
    1 in 在指定的序列种找到值,返回True,否则返回False x在y序列中 返回True
    2 not in 在指定的序列种找不到值,返回True,否则返回False x不在y序列中 返回True

    整数

    Python可以处理任意大小的整数,当然包括负整数,例如1,100,-99。

    • 创建
    a = 123
    a = int(123)
    print(type(a))  // 打印变量a的类型
    • 转换
    a = '123'
    int_a = int(a)  // 将字符串转换成整数
    print(type(int_a))

    布尔值

    布尔值只有True,False两种值,要么是True,要么是False,在Python中可以直接使用True,False来表示布尔值(需要注意大小写)。

    • 创建
    a = True
    print(type(a))
    b = False
    print(type(b))
    • 转换
    a = 123
    bool_a = bool(a)    // 将整数转换成布尔值,整数转换成布尔值只有0是False,其它都是True
    print(type(bool_a))
    
    b = 'Hello'
    bool_b = bool(b)    // 将字符串转换成布尔值,字符串转换成布尔值只有空是False,其它都是True
    print(type(bool_b))

    字符串

    字符串是以单引号,双引号括起来的任意文本,例如'Hello',''Python''。

    • 创建
    a = 'Hello'
    a = str('Hello')
    print(type(a))
    • 转换
    a = 123
    str_a = str(a)  // 将整数转换成字符串
    print(type(str_a))
    • 拼接
    a = 'Hello'
    b = 'Python'
    print(a + b)
    • 格式化
    a = '我叫%s,我今年%d岁,体重%f公斤,我正再学习%s课程' %('林斌',18,55.2,'Python')
    print(a)

    %s:打印字符串
    %d:打印整数
    %f:打印浮点数

    • 子序列
    a = '谁说我的眼里只有你,让我把你忘记!'
    if '我的眼里只有你' in a:
        print('包含敏感字符')
    else:
        print('不包含敏感字符')
    • 移除空白,换行符
    a = ' linbin '
    print(a.strip())    // 移除左右两边空白
    print(a.lstrip())   // 移除左边空白
    print(a.rstrip())   // 移除右边空白
    • 分割
    a = 'my|name|is|linbin'
    print(a.split('|'))     // 以'|'进行分割
    print(a.split('|',1))   // 以左边第一个'|'进行分割
    print(a.rsplit('|',1))  // 以右边第一个'|'进行分割
    • 长度计算
    a = '谁说我的眼里只有你,让我把你忘记!'
    print(len(a))       // 计算字符长度,不是字节长度
    • 索引
    a = '谁说我的眼里只有你,让我把你忘记!'
    print(a[8])        // 从0开始开始计算
    
    a = '谁说我的眼里只有你,让我把你忘记!'
    i = 0
    while i < len(a):
        print(a[i])
        i += 1
    • 切片
    a = '谁说我的眼里只有你,让我把你忘记!'
    print(a[2])       // 取第三个字符
    print(a[-2])      // 取倒数第二个字符
    print(a[0:2])     // 从第一个字符开始,连续取两个字符
    print(a[0:])      // 从第一个字符开始,取到最后
    print(a[0:-1])    // 从第一个字符开始,取到最后,但不取最后一个字符
    print(a[0::2])    // 从第一个字符开始,取到最后,步长为2

    列表

    列表是一种有序的集合,可以随时添加和删除其中的元素,例如a = ['林斌',123,'linbin']。

    • 创建
    a = ['林斌',123,'linbin']
    a = list(['林斌',123,'linbin'])
    print(type(a))
    • 子元素
    a = ['林斌',123,'linbin']
    if 'linbin' in a:
        print('包含子元素')
    else:
        print('不包含子元素')
    
    a = ['林斌',123,'linbin']
    if '林' in a[0]:
        print('元素包含在列表内')
    else:
        print('元素不包含在列表内')
    • 索引
    a = ['林斌',123,'linbin']
    print(a[2])
    • 长度计算
    a = ['林斌',123,'linbin']
    print(len(a))
    • 切片
    a = ['林斌',123,'linbin']
    print(a[0:2])
    • 追加
    a = ['林斌',123,'linbin']
    a.append('Python')      // 追加到列表最后面
    print(a)
    • 插入
    a = ['林斌',123,'linbin']
    a.insert(1,'Python')    // 插入到指定元素后面
    print(a)
    • 删除
    a = ['林斌',123,'linbin']
    a.remove(123)   // 以元素的方式删除,从左边开始删除第一个
    print(a)
    del a[1]        // 以索引的方式删除
    print(a)
    • 更新
    a = ['林斌',123,'linbin']
    a[1] = 'LinBin'     // 如果超过列表的长度会报错
    print(a)
    • 循环
    a = ['林斌',123,'linbin']
    for i in a:
        print(i)
    
    a = ['林斌',123,'linbin']
    i = 0
    while i < len(a):
        print(a[i])
        i += 1

    字典

    字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号:分割,每个对之间用逗号,分割,整个字典包括在花括号{}中,例如{'name': 'linbin','passwod': 'axbc1kof','times': 3}

    • 创建
    a = {
        'name': 'linbin',
        'password': 'axbc1kof',
        'times': 3
    }
    
    a = dict({
        'name': 'linbin',
        'password': 'axbc1kof',
        'times': 3
    })
    • 长度计算
    a = {
        'name': 'linbin',
        'password': 'axbc1kof',
        'times': 3
    }
    print(len(a))
    • 索引取值
    a = {
        'name': 'linbin',
        'password': 'axbc1kof',
        'times': 3
    }
    print(a['password'])        // 根据key获取值
    • 追加
    a = {
        'name': 'linbin',
        'password': 'axbc1kof',
        'times': 3
    }
    a['sex'] = '男'      // 如果key不存在,则添加,如果存在,则更新
    print(a)
    • 删除
    a = {
        'name': 'linbin',
        'password': 'axbc1kof',
        'times': 3
    }
    del a['times']
    print(a)
    • 更新
    a = {
        'name': 'linbin',
        'password': 'axbc1kof',
        'times': 3
    }
    a['times'] = 4
    print(a)
    • 循环
    a = {
        'name': 'linbin',
        'password': 'axbc1kof',
        'times': 3
    }
    for i in a.keys():      // 循环keys
        print(i)
    
    a = {
        'name': 'linbin',
        'password': 'axbc1kof',
        'times': 3
    }
    for i in a.values():    // 循环values
        print(i)
    
    a = {
        'name': 'linbin',
        'password': 'axbc1kof',
        'times': 3
    }
    for i in a.items():     // 循环items
        print(i)

    字典和列表嵌套

    • 列表嵌套列表
    user_list = ['linbin','LinBin',['a','b','c']]
    • 字典嵌套字典
    user_dict = {
        'name': 'linbin',
        'password': 'axbc1kof',
        'times': 3
        'sex': {
            'Libin': '男',
            'LinBin': '女'
        }
    }
    • 字典列表相互嵌套
    user_dict = {
        'name': 'linbin',
        'password': 'axbc1kof',
        'times': {
            'k1': 'v1',
            'k2': 'v2'
        },
        'sex': ['linbin','LinBin',['a','b','c'],{'name': 'liuwenqian','password': 'axbc1kof'}]
    }
    a = user_dict['sex'][2]
    a.append('d')
    print(a)
    
    a = user_dict['sex'][3]
    a['times'] = 3
    print(a)

    小试牛刀

    基于文件存储的用户登录程序(三次登录失败,锁定用户)

    #!/usr/bin/python
    # -*- coding:utf-8 -*-
    
    # 用户信息存放于DB文件
    """
    linbin|axbc1kof|3
    LinBin|axbc1kof|2
    liuwenqian|axbc1kof|2
    LinWenQian|axbc1kof|0
    """
    
    # 打开文件并读取内容
    option1 = open('DB','r')    # 打开文件
    data = option1.read()       # 读取文件
    option1.close()             # 关闭文件
    
    # 定义用户信息列表,初始化为空
    user_info_list = []
    
    # 用户信息转成列表
    user_list = data.split('\n')
    
    # 用户信息列表转成列表嵌入字典
    for item in user_list:
        temp = item.split('|')
        user_dict = {
            'name': temp[0],
            'password': temp[1],
            'times': temp[2]
        }
        user_info_list.append(user_dict)
    
    # 循环控制标识符
    flag = True
    
    # 定义用户登录循环模块
    while flag:
        name = input('请输入用户名(退出Q|q):')      # 提示用户输入用户名,退出输入Q|q
        if name == 'Q' or name == 'q':      # 用户输入Q|q,退出程序
            break       # 跳出while循环
        else:
            for item in user_info_list:         # 循环用户信息列表
                if name == item['name']:        # 判断用户名
                    if int(item['times']) < 3:      # 判断尝试次数是否小于3
                        password = input('请输入密码:')         # 提示用户输入密码
                        if password == item['password']:        # 判断密码
                            print('登录成功!')
                            item['times'] = 0       # 尝试次数更新为零
                            flag = False            # 跳出while循环
                            break                   # 跳出for循环
                        else:
                            print('密码错误,请重新输入!')    # 密码错误,提示用户重新输入
                            item['times'] = int(item['times']) + 1      # 尝试次数加1
                            break       # 跳出for循环
                    else:
                        print('账号已锁定,请联系管理员!')      # 尝试次数大于3,提示用户账号已锁定
                        flag = False        # 跳出while循环
                        break       # 跳出for循环
            else:
                print('用户名不存在,请重新输入')       # 用户名不存在,提示用户重新输入
    
    # 定义用户信息字符串,初始化为空
    user_info_str = ''
    
    # 用户信息转成字符串
    for str in user_info_list:
        item_str = '%s|%s|%s' % (str['name'],str['password'],str['times'])
        if user_info_str == '':
            user_info_str += item_str
        else:
            user_info_str = user_info_str + '\n' + item_str
    
    # 打开文件并写入内容
    option2 = open('DB','w')        # 打开文件
    option2.write(user_info_str)    # 写入文件
    option2.close()                 # 关闭文件

关键字