美文网首页
第002篇:变量、运算符、位运算

第002篇:变量、运算符、位运算

作者: yydafx | 来源:发表于2019-11-06 20:17 被阅读0次

1、变量

1.1、什么是变量和变量的声明?

 - 变量是用来申请空间保存数据的(变量就是用来存数据的)

 1.1.1、声明变量的语法

  变量名 = 值
   - 声明完变量后,使用变量就相当于使用变量存储的值
  说明

  •   变量名:
       a、程序员自己命名的
       b、要求:标识符;不能是关键字
       c、规范:见名知义;满足PEP8命名规范(所有字母都小写,多个单词用下划线隔开);不能使用系统提供的函数名、类名库名等来给变量命名;
  •   赋值符号(=):将右边的数据赋给左边的变量
  •   值:任何有结果的表达式:
      eg:数据、已经声明过的变量、运算表达式等
age = 20
if age > 18:
    print('老了啊')

1.2、变量的使用
  • 使用变量就是使用变量中的值;
  • 变量中的值可以修改;
age = 18
print(age)
age = '大帅'
print(age)
1.3、同时声明多个变量
  • 同时声明多个变量赋相同的值
     变量1 = 变量2 = 变量3 = ... = 值
a1 = a2 = a3 = 10
print(a1, a2, a3)
  • 同时声明多个变量赋不同的值
     变量1, 变量2, 变量3, ... = 值1,值2,值3,...
b1, b2, b3 = 12, 21, 23
print(b1, b2, b3)
1.4、python声明变量的原理
  • 先开辟空间存储数据(存储数据需要多大的内存就开辟多大的内存空间,然后再将变量和这个数据对应的内存空间关联到一起)
    变量三要素(a = 10):
  • 值(变量) : 给变量赋值的数据(10)
  • 类型(type) : 给变量赋值的数据的类型(int)
  • 地址(id) : 给变量赋值的数据在内存中的地址,也是变量中真正存储的东西(0xff)
a = 10
print(a, type(a), id(a))
a = 11
print(a, type(a), id(a))
  • 注意: 用一个变量给另一个变量赋值的时候,是将原来的变量中的数据的地址赋给另一个变量;复制完成后,数据还是只有一个。**
b = a
print(id(a), id(b))

2、运算符

  • python支持的运算符:数学运算符、比较运算符、逻辑运算符、赋值运算符;位运算
2.1、数学运算符
  • 符号:+、 -、 *、 /、 %、 //、 **
 2.1.1、加(+)、减(-)、乘(*)、除(/)功能与小学数学中的功能一样
 2.1.2、% 求余数(取余、取模)

  - 应用1:判断整数的奇偶性 --> 这个数对2取余是否为0

print(15 % 2)
print(20 % 2)

  - 应用2:是否整数 --> 判断余数是否为0
  - 应用3:取低位数 --> 获取一个整数的位数

num = 123
print(num % 10)  # 3
print(num % 100)  # 23
 2.1.3、// 整除(商只取整数部分)
