Python学习笔记——运算符练习

练习代码://download.csdn.net/download/SY1996922/12023817

运算符

运算符:
赋值运算符
算术运算符
关系运算符
逻辑运算符
位运算

1.赋值运算符

等号 =

name = 'admin'  #将后边的值赋给前边的变量
name1 = name #将后边变量的值赋给前边变量,后边变量的值不变
print(id(name),name)
print(id(name1),name1)

id()返回内存地址
Python学习笔记——运算符练习_第1张图片
运行结果:
Python学习笔记——运算符练习_第2张图片
改变name1的值

name = 'admin'  #将后边的值赋给前边的变量
name1 = name #将后边变量的值赋给前边变量,后边变量的值不变
print(id(name),name)#返回内存地址
print(id(name1),name1)
name1 = 'admin1'
print(id(name1),name1)

这时输出的name1的地址name的地址不再是一个了
运行结果:
Python学习笔记——运算符练习_第3张图片

2.算数运算符

+=( 可用于数值运算以及字符串运算) ;
-= *= /=(只支持数字运算);
幂 ** 整除 // 取余%

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)

运行结果:
Python学习笔记——运算符练习_第4张图片
注意:这里 // 并不是开方, 8 // 2结果是4

3.关系运算符

== != > < >= <=

n1 = input('请输入第一个数:')
n2 = input('请输入第二个数:')
result = n1 > n2
print('n1>n2',result)

运行结果:
Python学习笔记——运算符练习_第5张图片
在这里结果是 true 是因为之前提过的 在这input()输入的是字符串

n1 = int(input('请输入第一个数:'))
n2 = int(input('请输入第二个数:'))
result = n1 > n2
print('n1>n2',result)

在这要对键盘输入的进行一个转换 再去比较
运行结果:
Python学习笔记——运算符练习_第6张图片

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)

运行结果:
Python学习笔记——运算符练习_第7张图片
== 既可以用于比较整型数字大小是否相等 也可以比较字符串是否一致

接下来在看一下 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))

运行结果:
Python学习笔记——运算符练习_第8张图片
在源文件下运行结果上边展示了,下面看一下在交互式模式下发现year和nian的值是一样的但是地址不一样
Python学习笔记——运算符练习_第9张图片

源文件(xxx.py)中是将代码一起交给解释器,在执行的过程中开辟的所有内存都是属于这一次的。在源文件中定义一个变量year并赋值1996,之后又定义第一个变量year,这时程序并没有结束,程序开辟内存空间还存在,里边存在1996,所以这时就复用了,year 和nian的地址是一样的。
交互式模式下特点是所见即所得,这也就是说执行一句出现一句的结果。但是看一下 下面这种情况:
Python学习笔记——运算符练习_第10张图片
year和nian地址不同,但是age和age1地址是相同的
python交互式中 小整数[-5,256]有相应的对象池(提前建好的不会被垃圾回收)所以可被复用 但是大整数没有,所以遇到大整数就会开辟新的内存空间来存放。

4.逻辑运算符

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)

运行结果:
Python学习笔记——运算符练习_第11张图片
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)

运行结果:
Python学习笔记——运算符练习_第12张图片
not(非):取反

flag = False
result = not flag
print('not-->',result)

5.位运算

二进制:
0 1
8 4 2 1
0b是二进制的一个表示

a = 3
print(bin(a))
b = 12
print(bin(b))

运行结果:Python学习笔记——运算符练习_第13张图片
负数以补码的形式存放
-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< >>右移 m>>n m//2的n次方(整除)

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学习笔记——运算符练习_第14张图片

6.三目运算符

格式:表达式?真:假
python中格式:结果 if 表达式 else 结果

a = 6
b = 5
result = ('真') if a>b else ('假')
print(result)
'''
判断表达式是True 还是False
如果是True 则将 if前边的内容进行运算并赋值给result
如果是False 则将 if后边的内容进行运算并赋值给result
'''

运行结果:
Python学习笔记——运算符练习_第15张图片

7.运算符优先级:

排序

'''
  **
   ~
   + -(符号运算符)
   * / // %
   + -(加减)
   <<  >>
   &
   ^
   |
   == != > >= < <=
   is  is not
   not
   and 
   or
 '''
   

你可能感兴趣的:(Python学习笔记——运算符练习)