系列文章目录
第一章 Python 基础
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
目录
目录
前言
python的是精髓在于狭义的函数与对象,而在这之前,需要学习python的基础知识,比如数据类型及其基本操作,基本运算,循环与分支,书写规范等。
一、python常用的数据类型及常用操作与运算
Ⅰ,数字型,int,float,
Ⅰ,int 不可变类型(可以哈希:通过哈希函数生成唯一的key与value,二则任何一个改变则与原来不同)
运算与转换:+,-,*,/,%取模,//取整,**方次,比较运算(>,<,==,!=,>=,<=等)转换:oct(),hex(),bin()等
a = 1 b = 2 c = 100 print(a+b,a*b,a/b,a//b,a**b,a%b) print(oct(c),bin(c),hex(c))#0o144 0b1100100 0x64
Ⅱ,字符串 string:加引号的内容(单引号双引号没有区别,三引号一般表示注释或者多行内容)
运算:+(拼接),* 数字 (表重复次数)
常用操作:
a = ' I love this Game ' b = 'Michael Jordan' c = '123' d = 'ab' #索引,取值,切片 print(a[2:5]) print(a[2]) print(a[5:]) #字符的长度及字符的关系 print('I' in a) print('b' not in a) len(a) #strip(),rstrip().lstrip() 移除空白 print(a.strip()) #大小写转换 print(a.lower()) print(a.upper()) print(a.title()) print(a.capitalize()) #分割 print(a.split()) print(a.split('this'))#[' I love ', ' Game '] #组合 print(c.join(d))#a123b print(d.join(c))#1ab2ab3 #替换 print(a.replace('love','LOVE',1))# I LOVE this Game #查找,计数 #find,rfind,index,rindex,count print(a.index('ov')) print(a.find('1ov'))#找不到显示-1 print(a.count('o',2,5))#在第二到第五个字符中统计o出现的次数 #字符填充 #center,ljust,rjust,zfill name = 'albert' print(name.zfill(10)) print(name.rjust(30,'*')) print(name.ljust(20,'~')) print(name.center(20,'#')) #is数字系列 num1 = b'4' num2 = u'4' num3 = '四' num4 = 'Ⅳ' print(num1.isdigit(),num2.isdigit()) print(num3.isnumeric(),num4.isnumeric())#汉字与罗马数字 #其余部分 #.isalnum()字符数字组成,.isalpha(),isidentifier(),,islower(),.isupper()
Ⅲ,容器类:列表,字典,集合,元组,collection类(略)等
列表:list 是有序的,可变类型,不可以哈希,推导式[expressioin for item in Sequence if conditional]
student1 = {'Mr Li','Mr Liu','Mr Zhang'}#集合 student2 = {'Mr Zhang','Mr Li','Mr Liu'} print(student2==student1)#True 集合是无序的 print(student1 is student2)#False 比较的是ID,及储存位置 list1 = ['Mr Li','Mr Liu','Mr Zhang'] list2 = ['Mr Zhang','Mr Li','Mr Liu'] print(list1==list2)#False 列表是有序的 print(list1 is list2)#False #元组与列表的差异:元组是不可能更改的,可哈希的,元组只可以取值
list1 = [1,2,3,4,5,6]
#支持索引,切片
print(len(list1))
list1.copy()
list1.insert()
list1.clear()
list1.pop()
list1.remove()#移除的元素,而不是位置
list1.append()#如果参数是一个可迭代的列表,也是一个个添加
list1.extend()#参数为可迭代的列表,整个添加
list1.reverse()#排序反转
list1.sort()#排序
list1[2]= 100
列表的浅拷贝与深拷贝:
浅拷贝,一级元素的变动,没有影响,二级元素变动会有影响。
深拷贝,完全独立。
字典:可变类型,不可哈希。key必须是不可变类型
# 创建方式一:键值对方式,字典的key必须是不可变类型。 dict1 = dict(name='Lebron', age='37', Gender='Male') # dict1 = { # 'name':'Lebron', # 'age':'37', # 'Gender':'male' # } dict1['hobby'] = 'Basketball' dict1 = dict1.fromkeys(dict1,[1,2,3])#dict.fromkeys(key,value) l1 = [1,2,3,4] l2 = ['老张','老李','老王','老刘'] #创建方式二:字典生成式与zip搭配生成 dict2 = {key:value for key,value in list(zip(l1,l2))} dict3 = {x:x+2 for x in range(10)} print(dict2) print(dict3) #创建方式三:通过满足条件的列表来创建 list_dict = [('1','egg'),('2','Poke'),('3','beef')] print(dict(list_dict)) #创建方式四: dict4 = {'a':1,'b':2,'c':3,'d':4} dict4 = dict4.fromkeys(dict4,'fromkeys对应的值') print(dict4)
dict1 = dict(name='Lebron', age='37', Gender='Male')
dict1['hobby'] = 'Basketball'
del dict1['hobby']
dict1.update({'score':'50000'})#可改可增
dict1.setdefault('score','40000')#可增不可改
print(dict1)
Ⅳ,布尔型(略)
二,控制流:分支与循环
控制流:一般就是指选择,循环,(跳出 break,跳过某一次循环continue)
#条件...if...elif....elif....else
if condiction1:
do something
elif condition2:
do something2
elif condition3:
do somethin3:
else:
print('这是一个例子')
#循环:条件循环 while, 迭代的循环 for
#break 与 continue可用于循环的跳出
#都可以和else连用,表示前面函数执行完毕之后要做的操作
i = 2
while i>0:
i += 2
print(i)
while i== 20:
print('第二个循环里的while中的%s'%i)
break
if i>30:
print('break跳出主循环,第一个循环')
break
else:
print('break 试验完毕,结论是每次只跳出其所在的循环,'
'且如果while循环被break打断了后面的else后的内容将不再执行')
#while与tag的连用,可以迅速跳出所有循环。
tag = True
i = 1
while tag:
i+= 1
if i==5:
while tag:
print('这是第二个tag')
tag = 0
print('tag为%s,快速跳出所有的while循环'%tag)
使用控制流时的注意事项:1,尽量少嵌套,if地狱 2,封装较为复杂的循环,避免过多的嵌套。3, 不过多出现and or not,通过取反简化。4,德摩根定律 not A and not B=Not(A and B)
5,使用all(),any()如下
list1 = [i for i in range(4,10)] print(list1) print( all(n>3 for n in list1))#所有元素都成立,为真 print(any(n<5 for n in list1))#any至少有一个元素成立,为真
6,and 与or的优先级,and>or
三,文件的操作
#文件管理
f=open(r'filepath','r+',encoding='utf-8')
with open(r'filepath','r+',encoding='utf-8') as f1:
# data1 = f1.read()#全打开
for line in f1.readlines():#一次打开一行
print(line,end="")
os.rename('a.txt','b.txt') #重命名
os.remove(r'pathname.txt') #删除
四,编码与解码
str1 = '我是中国人,我爱中国'
str2 = 'I Love U'
print(str1.encode('gbk'))
print(str1.encode('gbk').decode('gbk'))
print(str1.encode('utf-8'))
print(str1.encode())#默认为utf-8,unicode
print(str2.encode('gbk'))
str3 = b'\xce\xd2\xca\xc7\xd6\xd0\xb9\xfa\xc8\xcb\xa3\xac\xce\xd2\xb0\xae\xd6\xd0\xb9\xfa'
print(str3.decode('gbk'))#如何存,如何取,否则乱码
五,基本语法与书写规范
1,python中的关键字,变量名应该避开这些:[yield,pass,False,True,class,return,as,continue,except,else,exec,finally,for,from,if,while,import,print,raise, try,with]等2,驼峰体与变量即逻辑
3,常量一般大写
4,函数体与类的导入空两行。
总结
提示:这里对文章进行总结: