路飞学城-7天集训-第二章

时间:2021-01-23 14:08:21
开发工具 pycharm
功能: 路飞学城-7天集训-第二章    ,后两个功能需要用professional版(收费)
用它创建文件夹 --Directory,创建文件 --Python File.。   console,terminal,run,debuge功能区
 
我的安装过程:
官网进入,点击download,两个版本,先 选择community 下载
 
安装选项,Create Associations是否关联文件,选择以后打开.py文件就会用PyCharm打开。Create Desktop Shortcut创建桌面快捷方式,一个32位,一个64位,64位系统选择64位。勾选Download and install JRE x86 by JetBrains,会下载安装JetBrains版的x86 JRE运行环境,没有安装的,可以选择勾选。
路飞学城-7天集训-第二章
 
问题:我没选下载JRE,以前安装java 时候装过,现在还需要么?
 
路飞学城-7天集训-第二章
 
 
2018/6/13-6/15
熟练pycharm和完成第一章作业
列表list    数据类型-数据集  
1,创建 路飞学城-7天集训-第二章   使用[] 、‘’单引号或双引号  和,
 
2.查询
路飞学城-7天集训-第二章
len()可查看列表长度 len(L2)
 
3, 切片 取列表中间的一部分  
    L2[0:3] 0和3中间为冒号,表示取列表中序列从0到2的值 ['a','b','c'](顾头不顾尾),也可写为L2[:3]从头取冒号前面可不写,从尾取,冒号后面可不写,如 L2[-3:] 的值为 ['e',1,2] 
    方括号还可以使用第二个冒号,表示步长。如 L2[:3:2] 的值为  ['a','c']   每两个/隔一个取值
     路飞学城-7天集训-第二章
 
4,增加,修改,删除元素
追加 .append('') 一个参数   如L2.append('3')会 加到L2结尾
插入 .insert(index,'')  两个参数如 L2.insert(0,3) 将3加入索引为0的位置
修改 直接赋值  L2[2]=3   则L2变为 ['a','b',3,'d','a','e',1,2]
批量修改   L2[1:3] = 'AB CD'  左右两边的数量可以不一致,可以将后边所有元素放到左边所选的位置,可能会增加或减少列表数量   此时 L2 = ['a','A','B',' ','C','D','d','a','e',1,2]
删除   .pop() 无参数 值为最后一个元素,并将列表中最后一个元素删除L2.pop()为2,此时 L2 为['a','b','c','d','a','e',1]
          .remove('') 一个参数 移除遇到的第一个元素  L2.remove('a')  L2=['b','c','d','a','e',1,2]
           del L2[2]  L2=['a','b','d','a','e',1,2]     del L2[2:5]     del L2
          .clear() 无参数 清空列表  L2.clear()  L2 = []
5, 循环、排序
    循环   for i in L2:                        i为此处声明的一个临时变量,将L2中每个值依次赋给i
                    print("i")    
   rang(10)  创建了0-9的列表   
   排序  .sort() 无参数,当列表中元素类型一样是,从小到大排序         
           .reverse()   把当前列表原地倒转 reverse后返回列表本身可看到
6,列表拼接
n1+n2  或者 n1.extend(n2)          
 
7,其他 
.copy()   b = a.copy()  将b=a是将b指向了a指向的地址,a如果重新被赋值指向其他地址,b为原地址不受影响,而集合中如果只改变 里面的元素,地址未变,b也会跟着被改变 .而使用copy(),则a,b无关,只是将b一样的值赋给了a,改变b不影响a
此为 浅copy  可查看代码深浅copy
import copy
copy.deepcopy( names)  此为深copy
 
enumerate(list)    枚举  成为(索引,元素)的集合
路飞学城-7天集训-第二章        结果: 路飞学城-7天集训-第二章
 
路飞学城-7天集训-第二章  结果: 路飞学城-7天集训-第二章
 
.isdigit()  判断是否为数值
 
 
2018/6/15
二进制
十进制数转二进制 bin(十进制数)  =0b+ 二进制数   0b代表二进制
 
ASCII码
计算机将ASCII码与十进制数0-255做了对应表   ASCII码表
路飞学城-7天集训-第二章
每个字符占8位(bit比特),一共可以表示256个。文字可以进行二进制转换。
路飞学城-7天集训-第二章
 
