Python 学习
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 学习相关的知识,希望对你有一定的参考价值。
port = int(a)
这个地方 你检查一下 a 是不是这样的字符串 "3" 如果不是就转换不了,就是说引号内部是数字的字符串才能用 int()
10:用户交互程序
Python 里面不区分 “ 和 ‘
‘‘‘
代码
‘‘‘
16 模块初识
import sys
sys.argv #打印
sys.path #打印环境变量
17 模块初识2
标准库目录 base
第三方库库模块目录 site——packge
18 pyc是什么
python 预编译的半成品
19 python 数据类型
type() #查看数据类型
python 3 里没有长整型(long) ,python 2 里依然有
20 bytes 类型
三元运算
a,b,c = 1,3,5
d = a if a<b else c
16进制与二进制转换
encode(encoding="utf-8")
decode()
21 数据运算
二进制
计算机中能表示/存储的最小单位,是一个二进制位(bit)
22 列表的使用
定义 names=["a","b","c","d"]
切片 names[1:3] name[3] name[-1] name[-3:-1] name[-3:] name[0:3] #顾首不顾尾
追加 names.append("e")
插入 names.insert(1,"e")
修改 names[1]="b"
删除 names.remove="c"
del names[2] # 等同于 names.pop(2)
names.pop() # 默认删除最后1个
索引 names.index("b") #返回 "b" 的下标
统计 pring(names.count(b)) #统计同名数量
清空 names.clear()
反转 names.reverse() #序列排序反转
排序 name.sort() #按 ascii 排序
扩展 name.extend(另外一个排列名) #并入另外一个列表
删除 del names
复制 names2 = names.copy() #把names 浅 copy 到 names2(只copy第一层列表)
22 列表的使用2
浅copy
person=["name",["saving",100]]
# 三种方式,效果相同
import copy
p1=copy.copy(person)
p2=person[:]
p3=list(person)
深copy
import copy
name2 = copy.deepcopy(names)
扩展阅读:https://www.cnblogs.com/whatisfantasy/p/5956807.html
列表循环:
for i in names[0:-1:2]:
print(i)
for i in names[::2]:
print(i)
23 元组与购物车练习
元组: names = ("alex","jack","mike") # 元祖数据不可更改
names.count
names.index
enumerate(names) #打印下标
26 字符串常用操作
name = "your \\t{name} is alex"
name.capitalize()
name.count("a")
name.center(50,"_")
name.endswith("ex")
name.expandtabs(tabsize=30)
name.find("name")
name.format(name=‘alex‘,year=23)
name.format_map
‘ab23‘.isalnum() # 是否是英文字母+阿拉伯数字
‘abA‘.isalpha() # 是否是英文字母
‘1A‘.isdecimal() # 判断是否是10进制数
‘a‘.isidentifier() # 判断是否是合法变量名
‘1A‘.isdigit() # 判断是否是数字
‘33‘.isnumeric() # 判断是否是合法的标示符
‘33‘.isspace() # 判断是否是空格
‘My Name Is‘.istitle() # 判断是否是首字母大写
‘My Name Is‘.isprintable() # 判断是否可打印,[tty,drive]不可打印
‘My Name Is‘.isupper() # 判断是否是大写
‘+‘.join([‘1‘,‘2‘,‘3‘,‘4‘]) # 列表拼成字符串
name.ljust(50,‘*‘) # 长度50,左边用*补足
name.rjust(50,‘*‘) # 长度50,右边用*补足
‘Alex’.lower() # 变小写
‘Alex’.upper() # 变大写
‘\\nAlex’.lstrip() # 去左边的空格和换行
‘Alex\\n’.rstrip() # 去右边的空格和换行
‘ Alex\\n’.strip() # 去除空格和换行
p = str.makestrans("abcdef",‘123456‘)
print("alex li".translate(p)) # 把p传入“alex li”,将字母替换成p对应的字符
‘alex li’.replace(‘l‘,‘L‘,1) # 把后面的参数替换前面的(第三个参数代表替换的数量)
‘alex li’.rfind(‘l‘) # 找 l
‘1+2+3+4’.split(‘+‘) # 按“参数”把字符串分割成列表
‘1+2\\n3+4’.splitlines() # 按“\\n”把字符串分割成列表
‘Alex Li’.swapcase() # 转换大小写
‘my name is‘.title() # 首字母大写
字符串的格式化:
"Hi%s, your score is %d."%("bart",59)
表示如下
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数
%% %
len()函数
计算str的字符数 或 bytes的字节数
27 字典操作
字典无序(没有下标)
字典通过 key 取值
info = {
‘stu1‘ :"jam",
‘stu2‘ :"amy",
‘stu3‘ :"lily",
}
# 删除
del info["stu1"]
info.pop("stu1")
info.popitem() # 随机删除
# 新增 & 修改
info["stu1"] = "mike"
# 查找
print(info.get(‘stu1‘))
# 用 in 判断字典中是否有某个数据
print(‘stu1‘ in info) # info.has_key("1103") 仅存在python2.x
# 合并(合并过程中有相同key的values将会被后者的values覆盖)
b = {1:2,3:4,‘stu1‘:"tom"}
info.update(b)
# info.setdefault("stu4",{"maray":[1,2]}) # 多级字典中去字典中找“stu4”,如果有取出,如果没有新建并将后面的key:values写入
# info.key() # 打印 key
# info.values() # 打印 values
# info.items() # 打印字典key-values
# 初始化一个新的字典
c = dict.fromkeys([6,7,8],"test")
print(c)
多级字典的嵌套
key 尽量不要用中文
字典的循环
for i in info:
print(i,info[i])
或者
for k,v in info.items():
print(k,v)
# 前者更高效,后者要先把字典转换成列表,效率较低
扩展阅读:https://www.cnblogs.com/whatisfantasy/p/5956761.html
32 集合的使用
set 特性1 :集合同字典是无序的
set 特性2 :去同 ,set 里面没有重复的元素
set 特性3 :关系测试
list_1=[1,3,4,5,6,7,9]
list_2=[0,2,66,4,6,8,22]
list_3=[1,3,7]
list_4=[5,6,8]
# 交集
print(list_1.intersection(list_2))
print(list_1 & list_2)
# 并集
print(list_1.union(list_2))
print(list_2 | list_1)
# 差集
print(list_1.difference(list_2))
print(list_1 - list_2)
# 判断是否是子集
print(list_1.issubset(list_2))
# 判断是否是父集
print(list_1.issuperset(list_2))
# 对称差集(把两个列表所有元素中交集部分去掉后的元素)
print(list_1.symmetric_difference(list_2))
print(list_1 ^ list_2)
# 判断两个list是否有交集,没有返回真
print(list_3.isdisjoint(list_4))
# 集合的操作
# 添加 集合无插入
list_1.add(999)
list_1.update([10,37,42]) #插入多项
# 任意删除
list_1.pop()
# 指定删除,(如果元素不存在会报错)
list_1.remove(6)
# 指定删除,(如果元素不存在不会报错,且不返回被删除元素)
list_1.discard(6)
33 文件操作
f = open("yesterday",‘r’,encoding="utf-8") # 文件句柄(读模式)
data = f.read() # 读完整文件
data2 = f.readline() # 读一行
data2 = f.readlines() # 读所有行,每行为一个列表的元素
print(data) # 打印文件
f = open("yesterday2",‘w’,encoding="utf-8") # 文件句柄(写模式)"此模式会创建一个文件"
f.write("我爱北京\\n")
f.write("我爱中国")
f.close # 关闭文件
f = open("yesterday2",‘a’,encoding="utf-8") # 文件句柄(追加模式)
f.write("我爱地球")
35 文件操作之增删查改
print(f.tell()) # 返回文件指针位置,按字符计数
print(f.readline())
print(f.tell())
# 操作文件指针
f.seek(10) # 文件指针回到 10 字符位置,默认参数为 0
# 打印文件编码
print(f.encoding) # 打印文件编码
# 返回文件句柄在内存中的编号
print(f.fileno)
# 刷新(将buffer强制写入硬盘)
f.flush
#示例
# 打印进度条
improt sys,time
for in range(50)
sys.stdout.write("#") # sys.stdout 标准输出
sys.stdout.flush() # 强制写入硬盘
time.sleep(0.1) # 延后 0.1 秒写入
# 截断
f.truncate(20) # 从文件头部开始到指针位置向后“20”个字符的位置截断文件
# 文件修改
f = open("yesterday",‘r+’,encoding="utf-8") # 文件句柄(读写加模式)
f = open("yesterday",‘w+’,encoding="utf-8") # 文件句柄(写读模式---实际会先创建文件)
f = open("yesterday",‘a+’,encoding="utf-8") # 文件句柄(追加读模式)
f = open("yesterday",‘rb’) # 文件句柄(二进制模式读,而进制不能编码)
f = open("yesterday",‘wb’) # 文件句柄(二进制模式写)
# 示范
f.write("hello binary\\n",encode()) # encode()没有参数默认用系统编码
f.close()
# 04分,修改文件示例
# wiht 语句
whit 语句执行完会自动关闭文件
with 在python 2.7后可以同时打开多个文件。
# 示例
with open("yesterday2","r",encoding="utf-8") as f ,\\
open("yesterday2","r",encoding="utf-8") as f2:
for line in f:
print(line)
38 字符转编码操作
以上是关于Python 学习的主要内容,如果未能解决你的问题,请参考以下文章