python学习记录1——所学总结
一、变量
变量的命名
· 只包含字母、数字、下划线,不能以数字开头
· 不能包含空格,可用下划线分隔
· 应简短而有描述性
· 慎用i、O,易看错,多用小写
二、运算符
1.普通
·+,-,*,/,//取整,%取模(余数)(可应用判断奇偶性:n%2 ==0 偶)
·指数** 2**100 即2100
2.比较运算符
· >=,<=,==等于,!=不等于
· and、or、not 与或非
PS:短路逻辑从左到右,只有当一个操作数值无法确定运算结果时,才对第二个操作数进行求值(如and全为真才真,有一假即假,or全为假才假,有一真即真)
3 and 4 输出4 3 or 4 输出3
0 and 3 输出0 0 or 4 输出4
#会输出判断依据的数值
3.同一性运算符
· is、is not 判断id是否相等/不相等
· in、not in 判断是否包含在序列中
4.运算符优先级
从低到高
三、转义字符
转义字符 | 描述 |
---|---|
\ (在行尾时) | 续行符 |
\\ | 反斜杠符号 |
\’ | 单引号 |
\" | 双引号 |
\a | 响铃 |
\b | 退格 |
\000 | 空 |
\n | 换行符 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数yy代表的字符(o为字母) |
\xyy | 十六进制数yy代表的字符 |
\other | 其他的字符以普通格式输出 |
· \t 制表符(向后跳格4个)
· '''输入多行字符串(可用于多行注释)'''
(可以同一行显示多条语句,方法是用分号 ; 分开)
四、复合赋值
a += 2 即 a = a+2 (自增)
-= 、 *= 、/= 、%= 同理
PS:此用法不要组合进表达式中
五、if elif else
1.条件
· 布尔数True / False (非零值为True,0,None为False)
if A > B:#加:表结束
print(A)#四空格缩进,if为真时执行
elif A = B:
print(A,B)
else #除if,elif的其他情况
print(B)
2.条件表达式
三元运算符
A if B else C
条件表达式取值的方式是,如果满足条件B,则返回if左边的值A;如果不满足条件,则返回else右边的值C,并且if左边的数据类型与else右边的数据类型相同。
六、列表
a = [ ](列表有序)
列表索引:a[0] (第一个元素)
a[-1] (最后一个元素)
· 列表函数(方法):
函数 | 作用 |
---|---|
list.append() | 末尾追加数据 |
list.extend() | 末尾追加另一个列表 |
list.insert(index,obj) | 在index位置插入元素 |
list.pop() | 删除元素并记录(空括号则删最后) |
list.count() | 统计某元素出现次数 |
list.index() | 从list中找到第一个匹配项的索引位置 |
list.remove() | 移出列表中某个值的第一个匹配项 |
list.reverse() | 对某列表逆向 |
list.sort() | 列表排序 |
七、循环
1.for 循环
自动遍历列表、字符串内所有元素
for i in list:
print(i)
若for循环无内容,需放入pass语句,避免出错
关键字 in 可检查是否存在某元素/字符
pg = "Stephen Curry"
print("Curry" in pg)
True
2.while 循环(条件循环)
无边界条件,需设计,用计数器推动
a = 5
while a > 0 :
print(a)
a = a - 1
3.补充语句
continue: 跳过本次迭代 中后面代码,进入下次迭代(小循环)
break: 跳出大循环,终止循环,从循环外首行执行
八、元组与字典
1.元组(tuple)
不可变线性数据结构
tuple1 = (x, y……)
tulle2 = (a,) #只有一元素时后加,
2.字典(dict)
存放有映射关系的数据
dict1 = {"key1": x, "key2" y, ……}
print(dict1["key1"] #输出x
dict1["key3"] = z #添加
dict函数 | 描述 |
---|---|
dict.keys() | 以list形式返回dict所有键(key) |
dict.get() | 获取指定键 |
dict.items() | 以list形式返回dict所有项(二元组结构) |
dict.clear() | 清空字典 |
dict.pop() | 移除指定键 |
dict.popitem() | 删除最后一项 |
dict.values() | 以list形式返回dict所有值 |
九、切片
截取数据
列表名/元组名[x:y] (空出则默认首尾,左闭右开)
使用负索引可从末尾开始切片
十、集合
集合无序,无重复,使用大括号
players = {"Curry","James","Leonard"}
for i in players:
print(i)
返回结果无序,无法索引特定项
集合无法更改,但可新添加
players = {"Curry","James","Leonard"}
players.add('Lillard') #添加一项
print(players)
player = {"Kobe","Iverson"}
players.update(player) #添加另一集合(对象不一定是集合,可是任何可迭代对象)
用union()返回包含两个集合中所有项的新集合
players = {"Curry","James","Leonard"}
player = {"Kobe","Iverson"}
players1 = players.union(player)
intersection_update()方法将只保留两个集合中都存在的项目。
用intersection()方法返回一个新集合,仅包含两个集合中都存在的项目。
symmetric_difference_update()方法将只保留仅在一个集合的元素。
symmetric_difference()方法返回一个新集合,仅包含仅在一个集合的元素。
使用remove()(删除元素需存在)、 或discard()(删除元素不存在也不会出错)方法可删除集合中元素
用pop.()可随机删除一项,用clear()可清空集合
十一、定义函数
1.定义形式
def PrintThreetimes(a): #a为参数,可调用多个
print(a)
print(a)
print(a)
#定义与使用间用空行隔开,便于阅读
PrintThreetimes(x)
def area(h,w):
return h*w #值返回外部
size = area(10,15)
print(size)
输出150
2.参数
1.必选参数:定义时无符号,调用时必须给定值
2.默认参数:设定默认值,不给定用 def area(h=10,w=5):
3.不定长参数(可变参数): def area(*a):
4.关键字参数:使用key = value语法发送参数。可无视参数顺序
def area(h1,h2,h3):
print(h1*h3)
area(h1 = 10, h2 =5, h3 =50)
任意关键字参数:接受多个关键字参数 def area(**h)
3.匿名函数(lambda)
使用时不输函数名
square = lambda x:x*x #对x进行一次计算替代(替代为x*x)
S = aruare(9)
print(S)
输出81
4.递归函数
程序调用了自己
def fac(n):
if n <= 1
return 1
return n*fac(n-1) #计算阶乘
5.跳转
调用函数的代码执行顺序
:执行到函数调用时进入函数定义,函数体执行完毕后,代码返回调用前的地方
十二、格式化输出
1. %作占位符
%s——字符串
%d / %i——整数
%f——浮点数
print('%10d' % 99) #10表示宽度(2宽度空一格)
print('%.6f' % 3.11415926535) #.6表示小数点后六位
#同时表示宽度和精度
print('%10.7f' % 3.1415926535) )
#注意数值前要有%
输出:
99
3.141592
3.1415926
2.{}作占位符
print(f"……{ }…… ")
格式化输出
print("My Name is {0}.I am {1} years old.I'm {0}".format(name,age))
0,1 对应位置
~~累累累~~