以下内容为个人的学习笔记整理,如有错误,请指出,谢谢~
一、变量
1、在Python中定义变量的时候不需要指定类型。
2、数据类型分为数字型和非数字型:
①数字型:整型(int整数,long长整数)、浮点型float、布尔型bool(真为True或非0数;假为False或0)、复数型complex。
②非数字型:字符串、列表、元组、字典。
3、使用type函数可以查看一个变量的类型:type(变量)
4、不同变量之间的计算:
①数字型变量之间可以直接计算。
②字符串之间可以用+号拼接成新的字符串。
如:name1="上" name2="岸" name1+name2
③字符串变量可以和整数用*号重复拼接相同的字符串。
如:"-"*20
④数字型变量和字符串之间不能进行其他的计算。
二、if语句
if 条件1:
条件1满足后执行的代码
elif 条件2:
条件2满足后执行的代码
else:
以上条件都不满足时,执行的代码
if 条件1 and 条件2:
条件1和条件2都满足时执行的代码
if 条件1 or 条件2:
条件1或条件2满足时执行的代码
还可以if语句嵌套使用。
三、随机数
import random
#导入工具包
random.randint(1,100)
#随机返回一个[1,100]之间的整数
四、continue和break的区别
continue是结束本次循环中后续的代码;break是结束整个循环。
i=0
while i<10:
if i==3:
i+=1
continue
print(i)
i+=1
结果:
五、print函数增强版
1、在默认情况下,print函数输出内容后会自动换行。
2、如果只是想单纯换行可以:print("")
3、如果不想换行:print("*",end="")
注:end=""里面的双引号可以被指定,则可以显示继续出现的内容
4、格式化输出
a=1
b=2
print("%d+%d=%d"%(a,b,a+b))
#d是整数,f是浮点数,s是字符串
六、转义字符
反斜杠符号\\
单引号\'
双引号|"
换行\n
回车\r
横向制表符(不用表格的情况下垂直方向下按列对齐文本)\t
七、函数
1、基本函数定义写法
def hello():
print("hello")
#def后面接的是函数名,函数名由字母、下划线、数字组成,不能数字开头,不能与关键词重名。
#调用时直接输入函数名。
#如果不在同个包下,要导入此函数的包名,调用时:包名.函数名
2、函数小括号内可以有多个参数
def sum_sum(sum1,sum2):
return=sum1+sum2
sum=sum_sum(1,2)
print(sum)
八、列表
1、列表相当于数组,列表的定义:list=[1,2,3]
其中可以存放不同类型的数据,列表可以更改数据,索引从0开始。
2、列表的函数方法:
①用于增加:
指定位置插入数据: 列表名.insert(索引,数据)
在末尾追加一个列表: 列表名.extend(列表名2)
在末尾追加数据:列表名.append(数据)
②用于修改:
修改指定索引的数据: 列表名[索引]=数据
③用于删除:
删除指定索引的数据: del列表名[索引]
删除指定的数据,如果有多个,只删除第一个: 列表名.remove(数据)
删除指定索引数据,并且返回该数据: 列表名.pop(索引),如果不指定索引默认为删除最后一个数据
清空列表: 列表名.clear
④用于统计:
列表长度: len(列表名)
数据在列表中出现的次数: 列表名.count(数据)
⑤用于排序:
升序排序: 列表名.sort(reverse= False) 默认为False
降序排序: 列表名.sort(reverse= True)
反转: 列表名.reverse()
逆序/降序不对原列表作任何修改,有返回值: list=sorted(列表名)
3、用for循环遍历数组
list[1,3,5]
#用name接收每次循环中列表的数据
for name in list:
print(name)
九、元组
1、元组表示多个元素组成的序列,在元组中的元素不能修改。
2、定义一个元组: tuple=("zhangsan",20)
每个元素要用逗号隔开,索引从0开始;如果元组中只有一个元素时,需要在元素后面添加逗号,否则会认为这不是一个元组而是一个变量: tuple=(20,)
3、取元组中的数据和取元组中的索引:
数据: 元组名[索引]
索引:元组名.index(数据)
4、统计计数
元组名.count(数据)
5、可以使用元组拼接为一个字符串(格式化字符穿后面的本质就是一个元组)
tuple=("沈池",20,185.5)
print("我的名字是%s,今年%d岁,身高%.1fcm"%tuple)
6、元组和列表可以互相转化,则可以改变该元素可变/不可变。
将元组转换成列表: list(元组名)
将列表转换成元组: tuple(列表名)
7、数字交换:a=20 b=21
①使用别的变量:
c=b
b=a
a=c
②不使用临时变量:
a=a+b
b=a-b
a=a-b
③利用元组
(a,b)=(b,a)
#可以省略括号
十、字典
1、字典是无序的对象集合,列表是有序的对象集合。
2、字典使用键值对存储数据,每一对键值对用逗号分隔。
字典的定义:xiaoming={"name":"小明","age":18}
【冒号左边的是键key,是唯一的;冒号右边的是值value;其中值可以取任意值,但键只能使用字符串,数字或元组。】
3、字典函数的方法:
①获取字典键值对的数量: len(字典名)
②获取字典中所有key列表: 字典名.keys()
③获取字典中所有value列表: 字典名.keys()
④所有(key,value)元组列表
⑤取值: 字典名[key]
如果指定的key不存在会报错。
⑥增加/修改:
如果key存在,修改存在的键值对;如果key不存在,则会新增键值对。
字典名[key]=22
⑦删除:字典名.pop(key)
如果指定的key不存在会报错。
十一、字符串
1、字符串在python中用英文的一对双引号或者单引号来定义。
如果要输出双引号或者单引号用\作为转义符。
2、可以使用索引获取一个字符串中指定位置的字符,索引从0开始。
用for循环遍历字符串每个字符:
String="hello"
for c in String:
print(c)
3、字符串常用函数方法:
①获取字符串长度: len(字符串)
②某字符串在此字符串中出现的次数: 字符串.count(字符串2)
③从字符串取出某个字符: 字符串[索引]
④取出某个字符中在字符串中的索引: 字符串.index(字符串2)
4、判断类型的函数方法:
①只包含空格,返回True: 字符串.isspace()
②至少有一个字符并且字符都是字母或者数字的返回True: 字符串.isalnum()
③至少有一个字符并且字符都是字母的返回True: 字符串.isalpha()
④字符都是数字(全角数字)的返回True: 字符串.isdecimal()
⑤字符都是数字(全角数字、(1)、\u00b2)的返回True: 字符串.isdigit()
⑥字符都是数字(全角数字、汉字数字)的返回True: 字符串.isnumeric()
⑦字符是标题化的(每个单词开头字母大写),返回True: 字符串.istitle()
⑧字符串至少包含一个区分大小写的字符,并且所有这些字符是小写,则返回True: 字符串.islower()
⑨字符串至少包含一个区分大小写的字符,并且所有这些字符是大写,则返回True: 字符串.isupper()
5、查找和替换的函数方法:
①检查字符串是否以某个字符串开头,则返回True: 字符串.startswith(字符串2)
②检查字符串是否以某个字符串结尾,则返回True: 字符串.endswith(字符串2)
③检测字符串中是包含某个字符串(可以指定该字符串的范围),如果有的话返回第一个的索引,如果没有的话返回-1 : 字符串.find(字符串2,start=0,end=len(字符串))
④与3一致,但是是从右边往左开始找: 字符串.rfind(字符串2,start=0,end=len(字符串))
⑤与3一致,但如果不存在会报错: 字符串.index(字符串2,start=0,end=len(字符串))
⑥与5一致,但是是从右边往左开始找: 字符串.rindex(字符串2,start=0,end=len(字符串))
⑦返回一个将字符串1修改成字符串2的新字符串(可以指定替换次数): 字符串.replace(字符串1,字符串2,num=字符串.count(字符串1))
6、大小写转换:
①返回一个把字符串的第一个字符变成大写的新字符串: 字符串.capitalize()
②返回一个每个单词首字大写的新字符串:字符串.title()
③返回一个把字符串所有大写变成小写的新字符串: 字符串.lower()
④返回一个把字符串所有小写变成大写的新字符串: 字符串.upper()
⑤返回一个把字符串大小写翻转的新字符串: 字符串.swapcase()
7、文本对齐:
返回一个原字符串左边/右边/中间对齐,并使用空格填充至长度width:
字符串.ljust/rjust/center(width)
8、去除空白字符:
返回一个去除原字符串左边/右边/左右两边的空白字符:
字符串.lstrip/rstrip/strip
9、拆分和连接:
①将字符串分成三个元素的元组: 字符串.partition(字符串2)
②与1一样,但从右边开始找: 字符串.rpartition(字符串2)
③以str分割切片字符串,如果num有指定值,则会分成num+1个字符串,str默认包括"\r"、"\t"、"\n"和空格: 字符串.split(str="",num)
返回的是一个列表
④返回一个包含各行行为作为元素的列表:字符串 .splitlines()
⑤字符串.join(字符串2)
十二、切片
1、切片方法只适用于字符串、列表、元组。(不会改变原元素)
2、字符串/列表/元组[开始索引:结束索引:步长]
①索引左闭右开
②步长1为连续切片,如果步长为负数则可以倒着切
③如果不写开始和结束索引默认为从头开始,末尾结束,但冒号不能省略
十三、python内置函数
十四、运算符
注:
①【可以用if跟着in 表示如果整型name等于数组中的值的话:】
If name in [1,2,3]:
②【for和in是话,表示name循环等于数组中的值,然后依次输出,有顺序】
for name in [1,2,3]:
print(name)
③数组中可以有字典。查询value的时候可以这样查询:
mingzi=[{“name”:”zhangsan”}, {“name”:”lisi”}]
mingzi[“name”]
十五、完整的for语句
for name in list:
#循环体代码。
else:
#如果循环体中没有通过break退出循环,就会执行此代码。
十六、可变和不可变类型
1.可变类型(内存中的数据可以修改):列表、字典
2、不可变类型(内存中的数据不可以修改):字符串、元组、数字类型
3、可变类型的数据变化是通过方法来实现的;如果给一个可变类型的变量赋值了一个新的数据。引用会改变。
十七、局部变量和全局变量
1、全局变量:是在函数外部定义的,所有函数内部都可以使用这个变量。
2、局部变量:是在函数内部定义的,只能在该函数内部使用。
函数执行结束后,函数内部的局部变量会被系统回收。
不同函数可以定义相同的名字的局部变量。
3、在函数内部修改全局变量的值:
需要在函数内部先用global进行声明,然后再修改。
十八、retrun用法
1、当想返回多个数据的时候,可以返回一个元组。
2、接收函数返回值:
可以单独处理:
可以用多个变量存储其返回值:
十九、可变参数和不可变参数
1、在函数内部,针对参数使用赋值语句,不会影响实参变量!
def list_num(list):
#也就是说将这个列表赋值为[1,2,3],不会对实参有改变。
list=[1,2,3]
print(list)
list2=[3,4,5]
list_num(list2)
print(list2)
结果:
2、但如果传递的参数是可变类型,用方法修改了数据内容,那么实参会同步改变
def list_num(list):
#也就是说将这个列表添加列表[1,2,3],会对实参有改变。
list.extend([1,2,3])
print(list)
list2=[3,4,5]
list_num(list2)
print(list2)
结果:
注:
二十、缺省参数
1、必须保证带有默认值的缺省参数在参数列表的末尾
def print_into(name,bol=True):
sex="男"
if not bol:
sex="女"
print("%s是%s"%(name,sex))
print_into("沈池",False)
2、调用多个缺省参数的函数,如果有多个,需要指定参数名,这样解释器才能够知道参数的对应关系。
二十一、多值参数
1、当需要一个函数处理的参数个数是不确定的时候,可以使用多值参数。
有两种多值参数:①一个*号接收元组(*args) ②两个*号接收字典(**kwargs)
def demo(sum,*args,**kwargs):
print(sum)
print(args)
print(kwargs)
demo(1,2,3,4,name="沈池",age=20)
结果:
二十二、函数的递归
特点:一个函数内部自己调用自己;函数内部的代码是相同的,只是针对参数不同,处理的结果不同;当函数满足一个条件的时候,函数不再执行。(否则会出现死循环)
#定义一个函数sum_number,能够接收一个num的整数参数,计算1+2+3....+num的结果
def sum_number(num):
if num==1:
return 1
return num+sum_number(num-1)
print(sum_number(100))