python笔记

python_operator 运算符

2020,06,24 404 0
operator  运算符:
运算符:
赋值运算符
算数运算符
关系运算符
逻辑运算符
比较运算符

#赋值运算符:
#1.=
name='admin'
#将'admin'这个值赋值给 变量name
name1=name
print(id(name))
print(id(name1))
#id()获取内存地址  python 把变量值放入内存空间 使他可以复用 可以减少空间使用
#扩展后的赋值符号 +=  -=  *=  /=
num = 8 
num += 5
#num=num+5  + 是数学加号
print (num )
a='abc'
a += 'ff'   #等价于:a=a+"ff" 此时'+'就是链接符 包含两个动作:1.连接  2.连接后的结果
print(a)
#-=  *=  /=  只支持数值的运算
#扩展的算数运算符: **  //
a=8
b=2
result =a*b
print ('乘法运算',result)
result =a/b
print ('除法运算',result)

b=2
result=a ** b  #b=2  8*8=64  b=3 8*8*8 =512  b=几  就乘几个a  a的b次方
print('乘法运算',result)

b=2
result= a//b  #整除  a/b  取整 去掉余数
print('除法运算',result)
result = a%b #取余数  去掉整数
print ('取余数运算:',result)


#==  逻辑判断 输出false  true
print(name == name1)


#比较运算符
n1=int (input ('请输入第一个数:'))
n2=int (input ('请输入第二个数:'))
#判断n1 和 n2
result n1 > n2  #结果 false true
# 8>12 ---->false
#is  用户对象的比较 地址的比较
age= 20
age1=20
print (age is age1)  #返回 true


#在交互式模式中运行:
'''
name=1
id(name)
name1=1
id(name1)
name is name1  
返回为:false

name=1
name1=1
id(name)
id(name1)
name is name1  
返回为true
'''
#面试要考 为什么不一样?
#因为 python 为了优化速度 使用了小整数对象池,避免为整数频繁申请和销毁内存空间.
#python对小整数的定义是[-5,256] 这些整数对象是提前建立好的,不会被垃圾回收,在体格python的程序中
#无论这个整数处于legb中的哪个位置,所有位于这个范围内的整数使用都是同一个对象.同理,单个字母也是这样的
#2.intern机制处理空格一个单词的复用机会大,所以创建一次,右击空格创建多次,但是字串长度大于20,就不是创建一次了.

#执行源文件的话 每次运行是所有代码都加载到内存中,属于一个整体,所以这个时候会有一个大整数对象池,即处于一个代码块的大整数是同一个对象,我们只需要记住这是用优化机制,治愈范围到底多大无需细究.

#and  or  not 
#and 逻辑与
#or  逻辑或
#not 逻辑非
#逻辑运算符的运算结果也是返回true false
'''
true and true  --->true  
true and false --->false
false and false ---> false
'''
# or 或 只要有一边为true 则结果为true
#


#位运算
#二进制: 0 1
#8进制 0o 16进制 0x
'''
8 4 2 1
'''
a=3
'''
2进制转10进制
2进制:1010  
1  0  1  0
2**3 2**2  2**1 2**0	 2的位数次方
8     4     2    1       
1*8+0*4+1*2+0*1 =10    #位值*2的位数次方 的和

'''
print(bin(a))  #0b11  bin() 取二进制
b=0b101101
#二进制表示 0b后面加二进制
c=-5
print(bin(c))



'''
-8
步骤:
1.先求正8
0000 1000
2.取反
111 0111
3.最后位数+1
1111 0111
		1
----------
1111 1000
'''


'''
 n= 0o6430  #0o是八进制的符号
 转十进制
 6   4   3   0
8**3 8**2 8**1 8**0
6*512+4*64+3*8 +1=



#8进制转2进制  算出每个位的二进制 拼接下就可以了
6     4      3     0 
110   100   011    000
110100011000 


#16进制
n=0xae93


'''


'''
&  与
|	或
~  非  取反
^  异或 上下两个数对其 相同是0不同是1
<<左移  后面补0   n << m  m是位移多少位  n乘2的m次方
>右移   前面加0   n>>m    m是位移多少位  n除以2的N次方后取整
'''
print(3&2)


#三目运算符
#python格式 :真 if [表达式] else 假` 
#identify 特征

发表评论