zoukankan      html  css  js  c++  java
  • 2019.8.6学习内容及笔记

    小结

    python深浅拷贝

    # 拷贝(赋值)
    # l1 = [1,2,3]
    # l2 = l1
    # l1.append(4)
    # print(l1)
    # print(l2)
    # 因为列表是可变类型,所以l1的值发生变化,l2的值也会跟着变化(这就是拷贝)
    
    # 浅拷贝
    # import copy #
    # l1 = [1,2,3,4,[5,6,7]]
    # l2 = copy.copy(a) #(浅拷贝)
    # l1.append(8)
    # print(l1) #
    # print(l2) #
    # l1[4].append(8)
    # print(l1)
    # print(l2)
    # 当b为a的浅拷贝对象时,a内可变类型变化,b变化,a内不可变型变化,b不变化
    
    # 深拷贝
    # import copy
    # l1 = [1,2,3,[4,5,6]]
    # l2 = copy.deepcopy(l1)
    #l1.append(7)
    #print(l1)
    #print(l2)
    # s[3].append(7)
    # print(l1)
    # print(l2)
    # 注:当l2为l1的深拷贝对象时,l1内的可变类型变化,l2不变化;l1的不可变型变化;l2不变化
    # 总结
    # 牢记:拷贝、浅拷贝、深拷贝  只针对可变数据类型
    # 拷贝: 当lt2为lt的拷贝对象时,lt内的可变类型变化,lt2变化;lt内的不可变类型变化,lt2变化
    # 简单的赋值
    
    # 浅拷贝:当lt2为lt的浅拷贝对象时,lt内的可变类型变化,lt2变化;lt内的不可变类型变化,lt2不变化
    # copy.copy()   可变数据的类型中的内置方法.copy()
    
    # 深拷贝: 当lt2为lt的深拷贝对象时,lt内的可变类型变化,lt2不变化;lt内的不可变类型变化,lt2不变
    # copy.deepcopy()
    ### 作用:毫无用处,面试经常问
    

    基本文件处理

    什么是文件:操作系统提供给客户的虚拟单位

    文件的作用:存储数据

    打开文件的流程

    1. 找到文件路径 # 用鼠标右键点击文件,copy path
    path = r'r'E:老男孩学习笔记7.29学习内容1 执行Python程序的两种方式'
    
    
    1. 双击打开
    f = open(path,'w') # r-->read 只读; w-->只写,清空当前文件后写入,自动创建文件
    print(f)
    
    1. 看文件
    data = f.read()
    
    print(data)
    
    1. 写文件
    f.write('nick handsome')
    
    1. 关闭文件

    注:用 del f ,只删除了文件的引用以及文件在python内存中的占用,但是没有删除对操作系统的占用

    用 f.close() 关闭操作系统对文件的占用

    绝对路径和相对路径

    绝对路径:从跟目录(C/D/E盘)开始,这个叫绝对路径

    path = r'r'E:老男孩学习笔记7.29学习内容1 执行Python程序的两种方式'
    f = open(path,'w')
    f.write('nick handsome')
    f.close() #关闭文件
    

    相对路径:(当前文件夹下,可以直接写文件名)

    path = r'test.py' #鼠标右键点击文件,copy path
    f = open(path,'r')
    print(f.read)
    f.close() # 关闭文件
    

    异常处理

    异常:就是报错

    异常分为语法异常和逻辑异常

    语法异常:语法异常的错误都是(SyntaxError)

    查找异常有:

    try:
        if
     except Exception as e:  # 语法异常无法捕捉
        print(e)
    

    逻辑异常:错误往往不一样

     print(1)
    # try:  # 尝试
    #     print(3)  # 代码自上而下,上面会运行
    #     1 / 0  # 错误不影响其他的代码,报错马上终止try缩进里面的代码
    #     print(4)
    # except:  # 除此之外
    #     pass
    # 1/0
    # print(2)
    
    
    print(1)
    # try:  # 尝试
    #     num = input('输入一个值')  # 123124
    #     dic = {'0': 'a'}
    #     print(dic[num])  # dic['123124']
    #
    #     print(3)  # 代码自上而下,上面会运行
    #     1 / int(num)  # 错误不影响其他的代码,报错马上终止try缩进里面的代码
    #     print(4)
    
    
    except ZeroDivisionError as e:  # 除此之外  # try里面的代码出了什么错误,就得用什么错误捕捉  # as是把错误赋值给e#     print('e:', e)# except KeyError as e:  # 可以写多个except捕捉多个异常#     print('e:', e)
    
    

    最重要,以后想捕捉异常就用这个,只要记住这个就够了,如下

    print(1)
    # try:  # 尝试
    #     num = input('输入一个值')  # 123124
    #     dic = {'0': 'a'}
    #     print(dic[num])  # dic['123124']
    #
    #     print(3)  # 代码自上而下,上面会运行
    #     1 / int(num)  # 错误不影响其他的代码,报错马上终止try缩进里面的代码
    #     print(4)
    #
    
    # except Exception as e:  # Exception可以捕捉任意异常
    #     print('e:', e)
    #
    # # 1/0
    # print(2)
    
    
    

    数据类型分类

    按存值个数

    存一个值:整型、浮点型、字符串

    存多个值:列表、字典、集合、元组

    按有序or无序:

    有序:字符串、列表、元组

    无序:字典、集合

    按可变or不可变:

    可变:列表、集合、字典

    不可变:整型、浮点型、元组、字符串

    TODO 的用法

    if true:           
       TODO :
      pass
    
    

    在python解释器下方会显示TODO,点击直接跳至该处

    猜年龄游戏

    # 0. 奖励物品存放在文件price.txt
    #
    # 1. 给定年龄(随机18-60),用户可以猜三次年龄
    #
    # 2. 年龄猜对,让用户选择两次奖励
    #
    # 3. 用户选择两次奖励后可以退出
    # '''
    #
    # import random
    #
    # age = random.randint(18, 60)  # 随机一个数字,18-60岁
    # count = 0  # 计数
    #
    # f = open('price.txt', 'r', encoding='utf8')  # price.txt右下角为什么编码,则encoding为什么编码
    # price_dict = f.read()
    # price_dict = eval(price_dict)  # type:dict # 获取奖品字典
    # f.close()
    #
    # price_self = dict()
    #
    # while count < 3:
    #     count += 1
    #
    #     inp_age = input('请输入你想要猜的年龄:')
    #
    #     # 判断是否为纯数字
    #     if not inp_age.isdigit():
    #         print('搞事就骂你傻逼')
    #         continue
    #
    #     inp_age = int(inp_age)
    #
    #     # 筛选年龄范围
    #     if inp_age > 60 or inp_age < 18:
    #         print('好好题目,18-60岁,非诚勿扰')
    #         continue
    #
    #     # 核心逻辑
    #     if age == inp_age:
    #         print('猜中了,请选择你的奖品')
    #
    #         # 打印商品
    #         for k, v in price_dict.items():
    #             print(f'奖品编号:{k} {v}')
    #
    #         # 获取奖品的两次循环
    #         for i in range(2):
    #             price_choice = input('请输入你需要的奖品编号:')
    #
    #             if not price_choice.isdigit():
    #                 print("恭喜你已经获得一次奖品,奖品为空!并且请输入正确的奖品编号!")
    #                 continue
    #
    #             price_choice = int(price_choice)
    #
    #             if price_choice not in price_dict:
    #                 print('你想多了吧!')
    #             else:
    #                 price_get = price_dict[price_choice]
    #                 print(f'恭喜中奖:{price_get}')
    #
    #                 if price_self.get(price_get):
    #                     price_self[price_get] += 1
    #                 else:
    #                     price_self[price_get] = 1
    #
    #         print(f'恭喜你获得以下奖品:{price_self}')
    #         break
    #
    #     elif age > inp_age:
    #         print('猜小了')
    #     elif age < inp_age:
    #         print('猜大了')
    #
    #     continue
    
    
    
    
    
    
    '''
    0. 奖励物品存放在文件price.txt
    
    1. 给定年龄(随机18-60),用户可以猜三次年龄
    
    2. 年龄猜对,让用户选择两次奖励
    
    3. 用户选择两次奖励后可以退出
    '''
    
    import random
    
    age = random.randint(18, 60)  # 随机一个数字,18-60岁
    count = 0  # 计数
    
    f = open('price.txt', 'r', encoding='utf8')  # price.txt右下角为什么编码,则encoding为什么编码
    price_dict = f.read()
    price_dict = eval(price_dict)  # type:dict # 获取奖品字典
    f.close()
    
    price_self = dict()
    
    while count < 3:
        count += 1
    
        inp_age = input('请输入你想要猜的年龄:')
    
        # 判断是否为纯数字
        if not inp_age.isdigit():
            print('搞事就骂你傻逼')
            continue
    
        inp_age = int(inp_age)
    
        # 筛选年龄范围
        if inp_age > 60 or inp_age < 18:
            print('好好题目,18-60岁,非诚勿扰')
            continue
    
        # 核心逻辑
        if age == inp_age:
            print('猜中了,请选择你的奖品')
    
            # 打印商品
            for k, v in price_dict.items():
                print(f'奖品编号:{k} {v}')
    
            # 获取奖品的两次循环
            for i in range(2):
                price_y = input(f'请按"Y or y"转动转盘{chr(9803)}:').lower()
    
                if price_y != 'y':
                    print("恭喜你已经获得一次奖品,奖品为空!并且请输入'Y or y'!")
                    continue
    
                # 
                price_choice = random.randint(0, 10000)
    
                if price_choice > 0 and price_choice < 9900:
                    price_choice = 6
                    print('恭喜你, 下次一定有好东西!!', end=' ')
                else:
                    price_choice = price_choice % 7
    
                if price_choice not in price_dict:
                    print('你想多了吧!')
                else:
                    price_get = price_dict[price_choice]
                    print(f'恭喜中奖:{price_get}')
    
                    if price_self.get(price_get):
                        price_self[price_get] += 1
                    else:
                        price_self[price_get] = 1
    
            print(f'恭喜你获得以下奖品:{price_self}')
            break
    
        elif age > inp_age:
            print('猜小了')
        elif age < inp_age:
            print('猜大了')
    
        continue
    
    
  • 相关阅读:
    synchronized一个(二)
    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
    java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout
    NTFS簇大小对硬盘性能的影响测试
    Win10 开机自动打开上次未关闭程序怎么办
    Win10快速访问怎么关闭?
    激活windows 10 LTSC 2019(无需工具)
    WPS文字双行合一
    插入百度地图代码后,页面文字不能被选中的解决方案
    WPS文字批量选中整行(以第?章为例)
  • 原文地址:https://www.cnblogs.com/chmily/p/11317977.html
Copyright © 2011-2022 走看看