19.7.24Day003.变量和运算符

简单的复习了Day002所讲的,顺便讲了常用的一些快捷键,不熟悉的有
ctrl+z撤销和ctrl+shift+z反撤销,进制转换:转二进制:1)十进制:辗转取余法。2)八进制和十六进制与下面相反。a.二进制转八进制:将3位二进制转换为一位八进制。b.二进制转十六进制:将4位二进制转换为一位十六进制

变量

首先什么是变量:
变量是在程序开辟空间存储数据用的
其次声明变量:
1)语法:
变量名 = 值

2).说明:
变量名 - 程序员自己命名;
(要求) -> 是标识符,不能是关键字
(规范) -> 遵守PEP8命名规范-->变量名中所有字母都小写,如果由多个单词组成,单词之间用_隔开
见名知义 - 看见变量名大概知道变量中存储的是什么数据

= -> 赋值符号,将右边的值赋给左边的变量
值 -> 任何有结果的表达式,可以是具体数据,也可以是赋值过的变量,也可以是运算表达式

声明变量和给变量赋值的原理(重要!!!):
1.先在内存中开辟空间存储数据(内存空间大小由数据的大小动态的分布),然后再将保存数据的内存空间地址赋给变量
2.用一个变量给另一个变量赋值时,实质是将变量中的地址赋给新的变量

值得注意的是:
a.同一个变量可以存储不同类型的值
b.变量必须先声明/赋值再使用
c.同时声明多个变量,赋相同的值:变量1 = 变量2=··· = 值
如:
a = b = c = 12
print(a, b, c)
d.同时声明多个变量,赋不同的值:变量1 ,变量2··· = 值1,值2···但是要注意:变量个数与值的个数要保持一致

运算符

所有的逻辑运算符的运算对象是布尔,结果也是布尔
1)and
运算规则:两个都为True结果才是True,只要有一个False结果就是False
True and True -> True
True and False -> False
False and True -> False
False and False -> False

什么时候用:当希望多个条件同时满足的时候,就用and将多个条件连接。and相当于生活中的并且

2)or
运算规则:两个都为False结果才是False,只要有一个True结果就为True

什么时候用:当希望多个条件只要有一个满足的时候,就用or将多个条件连接。or相当于生活中的或者

3)not
运算规则:True变False,False变True
not True -> False
not False -> True

什么时候用:对某个条件进行否定

4)短路操作
与运算的短路操作:当and前面的表达式的值是False时,程序不会执行and后面的程序
或运算的短路操作:当or前面的表达式的值是True时,程序不会执行or后面的程序

例子:

#用一个变量保存学生的绩点,一个变量保存学生的操评分,写一个条件来判断学生是否能拿奖学金
# 1)奖学金条件:绩点不低于3.5,操评分至少90分
grade = 4
score = 88
# 条件1:grade>=3.5 条件2:score>=90
print('是否能拿奖学金:', grade >= 3.5 and score >= 90)
# 1)奖学金条件:绩点不低于3.5,或者 操评分至少90分
print('是否能拿奖学金:', grade >= 3.5 or score >= 90)

# 判断一个数是否能被2或者5整除
num = 23
print("num能否被2或者5整除:", num % 2 == 0 or num % 5 == 0)
# 判断一个数是否能同时被2和5整除
print("num能否被2和5整除:", num % 2 == 0 and num % 5 == 0)
# 判断一个数是否是3或者7的倍数,并且这个数的末尾不是3
print("num能否被或者7整除,末尾不是3:", (num % 3 == 0 or num % 7 == 0) and(num % 10 !=3))

赋值运算符 = , +=, -=, =, /=,%=,//=,*=
不管是什么样的赋值运算符,最终的操作都是给变量赋值;所以赋值运算符的左边必须是变量
1)=:将右边的值赋给左边的变量
2)复合的赋值运算符:先将赋值符号左边的变量中的值取出来,然后进行指定运算,最后将新运算的结果重新赋值给左边的变量
注意:复合的赋值运算符的左边必须是已经赋值过的变量

位运算

#位运算操作的是数字的补码的每一位,位运算因为是直接操作计算机存储空间的每一位,所以执行效率要比一般的运算高
# 位运算:&(按位与运算),|(按位或运算),^(按位异或),~(按位取反),<<(左移),>>(右移)
"""
1)数字1 & 数字2    两个数字补码上相同位置上的数,如果都是1结果就是1,如果有一个0就是0

1 & 1       ->1
1 & 0       ->0
0 & 1       ->0   
0 & 0       ->0

2)数字1 | 数字2    两个数字补码上相同位置上的数,如果都是0结果就是0,如果有一个1就是1

1 | 1       ->1
1 | 0       ->1
0 | 1       ->1    
0 | 0       ->0

3)~数字  将数字补码上的0,1互换(0变1,1变0)

4)数字1 ^ 数字2    两个数补码上相同位置上的值,如果相同结果是0,不同结果是1

1 ^ 1   0
1 ^ 0   1
0 ^ 1   1
0 ^ 0   0
一个数异或同一个数两次,结果就是这个数本身

5)
左移
数字<< N  让数字是补码整体左移N位,第一位用0补充  规律:数字变成*(2**N)
右移
数字>> N  让数字是补码整体右移N位,整数高位补0,负数高位补1   规律:数字//(2**N)

位运算应用:
1.乘2的次方或者整除2的次方
2.数字与上1 ==0 为偶数 与上1 ==1 为奇数
运算符优先级:
数学运算符>比较运算符>逻辑运算符>赋值运算符

你可能感兴趣的:(19.7.24Day003.变量和运算符)