练习代码://download.csdn.net/download/SY1996922/12023817
运算符:
赋值运算符
算术运算符
关系运算符
逻辑运算符
位运算
等号 =
name = 'admin' #将后边的值赋给前边的变量
name1 = name #将后边变量的值赋给前边变量,后边变量的值不变
print(id(name),name)
print(id(name1),name1)
name = 'admin' #将后边的值赋给前边的变量
name1 = name #将后边变量的值赋给前边变量,后边变量的值不变
print(id(name),name)#返回内存地址
print(id(name1),name1)
name1 = 'admin1'
print(id(name1),name1)
这时输出的name1的地址name的地址不再是一个了
运行结果:
+=( 可用于数值运算以及字符串运算) ;
-= *= /=(只支持数字运算);
幂 ** 整除 // 取余%
num = 8
num += 5
print(num)
a = 'ABC'
a += 'ff'
print(a)
运行结果图:
python可自动识别,如果左右是整型,’+‘就是数字加号;如果左右是字符串,’+'就是连接符
c = 8
d = 2
result = c * d
print('乘法:',result)
result = c / d
print('除法:',result)
result = c ** d # d = 2 8*8=64
print('**:',result)
result = c // d
print('//:',result)
e = 3
result = c // e #整除 8/3 取整:2
print('//:',result)
result = c % e #取余
print('%:',result)
运行结果:
注意:这里 // 并不是开方, 8 // 2结果是4
== != > < >= <=
n1 = input('请输入第一个数:')
n2 = input('请输入第二个数:')
result = n1 > n2
print('n1>n2',result)
运行结果:
在这里结果是 true 是因为之前提过的 在这input()输入的是字符串
n1 = int(input('请输入第一个数:'))
n2 = int(input('请输入第二个数:'))
result = n1 > n2
print('n1>n2',result)
n1 = int(input('请输入第一个数:'))
n2 = int(input('请输入第二个数:'))
result = n1 > n2
print('n1 > n2:',result)#相等返回true不相等返回false
result = n1 == n2 #赋值运算符优先级要低于关系运算符
print('n1 = n2:',result)#在这比较的是数字的大小是否相等,相等返回true不相等返回false
m1 = 'hi'
m2 = 'hi'
result = m1 == m2
print('m1 = m2:',result)#在这比较的是字符串是否一致
# == 既可以用于比较整型数字大小是否相等 也可以比较字符串是否一致,相等返回true不相等返回false
result = m1 != m2 #在这比较的是字符串是否不一致,不相等返回true相等返回false
print('m1 != m2',result)
运行结果:
== 既可以用于比较整型数字大小是否相等 也可以比较字符串是否一致
接下来在看一下 is ,
is 也用于比较 返回值false 或 true 用户对象比较(地址)
age = 20
age1 = 20
print(age is age1)
#打印一下 age 和 age1的地址
print(id(age))
print(id(age1))
year = 1996
birth = 1026
print(year is birth)
#打印一下 year 和 birth的地址
print(id(year))
print(id(birth))
nian = 1996
print(year is nian)
#打印一下 year 和 nian的地址
print(id(year))
print(id(nian))
运行结果:
在源文件下运行结果上边展示了,下面看一下在交互式模式下发现year和nian的值是一样的但是地址不一样
源文件(xxx.py)中是将代码一起交给解释器,在执行的过程中开辟的所有内存都是属于这一次的。在源文件中定义一个变量year并赋值1996,之后又定义第一个变量year,这时程序并没有结束,程序开辟内存空间还存在,里边存在1996,所以这时就复用了,year 和nian的地址是一样的。
交互式模式下特点是所见即所得,这也就是说执行一句出现一句的结果。但是看一下 下面这种情况:
year和nian地址不同,但是age和age1地址是相同的
python交互式中 小整数[-5,256]有相应的对象池(提前建好的不会被垃圾回收)所以可被复用 但是大整数没有,所以遇到大整数就会开辟新的内存空间来存放。
and(逻辑与) or(逻辑或) not(逻辑非)
and(与): 左右两侧都为真 结果才为真
true and true---->true其他情况都为false
true and false---->false
false and true---->false
false and false---->false
n1 = 8
n2 = 5
n3 = 4
result = n1 >= (n2 + n3) and n1 > n2
# 8>=9 and 8>5
# false and true ---->false
print(result)
运行结果:
or(或): 左右有一边是真结果就是真
false or false—>false其他情况都是true
true or false—>true
false or true—>true
true or true—>true
name = ''
mail = '[email protected]'
result = name == 'yuan' or mail == '[email protected]'
# false or true
print('or-->',result)
a = 2
b = 5
c = 7
result = (a+b)!=c or c>a
# (2+5)!=7 or 7>2
# false or true
print('or-->',result)
flag = False
result = not flag
print('not-->',result)
二进制:
0 1
8 4 2 1
0b是二进制的一个表示
a = 3
print(bin(a))
b = 12
print(bin(b))
运行结果:
负数以补码的形式存放
-5
5: 0000 0101
反码(取反):1111 1010
补码(加1):1111 1011
一个字节byte→8个二进制位bit
1kb = 1024 byte
1M = 1024 kb
1G = 1024 M
1T = 1024G
0b开头是二进制
0o开头是八进制
0x开头是十六进制 0-9 a-f
八进制转二进制
八进制: 6 4 3 0
二进制:110 100 011 000
十六进制转换
十六进制:9 1 1
十进制:9*16^2+16+1
二进制:1001 0001 0001
位运算符号:
&与 类似and
|或 类似or
~非
^异或
<<左移 m<
print(3 & 2)
'''
0000 0011---->3
& 0000 0010---->2
0000 0010---->2
'''
print(3 | 5)
'''
0000 0011---->3
& 0000 0101---->5
0000 0111---->7
'''
print(~ 5)
#十进制对应的二进制取反 看第一位(符号位,1为负数0为正数)
-5:
0000 0101
取反
1111 1010
现在求得二进制,是负数,是取反后的数的二进制形式
之前说过了负数二进制形式为其补码,所以现在问题就是已知一个数的补码,求其原来的十进制形式
1111 1010 减1
1111 1001 取反
0000 0110---->已知是负数 所以为-6
异或
print(3^5)
'''
3 0000 0011
5 0000 0101
-----------------
0000 0110------>6
'''
左/右移
print(2<<1)
'''
2 0000 0010
左移<-----
0000 0100----4
'''
print(2>>1)
'''
2 0000 0010
右移----->
0000 0001----1
'''
格式:表达式?真:假
python中格式:结果 if 表达式 else 结果
a = 6
b = 5
result = ('真') if a>b else ('假')
print(result)
'''
判断表达式是True 还是False
如果是True 则将 if前边的内容进行运算并赋值给result
如果是False 则将 if后边的内容进行运算并赋值给result
'''
排序
'''
**
~
+ -(符号运算符)
* / // %
+ -(加减)
<< >>
&
^
|
== != > >= < <=
is is not
not
and
or
'''