第一章 1.2 变量和运算符
一、变量
1、变量
- 变量是用来申请空间保存数据的
变量的公式:变量名 = 值
2、说明
- 变量名:自由命名,但要遵循一下要求和规范
要求:
是标识符(1.由数字、字母和下划线组成;2.数字不能开头),不能是关键字
规范:
1.见名知义:看到变量名,知道变量里存的什么数据
2.满足PEP8命名规范:变量名内所有字母都小写,如果由多个单词组成变量名,则多个单词之间用下划线隔开
3.不能用系统提供的函数名、类名、库名等系统相关的名来给变量命名 - 值:可以是任何有结果的表达式;例如:数据,已经赋值过的比那辆、运算表达式等
3、变量的使用
使用变量就是在使用变量里面的值;变量中的值可以修改大小和类型
4、同时声明多个变量
- 同时声明多个变量赋相同的值
变量1 = 变量2 = 变量3 = ... = 值 - 同时声明多个变量赋不同的值
变量1,变量2,变量3,...=值1,值2,值3...
5、python声明变量的原理
根据变量的大小申请的相应大小的内存,将变量名和数据对应的内存空间关联在一起;
在python中用一个变量给另外一个变量赋值的时候是将原来的变量的地址赋给另外一个变量,赋值完成后,数据只有一份。
变量三要素:
1.类型 - 给变量复制的数据的类型 - type(变量)
2.地址 - 给变量复制的数据在内存中的地址,也是正真存储的东西 - id(变量)
3.值 - 给变量复制的数据
二、运算符
(一)、数学运算符
1、加减乘除:+ - * /
print(10 + 3)
print(10 - 3)
print(10 * 3)
print(10 / 3)
2、取余/取模/求余数:%
num = 123
print(num % 10) #取个位
print(num % 100) #取个位和十位
应用:
1、判断正数的奇偶性 - 判断该数对2取余结果是否为0
2、判断是否能整除
3、取低位数
3、整除://(商只取整数部分)
应用:取高位
print(num // 100) #取高位1
注:负数的整除,取了结果之后减1
print(-9 // 2) = -5
4、幂运算:** (x**y -- x的y次方)
print(2 ** 3)
print(16 ** (1/2)) #开方
print(8 ** (1/3)) #开方
(二)、比较运算符
所有的比较运算符的运算结果都是布尔值
1、大于、小于、大于等于、小于等于:> < >= <=
print(30 >= 20)
print(30 >= 30)
2、等于、不等于:== != -- 判断两个值是否相等
print(10 == 10)
print(10 != 10)
3、python可以用连续的比较运算符表示范围
age = 30
print(28 < age < 40)
(三)、逻辑运算符
逻辑运算的对象和结果都是布尔值
1、and (逻辑与)
1)、运算规则:两个都是True结果才是True,只要有一个是False结果就是False
2)、使用场景:需要多个条件同时满足
# 判断一个数是否能同时被3和7整除
num = input('请输入数值:')
rem1 = int(num) % 3
rem2 = int(num) % 7
print('是否能同时被3和7整除:',rem1 == 0 and rem2 == 0)
2、or (逻辑或)
1)、运算规则:两个都是False结果才是False,只要有一个是True结果就是True
2)、使用场景:多个条件中有一个田间满足就行
# 判断一个数是否能被3或被7整除
num = input('请输入数值:')
rem1 = int(num) % 3
rem2 = int(num) % 7
print('是否能被3或被7整除:',rem1 == 0 or rem2 == 0)
3、not (逻辑非)
1)、运算规则:True变False,False变True
2)、使用场景:对一个条件进行否定
# 一个数不能同时被3和7整除的条件
num = input('请输入数值:')
rem1 = int(num) % 3
rem2 = int(num) % 7
print('不能同时被3和7整除:',not (rem1 == 0 and rem2 == 0))
(四)、赋值运算符
= , += ,-= ,*= ,/= ,%= ,//= ,**=
所有赋值运算符的左边必须是变量,组合赋值运算符的左边除了是变量,这个变量还必须是已经声明过的。
1)、 变量 = 值 -> 将右边的值赋给左边的变量
2)、 组合赋值运算符
已经声明过的变量 += 值 -> 变量 = 变量 + 值
运算符优先级:
数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
数学运算符优先级:
** > *,/,//,%(优先级相同) > + ,-
如果有括号则先算括号
(五)、位运算
所有的位运算都是针对数字的补码进行操作的
位运算符:&(与)、|(或)、~(取反)、^(异或)、<<(左移)、>>(右移)
1、&(按位与)
1)、运算规则:补码每一位上的数都是1结果就是1,如果有一个0结果就是0
例:1110 & 0111 = 0110
2)、运用:高效判断数字的奇偶性
将数字和1进行按位与运算,判断结果是0(偶数)还是1(奇数)
print(3 & 1, 7 & 1,19 & 1)
print(4 & 1, 128 & 1,800 & 1)
2、| (按位或)
1)、运算规则:补码每一位上的数都是0结果就是0,如果有一个1结果就是1
例:1110 | 0111 = 1111
3、~ (按位取反)、单目运算
例:~1101 = 0010
4、^ (异或)
运算规则:每一位上的数相同为0,不同为1
例:1110 ^ 0111 = 1001
5、<< (左移)
数字 << N 指定的数字的补码整体向左移动N位;
计算:数字*2**N
6、>> (右移)
数字 >> N 指定的数字的补码整体向右移动N位;
计算:数字//2**N