print(5 // 2)  # 2
print(3.9 // 3)  # 1.0
 2.1.4、** 幂运算 --> x**a(x的a次方)
print(2 ** 3)
print(16 ** (1 / 2))
print(8 ** (1 / 3))
2.2、比较运算符
  • 所有的比较运算符的运算结果都是布尔值
  • 符号:>、<、==、!=、>=、<=
 2.2.1、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)功能与小学数学中的功能一样
print(10 > 20)  # False
print(10 < 20)  # True
 2.2.2、== 判断两个值是否相等; != 判断两个值是否不相等
print(10 == 10)  # True
print(10 != 10)  # False
 2.2.3、python中可以像数学一样用比较运算符连写的方式表示范围(Java/C/Js等不可以)
age = 20
print(18 < age < 23)
2.3、逻辑运算符
  • 逻辑运算符的运算对象和结果一般都是布尔值
  • and(与) or(或) not(非)
 2.3.1、and 一假为假
  •  运算规则:两个都是True的结果才是True,只要有一个为False的结果就是False
  •  使用场景:需要多个条件同时满足的时候就用and;相当于生活中的and
# eg:获取奖学金的条件是gpa不低于4,成绩大于90
gpa = 4.5
score = 90
print('获取奖学金的条件', gpa >= 4 and score > 95)
# 练习:判断一个数是否能够同时被3和7整数,
num = 35
print('判断一个数是否能够同时被3和7整数', num % 3 == 0 and num % 7 == 0)
print('判断一个数是否能够同时被3和7整数', num % 21 == 0)
 2.3.2、or 一真为真
  •  运算规则:两个都是False的结果才为False,只有一个为True的结果就是True
  •  应用场景:需要多个条件中有一个条件满足就行,就使用or;相当于生活中的or
# eg:获取奖学金的条件是gpa不低于4或者成绩大于90
gpa = 4.5
score = 90
print('获取奖学金的条件', gpa >= 4 or score > 95)
 2.3.3、not 对某个条件进行否定
  •  运算规则:True变成False,False变成True
  •  使用场景:对某一个条件进行否定
# 一个数不能同时被3和7整除的条件
num = 34
print('不能同时被3和7整除的条件', not (num % 3 == 0 and num % 7 == 0))
print('不能同时被3和7整除的条件', not (num % 21 == 0))
 2.3.4、短路操作
  •  and短路操作:条件1 and 条件2
      and前面的那个条件如果结果是False,那么后面的条件语句不会执行,结果只能是False
  •  or短路操作:条件1 or 条件2
      or前面的那个条件如果是True,那么后面的条件不会执行,结果直接是True
2.4、赋值运算符
  • =、+=、-+、=、/=、%=、//=、*=
  • 所有的赋值运算符的左边必须是变量,
  • 组合赋值运算符的左边除了是变量之外,这个变量还必须是声明过的
 2.4.1、变量 = 值 将右边的值赋给左边的变量
 2.4.2、变量 += 值 变量 = 变量 + 值
a = 10
a *= 4/2    # a=20.0
print(a)

a **=2
print(a)
2.4、赋值运算符
  • 数学运算符 > 比较运算符 > 逻辑运算符 >赋值运算符(最低)
  • 数学运算符的优先级:** * / // % + -

3、位运算

  • 位运算:&(与)、|(或)、~(取反)、^(异或)、<<(左移)、>>(右移)
  • 所有的位运算的运算规则都是针对数字的补码进行操作的;
  • 特点:快(效率高)
3.1、&(按位与)
  •  按位:有0为0
  •  运算规则:补码的每一位上的数都是1结果就是1,如果有一个0结果就是0
  •  应用:高效判断数字的奇偶性 --> 让数字和1进行按位与运算,判断结果是0(偶数)还是1(奇数)
eg:1101 & 0111 = 0101
a = 3 & 2  # a=2
'''
3: 00000011
2: 00000010
'''
print(a)
print('--->',3&1, 4&1, 7&1)
b = -7 & 3  # b = 1
print(b)
'''
-7 = 10000111(原码)-->1111 1001(补码)
3 =                     0000 0011(补码)
00000001 --> 1     # 因为是整数,原码、反码、补码一致
'''
3.2、|(按位或)
  •  按位:有1为1
  •  运算规则:每一位上的数如果全是0结果就是0,只要有1就是1
eg:1101 | 0111 = 1111
b = -7 | 3  # b = 1
'''
-7: 11111001(补码)
3: 00000011(补码)
11111011(补码) -> 11111010(反码) -> 10000101(原码) --> -5
'''
print(b)
3.3、~
  •  按位:取反
  •  运算规则:将每一位上的0变成1,1变成0
~ 1101 --> 0010
# -7:11111001(补码) --> 00000110
print(~-7)
3.4、^
  •  运算规则:每一位上的数相同为0,不同为1
1101 ^ 0011 = 1110
3.5、<<
  •  数字 << N --> 指定的数字的补码整体向左移动N位;
  •  公式:数字2*N
print(3<<3) # 3 * 2**3
print(-4<<3) # 3 * 2**3
3.6、>>

整除:负数除不尽的情况下向下取整

  •  数字 >> N --> 指定的数字整除2的N次方
  •  公式:数字//2**N
print(8>>2) # 2  8//2*2
print(9>>2) # 2  9//2*2
print(-9>>2) # -3  -9//2*2  向下取整

相关文章

网友评论

      本文标题:第002篇:变量、运算符、位运算

      本文链接:https://www.haomeiwen.com/subject/rzkpbctx.html