学习python的十步;
(一)了解历史背景
1.快速入门python:
(1)字符串之间用'+'作为拼接符号;
(2)语句结尾不能用';'结尾;
(3)必须用Tab键缩进,不然报错;
(4)严格区分大小写;
(5)\是python的转义字符,\n表示换行;\在行尾是表示续行符,\b退格,\000空,\r回车,\t空白;
(6)注释:单行注释#,多行注释(也具有换行的意义)'''......'''/"""...."""";
(二)搭建开发环境
1.主要运用:云计算,web开发,科学运输人工智能,系统运维,金融量化交易,图形CUI;
2.是一门动态解释性语言;
(三)变量和常量
1.常量:用全大写字母表示常量,如PI(π)和E(自然数);
2.变量:不需要任何申明符号,变量名=值;必须赋值,否则输出报错;
(1)变量名的申明,由数字,字母,_组成,字母必须在首位,包括下划线命名法则和驼峰法则;
(2)变量赋值,是将值类型的地址赋值给变量,所有将一个变量赋值给另一个变量是将地址赋值给它,当值改变时,2个变量的值都会改变,但是
如果用分片的方式完全赋值给另一个变量,两个变量指向不同的地址,虽然值相同;也可以import copy 然后调用x=copy.copy(y)两个
变量地址不同,值相同;
(四)数据类型
1.数值Number:
(1)包括整型int,浮点型float,复数complex,无穷数等;其中整型有正付之分,没有大小的限制,浮点型也可用科学计数法表示,浮点型数相+,
-,*,/,%,//结果也是浮点型;复数由实部+虚部构成(a+bj/complex(a,b)),实部和虚部都是浮点型;浮点数进行算术运算结果
是浮点类型。注意浮点数的溢出,更精确的是小数对象Decimal(十进制的固定精度的小数),需要导入模块;长整数无限大以L结尾;
(2)import math引用math模块;
math.pi,math.e(科学计数法);
math.sin(n*2*math.pi/180),正弦值;
math.sqrt(num),请平方根;
abs(num),求绝对值;
pow(2,4),求2的4次方;
int(num),取下整数;
round(num[,n]),四舍五入保留n为小数;
(3)import random引用了随机模块;
random.random();随机生成0~1直接的小数;
random.randint(1,100);随机生成指定的1~100直接的整数;
random.choice(列表);表示从列表中随机选取一个元素;
(4)浮点小数,在计算时容易产生浮点溢出,计算的结果不会很精确;所有可以通过引入小数对象模块,更精确的计算小数结果;
from decimal import Decimal 引入小数对象模块或import Decimal,可以数学运算;
Decimal('0.1')+ Decimal('0.1')+ Decimal('0.1') //结果为Decimal('0.3')精确结果
0.1+0.1+0.1 //结果为0.300000000004不精确
2.字符串String:
(1)以单引号/双引号开始和结束;‘+’可以作为字符串的拼接符号,注意空格可以用空字符串" "或关键字space来表示;
(2)是python中最常见的数据类型,字符串不能修改,所以不能做分片赋值;
(3)字符串格式化符号:%;'%f%%'100%和'%s'%'100%'表示输出一个100%,
1)%s,表示格式化字符串,如'小米今天%s岁了'%10 =>表示小米今天10岁了;
2)%d,表示格式化整数,如'小米今天%d岁了'%10 => 表示小米今天10岁了;
3)%f,表示格式化浮点数,可指定精度,'PI:%f'%3.14=>3.140000 不指定精度默认6位数;%.2f表示指定2位小数;
4)%10.2f%,表示指定2位小数,并保留10位长度,不足的前面空格补齐10位字符长度,10前面可以是0,-,+表示用0补位,在输出字符串
左边补位,在输出的字符串右边前面补位;
5)'%+5d'%10表示+10;'%+5d'%-10表示-10;
(4)字符串方法:
1)str.find(str1[,start,end]);表示从start开始到end结束查找str中存在的子字符串str1,返回找到的位置,没找到返回-1;不写
start,end参数表示0开始和到末尾;
2)字符串连接符.join("全字符串类型的列表/全字符串类型的元祖/序列"),全字符串不然报错;
3)str.lower()无参数,表示将字符串中所有的大写字符串转换为小写;
4)str.upper()无参数,表示将字符串中所有的小写转换为大写;
5)str.swapcase()无参数,将字符串中大写变小写,小写变大写;
6)str.replace(old,new[,max]),表示把字符串中旧的子字符串替换成新的字符串,替换次数最多不能超过max次;
7)str.split([st[,num]]),表示把字符串str按照st(默认为空格切割符,也可为str中的单个字符,切割后不包括该单个字符,如果剩余
字符串中由空格仍然保留)切割,切割num次,返回切割后剩余字符串组成的列表;
8)str.isalpha()无参数,测试str字符串里面是否是纯字符组成的字符串,返回true/false(纯数字字符串返回false);
9)str.rstrip()无参数,去掉字符串后面的空格(包括\n换行符);
10)dir (str),表示罗列出字符串的所有属性和方法函数;
11)help (str.属性/方法),表示获取字符串的某个属性/方法的具体功能解释;
12)import re;表示引用re模块,re.match()表示调用re模块中的match函数方法/属性;
3.列表List:支持所有字符串的操作方法;列表的元素值不区分类型;
(1)索引:序列是python中最基本的数据类型;序列中每个元素都有一个下标,从左到右下标从0开始,从右到左从-1开始;序列a[i]表示获取
序列a的第i个下标的元素,即称为索引操作;
(2)分片:即获取序列项/字符串/列表/元祖等中的一段子结构,a[start:end[,step]],含头部含尾,可为正/负数字索引;不写start/end参数表示
从0开始/到结尾结束;step表示步长不写默认为1,即从start开始,第二个数是start+step,后面依次论头推;
(3)序列相加:同类型的序列相'+',直接拼接即可;不同类型的序列相'+',结果报错;
(4)乘法:字符串/序列*数值,即重复数值次形成新的字符串/序列;如:'string'*2 => 'stringstring',[1,2]*2 => [1,2,1,2];
(5)长度/最小值/最大值:max(a),min(a),len(a)分别表示序列a中的最大值/最小值/元素个数;
(6)列表list:序列的类型元素值可以不同,对列表的操作有增删该查等;
1)改:list[i]=值;表示修改序列下标为i的原值为新值,如果不存在就报错;
2)增:list.append[值],表示向列表list尾部添加一个新值;
3)删:del list[i];删除列表中第i个值,如果不存在就报错;
4)分片赋值:list('string')表示将字符串string分片成['s','t','r','i','n','g'];list[2:n]=['a','c'];表示将list列表中2
到n-1项被后面的['a','c']替代了;
5)列表的嵌套:即列表之中还包含列表,多级列表;[1,2,[4,2]];多级列表的矩阵处理 for ..in..;
6)列表的方法:
len(list)表示获取列表的元素个数(长度);
list.append(obj)表示在列表末尾添加新元素对象;
list.count(obj)表示查询obj元素在列表中出现的次数;
list.extend(seq)表示在列表的末尾添加另一个序列形成一个新序列,不会改变原序列;
list.index(obj)表示从列表中找出某个值obj第一次出现的位置下标,如果不存在就会报错;
list.insert(index,obj)表示在列表index的位置插入obj对象元素,改变原列表;原index位置之后的元素依次后移动一位;
list.pop(i)表示移除list中i位置的元素,不写表示移除最后一位,返回移除后的元素;
list.remove(obj)表示移除list列表中第一次出现的obj元素对象,移除不存在的对象会报错;
list.reverse()无参数,表示将列表list反序列;
list.sort()不写参数,表示将列表list升序排列;list.sort(key=len)表示按装字符串由短到长排列,list.sort(key=len,
reverse=True)按照字符串由长到d短排列;
list.clear()无参数,表示清空list列表;
list.copy()无参数,表示赋值列表list成一个新的列表,相当于list[:]不写参数;
4.元组Tuple:
(1)与列表相似,不同之处元祖的值不能修改;用逗号','分隔一些值,就会自动创建元祖,通常可以用()包裹元祖值;
(2)对元祖的操作:
1)查:元祖a[i]表示查找元祖i位置的值;
2)改:元祖a+元祖b拼接形成一个新的元祖;
3)删:del a 表示删除整个元素,不能删除元素值,但是可以删除整个元祖;
4)元祖的索引,截取:a[start:end],含头不含尾,表示截取元祖形成子元祖;
5)元祖的内置函数:len(a),max(a),min(a),tuple(seq),分别表示元祖a的个数,最大值,最小值,已经将列表seq转换为元祖;
5.集合Sets:即其他对象的集合,支持数学的集合运算;
(1)x=set('abcde'), 创建一个集合即x 输入结果为{'a','b','c','d','e'}元素的顺序不固定;
y=set('bdxyz'),x-y表示从x中抛出与y共同的元素,返回剩下的元素;
x|y表示数学中xUy,返回结果是x,y累加,相同的只出现一次;
'a' in x表示判断a是否是x的元素,返回true/false;
x&y 表示数学中xNy,返回结束时x,y共有的元素集合;
(2)x=set(['ace','tom','te','ss'])
y=set(['ace','af','ced']) 集合的另一种方式,x,y也满足-,|,in,&运算;
6.字典Dictionary:字典中的元素没有顺序;所有用for循环结果也不是按照顺序输出;
(1)格式:d={key1:val1,key2:val2};{}表示空字典,键key是必须是唯一,如果重复就会被覆盖,但是值不必唯一,可以是任何类型
(字符串,数字或元祖);键可以是数字,字符串或元祖但是不能是列表;
(2)dict()函数可以将序列转换为字典,如dict([('name','小萌'),('number','1001')]),dict(name='小智',number='1002');分别表示
{'name':'小萌','number':'1001'},{'name':'小智','number':'1002'};
(3)修改字典:字典a['key']=值;表示向字典a中新增键/值,或修改字典的已有的值/键;
(4)删除字典:del a表示删除整个字典a,删除后就不存在了;
(5)len(a):表示计算字典a的个数;
(6)type(a):表示计算a的类型;返回<class '类型'>;
(7)字典的格式化字符串:如'%(小强)s'%a;表示格式化获取字典a中的的小强这个键的值;
(8)字典方法:
1)a.clear()无参数;表示删除字典a所有项;
2)a.copy()无参数;表示浅复制一份字典a;即复制的字典改变后原字典a不会改变;deep.copy()则不一样;
3)list.fromkeys(seq[,val]),表示将列表seq为字典的键创建新字典;如果没有val就默认none;
4)a.get(key,default=None),表示查找字典a中key键的值,如果没找到就返回default指定的值;
5)key in dict,表示判断查找的键key是否在字典中结果返回true/false;
6)dict.items()无参数,表示遍历字典,返回的结果是所有字典元素值组成的列表,如{'小萌':'1001','小智':'1002'}.items()返回
的结果是{['小萌','1001'],['小智','1002']};
7)dict.setdefault(key,default=None),表示获得与给定键相关的值如果存在就修改原值为指定的default的值,
如果不存在就会添加为新键并赋值为default的值;
8)dict1.update(dict2);表示把字典dict2的元素全部添加到字典dict1的首部,如果dict1中存在相同的键就覆盖;
9)dict.values()无参数;表示以列表的形式返回字典中的所有值(包括重复值),不包括键;
10)a.keys()无参数;表示获取字典中所有的键组成新的字典;
11)a[key].append(e1);表示向字典某个键尾部添加某个值组成新的字典的值;
12)解析表达式:效率高;如s=[x**2 for x in [1,2,3,4]] => s=[1,4,9,16] 迭代+for循环+运算形成新的列表;
13)a.has_key('key');表示判断字典a中是否存在键'key',返回结果为true/false;
7.文件:核心类型,只需要调用内置函数open创建一个文件对象;以字符串的形式传递一个文件名称及一个处理模式的字符串;
(1)创建文件并写入内容: f=open("data.txt"[,"w"]) //创建一个文件名为'data.txt',写入'w'内容;保存在默认目录下python里;
只写文件名参数时表示读取;
f.write('hello\n') //向文件写入具体内容,\n为换行;
f.write('world\n')
f.close() //关闭文件;
b=f.read() //也表示读取文件并赋值给b;
b.split() //按空格拆分,可以将b才分成列表,['hello','world'];
8.布尔类型:1/0或true/false;
9.none:空值;
10.类:定义类 class 类名: //定义一个类型;
def __init__(self,name,pay): //定义方法,传进来2个参数name,pay;
self.name=name
self.pay=pay
def lastName(self): //定义函数,self相当于js中的this;
return self.name.split()[-1] //表示返回self的name字符串按空格切割后的返回数组的最后一个字符;
def salary(self,n): //定义一个函数加薪,n表示加薪的百分比;
self.pay*=(1.0+n)
调用类 bob=类名('bob jk',5000) //传入姓名和工资参数;
bob.lastName() //结果为jk
bob.salary(0.1) //结果为bob加薪后的工资;
(五)运算符
(1)算术运算符:+,-,*,/,//,%,**(冥);其中/除结果是即使整除也都是浮点数即保留小数位,//除结果是取下整数。a**b表示a的b次方;
其中除数不能为0;如果浮点数//,那么结果保留小数点后1位0的浮点数;
(2)比较运算符:> , < , >= , <=, == , != ;返回的结果是true/false;某些地方用true表示1,false表示0;
(3)赋值运算符:=,+=,-=,*=,/=,%=,**=,//=;字符串也可以用+=赋值
(4)位运算符:<<,>>,&,|,^,~(二进制取反);
(5)逻辑运算符:and , or,not(非) ;优先级小于比较运算符。括号的优先级高,可指定优先性。a and b表示如果a为false,这个表达式
就返回false,赋值返回y的计算值;a or b表示如果a为为非0就返回x否则返回y的值;not a表示返回true/fals0;
(6)成员运算符:in,not in ;如a in list表示判断a是否存在list中,返回的结果是true/false;a not in list表示对a不是list的成
员的判断。
(7)身份运算符:is,is not;如a is(not) b 表示判断a,b是否引自一个对象即是否相等;返回的结果为true/false;
print('a-b*c',e) =>表示e=a-b*c;
(六)逻辑结构
(1)import math,表示从python标准库中引用math模块,math.pi表示调用math模块中的pi属性;可以同时引用多个模块,用逗号隔开即可。
import math as a,表示为模块math取别名为a;
(2)from math import pi,表示从python标准库中引用math模块的某个具体对象属性;可同时引用一个模块math中的多个属性方法,
用逗号隔开。from math import *,表示引用math模块中的所有对象方法属性;from math import pi as p,表示为模块math中的
pi方法函数取别名为p;
(3)序列解包(可迭代解包):将多个值得序列解开,然后放在变量序列中,如x,y,z=1,2,3或num=(1,2,3) x,y,z=num;注意左右的变量和
值必须一一对应;否则报错;
(4)链式赋值:如x=y=z=10;
(5)语句块:冒号(:)用来表示语句块的开始,里面的每个语句都要缩进,当退回到和起始语句块相同的缩进量时,表示当前语句块的结束;
(6)条件语句:6个假值(False None 0 "" () {} []),即false值;bool(a)函数判断a返回true/false;
1)if语句: if 条件:
//执行语句块,注意缩进一致,切结尾不能有其他结束符号
2)if else语句: if 条件:
//if执行语句
else:
//else执行语句
3)elif语句: if 条件:
//if执行语句,注意判断的条件可以是 0<m<5这样的写法;
elif 条件:
//elif执行语句
else:
//else执行语句
4)条件语句的多级嵌套:
5)==与is的判断:使用==运算符是判断两个对象值是否相等,使用is判断两个对象是否相同(是否是同一对象,是否具有相同内存地址);
6)两个序列的比较:是按照字符串的大小顺序依次比较;
(7)循环语句:
1)while循环:while 条件:
//满足while条件下执行的语句,注意缩进,判断条件可以是任何表达式,跳出/终止循环break/continue
else:
//表示循环条件为false执行else语句;while循环也可不用else单独循环
2)for循环: for 变量 in 序列/字符串/字典:
//表示依次遍历任何序列的元素,并依次把其元素赋值给遍历;跳出循环/终止循环:break/continue
else:
//表示循环条件为false执行else语句;for循环也可不用else单独循环
注意:字典t={'name':'小智','num':'102'}: for p in t:
print('%s:%s'%(p,t(p)) //结果为num:102 name:小智
或者用这样的for循环: for key,value in t.items(): //items函数将键-值作为元祖返回
print('%s:%s'%(key,value))
(8)pass语句:即空语句,不做任何事,只是占位,保证程序结构的完整型
(七)通用小程序
(八)函数和对象
(1)abs()带一个参数数值类型的参数,表示求绝对值; fun=abs; 将abs函数变量赋值给变量fun,变量fun也具有绝对值函数的功能;
(2)type(a) 判断a的类型;
(九)第三方组件
(十)实用小程序
pyhon笔记(二)
猜你喜欢
转载自blog.csdn.net/qq_42231156/article/details/81368211
今日推荐
周排行