语法:变量名 = 数据
说明:变量名是程序员自己命名
要求:
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
没赋值过的变量不能直接使用!
1.栈区间:系统自动操作
2.堆区间:程序员写代码申请和释放
先在堆区间申请内存,和变量绑定,再将值赋给变量
重新赋值,必须和之前申明的数据类型一致
先申请内存开辟空间,看数据需要多大,就开多大空间,再和数据绑定
重新赋值的时候,先从新开辟一个新的内存取余,需要多少空间就开辟多少空间,把新赋的值添加进去,原来的值如果不用就将其删除
1.先再堆中申请内存(申请多大看被赋值的数据需要多大内存)
2.将数据保存再内存区域中
3.让变量和保存数据的内存进行关联(让变量保存数据对应的内存地址
id(变量) - 获取变量中关联的数据再内存中的地址
num = 10 #id - 140720389517856
print(id(num))
num = 20 #id - 140720389518176
print(id(num))
num = 678
print(num % 100) #结果为78
print(5//2) #结果为2
print(-5//2) #结果为-3
print(2**2) #结果为4
所有比较运算的结果都是布尔值
数字数据不能和文本数据相比较
python支持比较运算符的连写来表示范围
print(10 < 20 <30)
逻辑与运算:and
运算规则:
操作对象都是布尔值:同为True,才为True,有一个False,结果为False,同为False,为False
应用场景:希望两个或多个条件同时满足才做什么逝去,就是用逻辑与运算,相当于生活中的并且
练习一:写出学生是否能拿奖学金的要求:(绩点超过4,操评分高于85,同时满足)
grade = 3.8
score = 80
if grade > 4 and score > 85:
print('能拿奖学金')
else :
print('不能拿奖学金')
逻辑或运算:or
练习二:写出学生是否能拿奖学金的要求:(绩点超过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,条件二是不会执行的
所有的赋值运算都是用来给变量赋值的
所有的赋值运算符的左边都必须是变量,复合赋值运算符,左边的变量必须是已经赋值过的变量
所有赋值运算符的右边都可以是任意有结果的表达式
位运算的特点:效率高,内存消耗少
位运算运算符有哪些:按位与运算(&),按位或运算(|),按位异或运算(^),按位取反
(~),左移(《)右移(》)
print(40&1) #结果为0,即为偶数
数字1 |数字2:只要有一个1结果就是1,两个都是0,结果就是0
练习:7|16
7的原码:00000111
16的原码:00010000
结果:00010111(23)
数字1 ^ 数字2:不同为1,相同为0
数字1 >> 数字2 -> 数字1 // 2 ** 数字2
数字1 << 数字2 -> 数字1 * 2 ** 数字2