2019-11-06 变量、运算符、位运算符

1.温习

注释 :# 开头

print("世界你好!")

"""
print("世界你好!")
"""

print("输出")
value = input("wwwww")

一、变量

1.什么是变量?
变量就是用来申请空间保存数据。(变量就是用来存数据)
"""
1)声明变量的语法
变量名 = 值
2)说明
变量名 - 程序员自己命名的;
         要求:(a)是标识符;(b)不能是关键字
         规范:(a)见名知义;(b)满足PEP8命名规范(所有字母都小写,多个单词用下划线隔开);(c)不能使用系统提供的函数名、类名、库名等来给变量命名。

=      -  赋值符号,将右边的数据赋给左边的变量(动词)
值     -  任何有结果的表达式;例如:数据、已经申明过的变量、运算符表达式等。
"""
students_name = "小明"
age = 50 
print("我的年龄:", age)
if age < 18:
    print("未成年人")
使用系统函数报错:语法错误
True = 100

报错如下:

image.png

2.变量

2.1 使用变量就是使用变量中的值;变量中的值可以修改
b = 89
b2 = 0x1101
b3 = "世界你好"
b4 = True
b5 = age
print(b5)
b6 = 10 + 2 + age
print(b6)
age = 19
print(age)      
2.2 同时申明多个变量
2.2.1 同时声明多个变量赋相同的值

c1 = c2 = c3 = 10
print(c1, c2, c3)

输出:

10 10 10
2.2.2 同事声明多个变量赋不同的值

x, y = 10, 20
print(x, y)

输出:

10  20 
4.python声明变量的原理

先开辟空间存储数据(存储的这个数据需要多大的内存就开辟多少内存空间),然后再将变量和这个数据对应的内存空间关联在一起
变量三要素:
a = 10
值 - 给变量赋值的数据(10)
类型 - 给变量赋值的数据的类型(int) ~type (变量)
类型 - 给变量赋值的数据在内存中的地址,也是变量中真正存储的东西(0xff)

a = 10
print(a, type(a), id(a))
a = 100
print(a, type(a), id(a))
a = "abc"
print(a, type(a), id(a))

二、运算符

python支持的运算符:数学运算符、比较运算符、逻辑运算符、赋值运算;位运算
1.数学运算符:+, -, *, /, % ,//, **
1.1 ) +,-,*,/ 和小学数学中的加(+)减(-)乘(×)除(➗)的功能一致。
print(1 + 1)
print(20 - 10)
print(20 * 10)
print(6 / 3)
# 1.2)  %    - 求余数(取余/取模)
print(5 % 2)
print(10 % 4)
应用1:判断整数的奇偶性 - 判断这个数对2取余的结果是否为0
print(20 % 2)
print(23 % 2)
应用2:是否整除 - 判断余数是否为0
应用3:取低位数,例如:获取一个整数个位数 - 数字 % 10
num = 123
print(num % 10)  # 3
print(num % 100)  # 23
1.3) // - 整除(商只取整数部分)
主意:负数整除除不尽的时候乡下取整
print(5 // 2)  # 2
print(3.9 // 3)  # 1.0
应用:取高位
print(num // 100)  # 1
1.4) ** - 幂运算: x ** y -- 求x的y次方
print(2 ** 3)
print(16 ** (1 / 2))
print(8 ** (1 / 3))
result = 3 ** 4
print(result)

print("============= 比较运算符 ============")

2.比较运算符:>、<、==、!=、>=、<=

注意:所有的比较运算符的结算都是布尔值

2.1)>、<、<=,>= 和数学中的>、<、≥、≤ 是一样的。
print(10 > 20)  # Flase
print(10 < 20)  # True
print(30 >= 20)  # True
print(30 >= 30)  # True
2.2) == - 判断两个值知否相等,!= - 判断两个值是否不相等
print(10 == 10)  # True
print(10 != 10)  # Flase
2.3 ) python可以像数学一样用比较运算符连写的方式标是范围
age = 30
print(18 < age < 28)

print("============= 逻辑运算符 ============")

3 .逻辑运算符:and(与)、or(或)、 not(非)
逻辑运算符的运算对象和结果一般都是布尔值
3.1)and

运算规则:;两个都是True结果才是True,只要有一个是False结果就是Fasle
Treu and True - > True
True and False - > False
False and Treu - > False
False and False - > False
使用场景:需要多个条件同时满足的时候,就用and';相当于生活中的并且。

gpa = 4.5
score = 90
获取奖学金的条件:绩点不低于4并且操评分高于95
print(
    "是否能狗获取奖学金:", gpa >= 4 and
                  score > 95
)
# 练习:判断一个数是否能够被3和7整除

