开发工具 pycharm
功能:
,后两个功能需要用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运行环境,没有安装的,可以选择勾选。
问题:我没选下载JRE,以前安装java 时候装过,现在还需要么?
2018/6/13-6/15
熟练pycharm和完成第一章作业
列表list 数据类型-数据集
1,创建
使用[] 、‘’单引号或双引号 和,
2.查询
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'] 每两个/隔一个取值
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)
枚举 成为(索引,元素)的集合
结果:
结果:
.isdigit() 判断是否为数值
2018/6/15
二进制
十进制数转二进制 bin(十进制数)
=0b+ 二进制数 0b代表二进制
ASCII码
计算机将ASCII码与十进制数0-255做了对应表 ASCII码表
每个字符占8位(bit比特),一共可以表示256个。文字可以进行二进制转换。
GB2321
国标码 简体中文 收录汉字6763个
GBK
繁体和简体,收录汉字2万多 兼容ascii
Unicode国际编码,支持多国语言 所有字符(包括英文)
占两字节
.包含和所有国家的编码语言的映射关系
UTF-8 让ascii码的字符占1个字节,欧洲字符占两个字节,东亚(中文)三个字节,是使unicode存储和传输时更省空间的设计
python2 默认为ASCII码,python3默认为UTF-8,所以用python2 编译带中文代码时,需要改变默认语言
具体可以查看
# -*- 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()用法 见下图
' '.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/空格数量
直播课
学习方法:输入+输出+纠正
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 }
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是会报错的
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])
集合set 数据类型-数据集
直接定义 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进制来表达方便。硬盘存储是二进制,表达方式是十六进制
二进制转十六进制
,不够4位的补0
十六进制转二进制
,每个拆成4位的二进制数
直播内容:
文件操作
user_file =
open('user_info.txt','r+')
user_file.write('\n'+username)
user_file.close()
书
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执行过程:
python2要使用中文,需要在文件头标注gbk或者utf-8,并会以标注方式保存在内存,默认保存为ascii。如果标注为urf-8,windows加载会乱码。
python3 自动执行了
解码(decode)和编码(encode)工作
UTF-8 -->decode -->unicode
Unicode -->encode -->GBK/Utf-8 ..
python2可以手动转码,使不出现乱码
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