本学习笔记为阿里云天池龙珠计划Python训练营的学习内容,学习链接为:https://tianchi.aliyun.com/specials/promotion/aicamppython?spm=a2c6h.19782939.J_4650897450.1.4348564bZajvdr
变量、运算符与数据类型
1.注释
# 这是单行注释
print('hello world')
'''
这是多行注释
'''
"""
这是多行注释
"""
print('hello dw')
2.运算符
-
算数运算符(+,-,*,/,//,%,**)
-
比较运算符(>,<,<=,>=,==,!=)
-
逻辑运算符(and,or,not)
-
位运算符(~,&,`,^,<<,>>)
-
三元运算符
x,y = 4,5
a = x if x < y else y
print(a) #4
- 其他运算符(in,not in,is,not is)
a='hello'
b='hello'
print(a is b, a==b) #True True
a=['hello']
b=['hello']
print(a is b, a==b) #False True
注意:
1.is, is not 对比的是两个变量的内存地址
2.==, != 对比的是两个 变量的值
3.比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是 完全等价的
4.对比的两个变量,指向的是地址可变的类型(list,dict,tuple等),则两者是有区别的
3.变量和赋值
注意:
- 使用变量名前要先赋值
- 变量名可以包括字母、数字、下划线、但变量名不能以数字开头
- Python 变量名是大小写敏感的
4.数据类型与转换
- 基本类型:整型int,浮点型float,布尔型bool
- 容器类型:字符串str,元组tuple,列表list,字典dict,集合set
- 获取类型信息type(object)
- 判断两个类型是否相同推荐使用isinstance()
5.print()函数
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
- 关键字参数sep是实现分隔符,比如多个参数输出时想要输出中间的分隔字符,默认是空格
- 关键字参数end是输出结束时的字符,默认是换行符\n
a=['a','b','c']
for i in a:
print(i,'hello',sep=',',end='&')
#输出a,hello&b,hello&c,hello&
位运算
1.原码、反码和补码
-
原码:就是其二进制表示(注意,有一位符号位)
00 00 00 11 -> 3
10 00 00 11 -> -3 -
反码:正数的反码就是原码,负数的反码是符号位不变,其余位取反(对应正数按位取反)
00 00 00 11 -> 3
11 11 11 00 -> -3 -
补码:正数的补码就是原码,负数的补码是反码+1
00 00 00 11 -> 3
11 11 11 01 -> -3 -
符号位:最高位为符号位,0表示正数,1表示负数。在位运算中符号位也参与运算
2.按位运算
-
按位非操作 ~
~ 把num的补码中的 0 和 1 全部取反(0 变为 1,1 变为 0)有符号整数的符号位在 ~ 运算中同样会取反 -
按位与操作 &
只有两个对应位都为 1 时才为 1 -
按位或操作 |
只要两个对应位中有一个 1 时就为 1 -
按位异或操作 ^
只有两个对应位不同时才为 1 -
按位左移操作 <<
num << i 将num的二进制表示向左移动i位所得的值 -
按位右移操作 >>
num >> i 将num的二进制表示向右移动i位所得的值
3. 利用位运算实现快速计算
通过 <<,>> 快速计算2的倍数问题
通过 ^ 快速交换两个整数。 通过 ^ 快速交换两个整数
通过 a & (-a) 快速获取a的最后为 1 位置的整数
4. 利用位运算实现整数集合
一个数的二进制表示可以看作是一个集合(0 表示不在集合中,1 表示在集合中)。
比如集合 {1, 3, 4, 8},可以表示成 01 00 01 10 10 而对应的位运算也就可以看作是对集合进行的操作。
注意:整数在内存中是以补码的形式存在的,输出自然也是按照补码输出
条件语句
1. if 语句
if 2 > 1 and not 2 > 3:
print('yes')
# 输出yes
2.if - else 语句
tmp = input('猜一猜是数字几:')
guess = int(tmp)
if guess > 10:
print('猜大了')
else:
if guess == 10:
print('猜对了')
else:
print('猜小了')
print('结束游戏')
猜一猜是数字几:8
猜小了
结束游戏
if语句支持嵌套,即在一个if语句中嵌入另一个if语句,从而构成不同层次的选择结构
3. if - elif - else 语句
tmp = input('请输入成绩')
score = int(tmp)
if 100>= score >=90:
print('A')
elif 90> score >=80:
print('B')
elif 80> score >=60:
print('C')
elif 60> score >=0:
print('D')
else:
print('输入错误')
请输入成绩10
D
4.assert 关键词
assert 5>7
# AssertionError
循环语句
1. while 循环
count = 0
while count < 3 :
tmp = input('猜数字大小:')
guess = int(tmp)
if guess > 8:
print('猜大了')
elif guess < 8:
print('猜小了')
else:
print('猜对了')
count +=1
print('游戏结束')
猜数字大小:5
猜小了
猜数字大小:6
猜小了
猜数字大小:8
猜对了
游戏结束
2. while - else 循环
while 布尔表达式:
代码块
else:
代码块
当while循环正常执行完的情况下,执行else输出,如果while循环中执行了跳出循环的语句,比如 break,将不执行else代码块的内容
3.for循环
for循环是迭代循环,在Python中相当于一个通用的序列迭代器,可以遍历任何有序序列,如str、list、tuple等,也可以遍历任何可迭代对象,如dict
for 迭代变量 in 可迭代对象:
代码块
4.for - else 循环
for 迭代变量 in 可迭代对象:
代码块
else:
代码块
当for循环正常执行完的情况下,执行else输出,如果for循环中执行了跳出循环的语句,比如 break,将不执行else代码块的内容,与while - else语句一样
5. range() 函数
range([start,] stop[, step=1])
- 这个BIF(Built-in functions)有三个参数,其中用中括号括起来的两个表示这两个参数是可选的。
- step=1 表示第三个参数的默认值是1
- range 这个BIF的作用是生成一个从start参数的值开始到stop参数的值结束的数字序列,该序列包含start的值但不包含stop的值
6.enumerate()函数
enumerate(sequence, [start=0])
- sequence:一个序列、迭代器或其他支持迭代对象。
- start:下标起始位置
- 返回 enumerate(枚举) 对象
enumerate()与 for 循环的结合使用
for i, a in enumerate(A)
do something with a
languages = ['python','C++','java']
for i,language in enumerate(languages,1):
print(i,'I love',language)
print('Done')
1 I love python
2 I love C++
3 I love java
Done
7. break 语句
break语句可以跳出当前所在层的循环
8. continue 语句
continue终止本轮循环并开始下一轮循环
9. pass 语句
pass是空语句,不做任何操作,只起到占位的作用,其作用是为了保持程序结构的完整性。尽管pass语句不做任何操作,但如果暂时不确定要在一个位置放上什么样的代码,可以先放置一个pass语句,让代码可以正常运行
10. 推导式
- 列表推导式
[ expr for value in collection [if condition] ]
- 元组推导式
( expr for value in collection [if condition] )
a = (i for i in range(10))
print(a)
<generator object at 0x000001612A20FAC8>
generator称为生成器,由于列表内存受限,一个包含很多元素的列表不仅占用还能存储空间,而且在只需要访问前几个元素时,后面元素占用的空间就浪费了,所以为了节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器
print(next(a))
for i in a:
print('A',i)
0
A 1
A 2
A 3
A 4
A 5
A 6
A 7
A 8
A 9
- 字典推导式
{ key_expr: value_expr for value in collection [if condition] }
- 集合推导式
{ expr for value in collection [if condition] }
- 其它
next(iterator[, default])
异常处理
1. Python 标准异常总结
2. Python标准警告总结
3. try - except 语句
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
4. try - except - finally 语句
5. try - except - else 语句
try:
检测范围
except:
出现异常后的处理代码
else:
如果没有异常执行这块代码
6. raise语句
Python 使用raise语句抛出一个指定的异常
学习思考和总结
第一次开始尝试以博客方式总结知识点,若有错误还望指正,开头的学习链接中有更完整的知识梳理,以后还会多加完善和修改,愿每个人每天都有所进步。