num = 22
print(
    "是否能够同时被3和7整除:", num % 3 == 0 and num % 7 == 0
)
print("是否能够同时被3和7整除:", num % 21 == 0)
3.2)or

运算规则;两个都是False结果才是False,只要有一个是True结果都是True
True or True - > True
True or False - > True
False or True - > True
False or False - > False
使用场景:需要多个条件中有一个条件满足就行,就是用or;相当于生活中的or

gpa = 4.5
score = 90
# 取奖学金的条件:绩点不低于4并且操评分高于95
print("是否获取奖学金:", gpa >= 4 and score > 95)
3.3 )not

运算规则:True变False,False变成True
not True - > False
not False - > True
使用场景:对某一个条件进行否定

num = 34
# 一个数不能同事被3和7整除的条件
print("不用同时被3和7整除:", not (num % 3 == 0 and num % 7 == 0))
3.4)短路操作

and的短路操作:条件1 and 条件2 - > and前面的那个条件如果结果是False,那么后面的条件语句不会执行,结果直接是False
or 的短路操作:条件1 or 条件2 - > or前面的那个条件如果结果是True,那么后面的条件语句不会执行,结果直接是True.


def func1():
    print("函数被执行")
    return True


False and func1()
True or func1()
4. 赋值运算符: =, +=, -+, *=, /=, //=, **=

所有的赋值运算符的左边必须是变量:组合赋值运算符的左边出了是变量,这个变量还必须是已经声明过.

4.1)变量 = 数据 -> 将右边的值赋值给左边的变量
a = 10
b = 10 * 2
c = a + b
a = 100
4.2) 组合赋值运算符
变量 += 值 -> 变量 = 变量 + 值
aa += 100 -> NameError: name 'aa' is not defined
bb = 100
bb += 10  # (bb= bb+10;bb = 100+10 ;bb=110)
print(bb)

bb -= 20  # bb = bb -20;bb = 110- 20 ;bb=90
print(bb)

bb *= 4 / 2  # bb *= 2.0 ; bb = bb * 2.0; bb = 90 * 2.0; bb = 180.0
print(bb)

bb %= 2  # bb = bb % 2 ; bb = 180 % 2 ; bb =0
print(bb)
LS = 5
LS **= 5
print(LS)
5.运算顺序

运算符优先级:
数学运算符> 比较运算符 > 逻辑运算符 > 赋值运算符(最低)
数学运算符的优先级和数学一样: ** > * ,/,//,% > + , -
如果有括号,先算括号里面的

三、位运算符

所有的位运算都是针对熟悉的补码进行操作的; 特点 :快(效率高)
位运算: &(与) , |(或) , ~(取反) , ^(异或) , <<(左移) , >>(右移)
1. &

运算规则:补码:每一位上的数,都是1结果就是1,如果有一个0,结果就是0
1110 & 0110 = 0110
应用:高效判断数字的奇偶性 - 让数字和1进行 & 运算,判断结果是0(偶数)还是1(奇数)

a = 3 & 2
print(a)

3的补码:00000011
2的补码:00000010
00000011 & 00000010 = 00000010 = 2

b = -7 & 3
print(b)

-7的补码:10000111(原码) 11111001(补码)
3的补码: 00000011
111111000 & 00000011 = 1

print(
    7 & 1, 8 & 1, 9 & 1
)
print(8 & 1, 100 & 1, 124 & 1)
2. |

运算规则:每一位上的数如果都是0结果都是0,只有1结果是1
1110 | 0111 -> 1111

print(3 | 2)
print(-7 | 3) # 11111001(补码) | 00000011

-7的补码:11111001(补码)
3的补码: 00000011
11111011(补) -> 11111010 -> 10000101 == -5

3. ~ 取反

运算规则:将每一位上的0变成1,1变成0
~ 1101 -> 0010
print(~ -7)

4 .^ 异或

运算规则:每一位上的数字相同为0,不同为1
11011 ^ 10010 -> 01001

5. << 左移

数字 << N -> 指定的数字的补码整体向左移动 N ; 计算数字 * 2 ** N

"""

print(2 << 1)  # 2 * 2**1 == 4
print(3 << 2)  # 3* 2**2 == 12
6. >> 右移

"""
数字 >> N -> 计算:数字 //2 ** N
"""

print(4 >> 1)  # 2
print(9 >> 2)  # 2
print(-9 >> 1)  # -5
print(- 9 // 2)  # -5

你可能感兴趣的:(2019-11-06 变量、运算符、位运算符)