变量和运算符
1.变量
语法:变量名 = 数据
说明:变量名是程序员自己命名
要求:
1.首先得是标识符
2.不能是关键字
规范:
1.见名知意
2.满足PEP8的命名规范(所有字母小写,单词之间用下划线隔开)例如:teacher_name = ‘jack’
3.不使用系统提供的类型名,函数名和模块名
= : 是赋值符号
数据:任何有结果的表达式 包括:独立的数据,运算表达式
(除了赋值运算),函数调用表达式
print('print')
a = 260
b = 2
c = 0.1314
print(a * b + c)
使用变量:
-
变量中保存的数据能做什么,变量就能做什么
-
使用变量的时候,其实就是在使用变量中保存的数据
修改变量的数据(重新给变量赋值)
变量 = 新值
python 中同一个变量可以保存不同类型的值
同时给多个变量赋值:
a,b,c = 10,20,30
交换两个变量的值:
x = 100
y = 200
x,y = y,x
同时给不同变量赋相同的值
x1 = x2 = x3 = 5
没赋值过的变量不能直接使用!
2.变量赋值的原理
内存:
1.栈区间:系统自动操作
2.堆区间:程序员写代码申请和释放
c语言中:
先在堆区间申请内存,和变量绑定,再将值赋给变量
重新赋值,必须和之前申明的数据类型一致
python中:
先申请内存开辟空间,看数据需要多大,就开多大空间,再和数据绑定
重新赋值的时候,先从新开辟一个新的内存取余,需要多少空间就开辟多少空间,把新赋的值添加进去,原来的值如果不用就将其删除
定义变量和给变量赋值的原理:
1.先再堆中申请内存(申请多大看被赋值的数据需要多大内存)
2.将数据保存再内存区域中
3.让变量和保存数据的内存进行关联(让变量保存数据对应的内存地址
id函数
id(变量) - 获取变量中关联的数据再内存中的地址
num = 10 #id - 140720389517856
print(id(num))
num = 20 #id - 140720389518176
print(id(num))
3.数学运算符
python支持的运算符:数学运算符,比较运算符,逻辑运算符,赋值运算符,位运算
数学运算符:+,-,*,/,%,//,**
- 加减乘除和数学中的加减乘除功能一样
- 取余(%):取计算后的余数
num = 678
print(num % 100) #结果为78
- 整除(//):求商取商的整数部分(向下取整,向小取整)
print(5//2) #结果为2
print(-5//2) #结果为-3
- 幂运算(**)
print(2**2) #结果为4
比较运算符(关系运算符):> ,<, ==, <=, >=, !=
-
所有比较运算的结果都是布尔值
-
数字数据不能和文本数据相比较
-
python支持比较运算符的连写来表示范围
print(10 < 20 <30)
- 可以将运算结果赋值给变量
逻辑运算符:and or not
逻辑与运算:and
-
运算规则:
操作对象都是布尔值:同为True,才为True,有一个False,结果为False,同为False,为False -
应用场景:希望两个或多个条件同时满足才做什么逝去,就是用逻辑与运算,相当于生活中的并且
练习一:写出学生是否能拿奖学金的要求:(绩点超过4,操评分高于85,同时满足)
grade = 3.8
score = 80
if grade > 4 and score > 85:
print('能拿奖学金')
else :
print('不能拿奖学金')
逻辑或运算:or
- 运算规则
操作对象为布尔值时:只要有一个为True,则为True,全为False,才为False - 应用场景:
希望两个或多个条件只要有一个满足就能使用逻辑或运算
练习二:写出学生是否能拿奖学金的要求:(绩点超过4或操评分高于85)
练习三:写出判断指定年是否为闰年,year:2012
练习二:
grade = float (input('请输入绩点:'))
score = int (input('请输入成绩:'))
if grade > 4 or score > 85:
print('能拿奖学金')
else :
print('不能拿奖学金')
练习三:
year = int(input('请输入年份:'))
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
print('是闰年')
else :
print('不是闰年')
逻辑非运算:not
运算规则:True变成False,False变成True
应用场景:对某个条件进行否定,就用not
练习:写出一个数是否不能同时被3和7整除
num = 21
if not(num % 3 == 0 and num % 7 == 0):
print('不能被同时整除')
else :
print('能同时被整除')
4.操作对象不是布尔值的时候
逻辑运算符语法上可以操作任何数据
如何确定一个数是布尔值,只有0和空字符串为False,其他均为 True
数据1 and 数据2 ->数据1的布尔值是True,结果就是数据2,如果数据一的布尔值是False,结果就是数据一
数据1 or 数据2 ->如果数据一的布尔值是True,结果就是数据1,如果数据一的布尔值是False,结果就是数据
print(0 and 1) #0
print(1 or 0) #1
print(0 or 1) #1
print(1 or 2) #1
print(not 0) #True
5.短路操作
and的短路操作:
条件1 and 条件2 ->如果条件一是False,条件二是不会执行的
or的短路操作:
条件1 or 条件2 ->如果条件1的结果是True,条件二是不会执行的
赋值运算符:=,+=,-=,*=,/=,%=,//=,**=
所有的赋值运算都是用来给变量赋值的
所有的赋值运算符的左边都必须是变量,复合赋值运算符,左边的变量必须是已经赋值过的变量
所有赋值运算符的右边都可以是任意有结果的表达式
- =(a=10)
- +=,-=,=,/=,%=,//=,=
变量 += 数据 -> 变量 = 变量 + 数据
运算优先级:数学运算符>比较运算符>逻辑运算符>赋值运算符(最低) - >,/%,//>+,-
4.位运算
位运算的特点:效率高,内存消耗少
位运算运算符有哪些:按位与运算(&),按位或运算(|),按位异或运算(^),按位取反
(~),左移(《)右移(》)
-
按位与(&):
本身规律:所有位运算都是直接操作数据在内存当中的补码
数字1 & 数字2 两个都是1,结果为1,否则是0
应用:判断数字的奇偶性
让一个数和1 与,可以判断这个数的奇偶性,结果是0为偶数,否则是奇数。
print(40&1) #结果为0,即为偶数
练习:7|16
7的原码:00000111
16的原码:00010000
结果:00010111(23)