变量与运算符
1.变量
1.什么是变量:变量是用来申请空间保存数据的
- 声明变量的语法
声明完变量后,使用变量就是在使用变量里存储的值
变量名 --- 值
2)说明
重命名 - 程序员自己命名的
要求:是标识符;不能是关键字
规范:见名知义;满足PEP8命名规范(所有的字母都小写,多个单词用下划线隔开; 不能使用系统提供的函数名、类名、库名来给变量命名
= ---> 赋值符号,将右边的数据赋值给左边的变量(动词)值
值 ---> 任何有结果的表达式,例如:数据、已经声明过的变量、运算表达式等
3).变量的值
b = 89
b2 = 0x1101
b3 = '你好'
b4 = True
b5 = age
b6 = 10 + 2 + age
2.变量的使用
使用变量就是使用变量中的值;变量中的值可以修改
3.同时声明多个变量
1)同时声明多个变量赋相同的值
变量名1 = 变量名2 = 变量名3 = ... = 值
2)同时声明多个变量赋不同的值
变量名1,变量名2,变量名3,.... = 值1, 值2, 值3
4.python声明变量原理
开辟空间存储数据(注册这个数据需要多大的内存就可以开辟多少空间),然后在将变量的和这个数据对应的内存空间关联到一起,在对变量重新赋值时,则是开辟一个新的空间存储数据,在与之前的变量关联的同时销毁之前的数据空间
变量三要素:
a = 10
值 - 给变量赋值的数据(10)
使用变量类型 - 给变量赋值的数据的类型(int)
type(变量)地址 - 给变量赋值的数据在内存中的地址,也是变量中真正存储的东西(0xff)id(量)
注意:python中一个变量给另外一个变量赋值是将原来的变量中数据地址赋给另外一个变量;赋值完成后,数据还是只有一个
2.运算符
python支持的运算符:数学运算符、比较运算符、逻辑运算符、赋值运算、位运算
1.数学运算符:+、-、、/、%、//、*
1)+、-、*、/ 和小学数学的加、减、乘、除的功能一模一样
print(5 / 2)
2)% --- 求余数(取余/取模)
print(5 % 2)
应用1:判断整数的奇偶性 - 判断这个数对2取余的结果是否为0
print(23 % 2)
应用2:是否整除 - 判断余数是否为0
应用3:取低位数,列如,获取一个整数个位数 - 数字%10
num = 123
print(num % 10) #3
print(num % 100) #23
- // - 整除;商只取整数部分
注意:负数整除除不尽的时候向下取整
print(5 // 2) # 2
应用:取高位
print(num // 100) # 1
- ** - 幂运算: x ** y -- 求x的y次方
print(2 ** 3)
print(16 ** (1/2))
2.比较运算符:>、<、==、!=、>=、<=
注意:所有的比较运算符的运算结果都是布尔值
1)>、<、>=、<=和数学中的一样
print(10 > 20) #False
print(10 < 20) #True
- == -- 判断两个值是否相等, != - 判断两个值是否不相等
print(10 == 10) #True
print(10 != 10) #False
3)python可以想数学一样用比较运算符连写的方式表示范围(C/Java/JS等不可以)
age = 30
print(18 < age < 28)
3.逻辑运算符:and(与)、or(或)、not(非)
逻辑运算符的运算对象和结果一般都是布尔值
1)and
运算规则:两个都是True结果才是True,只要有一个是False结果就是False
True and True -> True
False and True -> False
True and False -> False
False and False -> False
使用场景:需要多个条件同时满足的时候,就用and:相当于生活中的并且
GPA = 4.5
score = 90
获取奖学金的条件:绩点不低于4并且评分不低于95
print('是否能获取奖学金', GPA >= 4 and score >95)
练习:判断一个数是否能够同时被3和7整除
num = 21
print('是否能够同时被3和7整除:', num % 3 == 0 and num % 7 == 0)
- or
运算规则:两个都是False结果才是False,只要有一个是True结果就是True
True or True -> True
False or True -> True
True or False -> True
False or False -> False
使用场景:需要多个条件中有一个条件满足就行,就使用or;相当于生活中的或者
GPA = 4.5
score = 98
获取奖学金的条件:绩点不低于4或评分高于95
print('是否能获取奖学金', GPA >= 4 or score >95)
3)not
运算规则:True变False, False变True
not True -> False
not False -> True
使用场景:对某一个条件进行否定
num = 42
一个数不能同时被3和7整除的条件
print('不能同时被3和7整除:',not(num % 21 == 0)
4)短路操作
and的短路操作:条件1 and 条件2 ->and前面的条件如果结果是False,那么后面的条件语句不会执行,结果直接是False
or的短路操作:条件1 or 条件2 -> or前面的条件如果结果是True,那么后面的条件语句不会执行,结果直接是True
def func1():
print('函数被执行了')
return True
False and func1()
True or func1()
4.赋值运算符:=、+=、-=、=、/=、%=、//=、*=
所有的赋值运算符的左边必须是变量;组合赋值运算符的左边除了是变量,这个变量还必须是已经声明过的
1)变量 = 数据 -> 将右边的数据赋值给左边的变量
a = 10
b = 10 * 2
c = a
d = a + b
- 组合的赋值运算符
变量 += 值 -> 变量 = 变量 + 值
aa += 10
bb = 100
bb *=4/2 除法运算后结果为浮点数
5.运算顺序
数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
数学运算符的优先级和数学一样:** > * , / , // , % > + , -
如果有括号,先算括号里面的
3.位运算符
所有的位运算都是针对数字的补码进行操作的;特点是:快(效率高)
位运算:&(与),|(或),~(取反),^(异或),<<(左移),>>(右移)
1.&
运算规则:补码每一位上的数都是1结果就是1,如果有一个0结果就是0
1110 & 0111 = 0110
应用:高效判断数字的奇偶性 - 让数字和1进行按位与运算,判断结果是0(偶数)还是1(奇数)
a = 3 & 2
print(a)
3的补码:00000011
2的补码:00000010
00000011 & 00000010 = 00000010 == 2
b = -7 & 3
print(b)
-7的补码:10000111(原) -> 11111001(补)
3的补码: 00000011
-7 & 3 = 00000001(补) == 1
print(9 & 1, 6 & 1, 69 & 1, 96 &1)
2.|
运算规则:每一位上的数如果都是0结果就是0,只要有1结果就是1
1110 | 0111 -> 1111
print(3 | 2)
print(-7 | 3)
-7:11111001(补)
3:00000011 (补)
11111011(补) -> 11111010(反) -> 10000101 == -5
3.~
运算规则;将每一位上的0变成1,1边变成0
~1101 -> 0010
4.^
运算规则:每一位相同上的数相同为0,不同为1
11011 ^ 10010 ->01001
5.<<
运算规则:<< n ->指定的编码整体想左移动N位;计算:数字 * 2 ** N
print(2 << 1) # 2 * 2**1 == 4
print(3 << 2) # 3 * 2**2 == 12
print(-4 << 1) # -8
6.>>
运算规则:>>n ->指定的编码整体想有右移动N位 ; 计算:数字 // 2 ** N
print(4 >> 1) # 2
print(9 >> 2) # 2
print(-8 >> 2) # -2
print(-9 >> 1) # -5
print(-9 // 2) # -5