GB2321  国标码 简体中文 收录汉字6763个
GBK  繁体和简体,收录汉字2万多     兼容ascii
Unicode国际编码,支持多国语言 所有字符(包括英文) 占两字节  .包含和所有国家的编码语言的映射关系
UTF-8 让ascii码的字符占1个字节,欧洲字符占两个字节,东亚(中文)三个字节,是使unicode存储和传输时更省空间的设计
路飞学城-7天集训-第二章
 
python2 默认为ASCII码,python3默认为UTF-8,所以用python2 编译带中文代码时,需要改变默认语言
具体可以查看 路飞学城-7天集训-第二章
# -*- coding: UTF-8 -*-
 
2018/6/16
引入其他源
from  decimal import *      从decimal库引入所有
getcontext(). ....  设置源参数   
 
浮点数     python和JavaScript一样,直接定义超长精度小数会不准确,可以用分数代替
 
注意  不要将python代码文件命名为python预留字,模块名等。特别不能与import 文件名一样
容易出现 AttributeError: ‘module’ object has no attribute ‘ArgumentParser’  此样错误
 
 
2018/6/21
字符串 深入讲解   数据类型 - 基本型  
特性:有序、不可变
pycharm 同样可以点 alt+鼠标点击,进入方法 ,可查看python源码,查看各种方法的解释
s.isdigit()
s.replace(old,new,count)
s.find()    
s.center(width,fillchar)
s.format()用法 见下图
路飞学城-7天集训-第二章
' '.join(names)   将names里的元素按' '连接    ''中间可以为空格、逗号,字母等等
s.strip() 将字符串两端的空格、换行都去掉
s.split( 'o')  按'o'分割成列
s.capitalize() 首字母大写,其他小写
s.casefold() 忽略大小写即全小写
s.find('o',0,5) 在0到5序号位上查找字母O,有则返回位置,无则返回-1
s.expandtabs() 控制tabs/空格数量
 
 
直播课
学习方法:输入+输出+纠正
路飞学城-7天集训-第二章
 
 
 
 
2018/6/22
元组tuple    数据类型-数据集
一旦创建,不能再修改,是只读的列表 。但是可以包含可变的list元素
使用小括号   ('a','b','c')
元组中只包含 一个元素时, 需要在元素后面添加逗号,否则括号会被当作运算符使用
使用场景:1明确告知别人,此处数据不可修改。2数据库连接配置信息等
 
Hash函数
“散列”  一种将任意长度的消息压缩到某一固定长度的消息摘要的函数
被哈希的值是不可变的      数字、字符串、元组                                     hash((1,2,3))   
用途:文件签名、md5加密、密码验证
 
字典dictionary    数据类型-数据集

1.格式

字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }
value可为列表。用key取值  d[key1] = value1
路飞学城-7天集训-第二章
key值查找时不循环,查找速度很快
 
2.增加
直接为新key赋值   d[key] = 'value3'
 
3.修改
直接赋值  d[key1] = newvalue
 
4.查找     dictionary 无索引index
通过  in  判断key 是否在字典     'value'  in  d
获取  get   d.get('key')   没有该key,不报错返回 空 none  而如果直接用 d[key],没有该key是会报错的
路飞学城-7天集训-第二章info.  可出所有方法?我试不出来
 
5.删除
d.pop( 'key') 删除key的这个键值
d.popitem() 随机删除里面的键值
del d[key1]
 
6.多级嵌套
 
7.其他
d.keys() 打印所有key值
d.values() 打印所有value值
d.update (字典2)  合并两个字典 到d,因为key唯一,相同的key会被字典2覆盖
d.item() 返回一个 包含key,value 元组的 列表
d.setdefault(k ,defaultvalue)  如果d里的key值含k,返回k对应的值,不如不含,则用defaultvalue赋值
d.fromkeys(keys,value) 生成一个keys列表中每个key 对应 value 的 格式的字典
 
8.循环
for k  in  d:                        
          print(k)    
          print(k, d[k])
 
 
2018/6/23
集合set    数据类型-数据集
路飞学城-7天集训-第二章
直接定义   set = {1,2,3,4,5}  
其他类型转换    li = [1,2,3,4,3,4]   s = set(li)    #s = {1,2,3,4}
 
不知道某一个函数或方法 ,可以使用  help(  method) 查看说明
 
1.增加      s.add(v)   增加一个给定值
            s.update( s1)  合并
2.删除     s.pop()  随机删除一个值
           s.remove(v) 删除给定的值
            s.discard(v)   删除给定的值,如果没有该值也不报错
           s.clear() 清空
 
关系测试
s1 = {...} , s2 = {...}
1.交集      s1.intersection(s2)     或者    s1&s2    得到一个新的相交的集合
2.差集       s1.difference(s2)  或者 s1 - s2   得到一个新的s1中不同与s2的集合,不同与s2.difference(s1)或s2-s1
3.并集       s1.union(s2)   或者 s1|s2
4.对称差集     s1.symmetric_difference(s2) 或 s1^s2  只在s1及只在s2的集合
5.判断是否包含关系   假设s1包含s2
   s2.issubset(s1)       或     s2 <= s1
   s1.issuperset(s2)    或     s1>=s2
6.判断两个集合是否无相交
   s1.isdisjoin(s2)    Return True if two sets have a null intersection.
 
s1.difference_update (s2)  是将s1-s2的差值再赋给s1
s1.intersection_update(s2)  将s1&s2 得到的交集赋s1
 
 
2018/6/25
十进制转二进制     bin(十进制数)         -->0b..
八进制                    oct()                    -->0o...     少用
十六进制              hex()                    -->0x...    字符编码、内存地址、数据流、web颜色  
因为一个16进制相当于4位2进制,一个字节8位, 两个16进制表示一个字节。 ascii用16进制,只需要两位。
数据交换的时候,对字节解析都是一个byte一个byte的处理,一个byte,用两个16进制来表达方便。硬盘存储是二进制,表达方式是十六进制
 
二进制转十六进制
路飞学城-7天集训-第二章,不够4位的补0
十六进制转二进制
路飞学城-7天集训-第二章,每个拆成4位的二进制数
 
直播内容:
文件操作
user_file =  open('user_info.txt','r+')
user_file.write('\n'+username)
user_file.close()
路飞学城-7天集训-第二章
 
   python cookbook 
 
 
2018/6/26
字符编码
如果不把编码问题搞清楚,会纠缠整个职业生涯
问题:1 以前用Gbk写的代码,想重新编译成utf-8不可能么?不是重新定义语言然后保存一下就可么?
            2 python3,存在内存里实际是unicode,达不到省空间的作用呀?使用python3既然内存里是unicode,还定义其他的编译语言有什么作用,默认utf-8没有作用   答:存在内存里是unicode,但是硬盘里是utf-8
 
python3使用默认utf-8保存,内存实际unicode。在python3执行时,不论哪国语言,比如 utf-8读到内存,同时转为了unicode。所有系统都支持unicode。 使得其他编码也不出现乱码
python3执行过程:
路飞学城-7天集训-第二章
python2要使用中文,需要在文件头标注gbk或者utf-8,并会以标注方式保存在内存,默认保存为ascii。如果标注为urf-8,windows加载会乱码。
 
python3 自动执行了 解码(decode)和编码(encode)工作
UTF-8 -->decode  -->unicode
Unicode  -->encode  -->GBK/Utf-8 ..
python2可以手动转码,使不出现乱码
路飞学城-7天集训-第二章
python2里:type(unicode) = unicode       type(其他编码类型) =str
python3里:str 就是unicode格式的字符
 
总结:1,学到了为什么会出现乱码,编码是什么意思
           2.  unicode、utf-8、gbk特点
           3. unicode 与其他编码的映射关系可以查表
           4. python3 内存默认存为unicode.python2内存 根据文件头标注,默认是ascii
           5.  decode   ,  encode  打印出的16进制数的含义
           6. 你的文件在内存里怎样转成二进制对应的,表现为16进制
           7.bytes 类型
2018/6/27
bytes类型介绍    encode 后的字符串 用16进制表示的二进制串,称为bytes
图片、视频 的二进制格式也称bytes,但不能转成字符串了
 
python3不兼容python2