Python第三节(运算符与基础数据类型)

运算符

算术元运算符

以下假设变量: a=10,b=20:

运算符 描述 实例
+ 加-两个对象相加 a+b输出结果30
- 减-得到负数或是一个数减去另一个数 a-b输出结果-10
* 乘-两个数相乘或是返回一个被重复若干次的字符串 a*b输出结果200
/ 除-x除以y b/a输出结果2
% 取模-返回除法的余数 b%a输出结果0
** 幂-返回x的y次幂 a**b为10的20次方,输出结果100000000000000000000
// 取整除-返回商的整数部分 9//2输出结果4,9.0/2.0输出结果4.0
'''
算术元运算符
'''
print(3*3)
print(3**3)
print(10/3) # 二进制的有穷性
print(9/3)   # float
print(10//3)  # 3.33333->3
print(10.0//3.0)
print(-10//3)   # .3333->-4
print(10%3)     # 1   10-9=1
print(-10%3)    # -10//3  -4  -10-(-12)=2
# ipt = input('请输入')
# print(int(ipt)%2 == 0)      # %取余

x = 10
y = 3
divmod(x,y)  # (x//y,x%y)-->(商,余数)
print(divmod(x,y))

print(0.1+0.1+0.1-0.3)  # 科学计算法 转为二进制
from decimal import Decimal
print(Decimal('0.1')+Decimal('0.1')+Decimal('0.1')-Decimal('0.3'))

注意:
1.为什么10/3为3.3333333333333335
知乎解答
2.做除法返回的是浮点数,并且都是向下取整
3.//为整除,所以返回的是整数部分,并不是整数类型。当除法与被除数有为浮点数的时候,返回的是整数部分的浮点数
4.取余也是先遵循向下取整的规则,divmod(x//y,x%y)–>divmod(商,余数)
理解:负数的取余运算可先合理化运算符号后算整除,再利用整除的结果得到取余,加上安排的符号得到结果
5.python中浮点数精读有些问题,比如常见的0.1+0.1+0.1-0.3输出的确是科学计算值。其中也是因为转为机器码二进制的原因。
解决:

from decimal import Decimal
Decimal('0.1')+Decimal('0.1')+Decimal('0.1')-Decimal('0.3')

比较运算符

运算符 描述 实例
== 等于-比较对象是否相等 (a ==b)返回True
!= 不等于 -比较两个对象是否不相等 (a!=b)返回True
<> 不等于-比较两个对象是否不相等 (a <>b)返回True,这个运算符类似!=。
> 大于-返回x是否大于y (a>b)返回True
< 小于-返回x是否小于y,所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意这些变量名的大写 (a<b)返回True
>= 大于等于-返回x是否大于等于y (a>=b)返回True
<= 小于等于-返回x是否小于等于y (a<=b)返回True
'''
比较运算符
1.通常结合条件判断使用
2.返回值为bool
'''
print(True == 1)
print(False == 0)

print(2.0 == 2)
print('2' == 2)    # int与str不能比较
a = 1
b = 2
print(a != b)
# print(a <> b)    #python3不支持
print(2.5 > 2, '吼')
print('abc' < 'xyz')      # 字符串与字符串间的比较,ASCII值,对应位相比
# print(3 < 'a')     # 报错
print(3 > 2 > 1)  # 3>2 and 2>1
print((3 > 2) > 1)    # True>1?

赋值运算符

运算符 描述 实例
= 简单的赋值运算符 c = a + b将a + b的运算结果赋值为c
+= 加法赋值运算符 c+=a等效于c = c +a
-= 减法赋值运算符 c -=a等效于 c = c -a
*= 乘法赋值运算符 c*=a等效于 c = c*a
/= 除法赋值运算符 c/=a等效于c=c/a
%= 取模赋值运算符 c%= a等效于c = c%a
**= 幂赋值运算符 c**=a等效于c= c**a
//= 取整除赋值运算符 c//=a等效于c = c // a
a = 1
# a = a + 1
# print(a)
# a++ # python不支持这种写法
# print(a)

# a += 1
# print(a)
a /= 1
a *= 1
print(a)

逻辑运算符

Python语言支持逻辑运算符,但是没有其它语言中的&&和||语法。
取而代之的是and or not(全部小写)

运算符 逻辑表达式 描述 实例
and x and y 布尔“与”,如果x为False,x and y返回False,否则它返回y的计算值。 (a and b)返回20
or x or y 布尔“或”,如果x是非0,它返回x的值,否则它返回y的计算值。 (a or b)返回 10
not not x 布尔“非” ,如果x为True,返回False。如果x为False,它返回True。 not(a and b)返回False
'''
逻辑运算符
'''
a = True
b = True
c = False
d = False
print(a and b)  # True
print(a and c)    # False
print(a or c)
print(c or d)
print(10 and 20)    # 表达式的bool值
print(False and True)    # 懒惰机制
print(10 or 20)  # 懒惰机制

ipt = input("请输入y/n:")
# if ipt == 'y' or 'n':
#     print("yes")
# else:
#     print("no")

# if len(id_card) == 18 and len(tell) == 11:

位运算符

运算符 描述 实例
& 按位与运算符: 参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a&b)输出结果12 ,二进制解释:0000 1100
| 按位或运算符:只要对应的两个二进位有一个为1时,结果位就为1 (a|b)输出结果61,二进制解释:0011 1101
^ 按位异或运算符:当两对应的二进位相异时,结果位就为1。 (a^b)输出结果49
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x类似于-x-1 (~a)输出结果-61,在一个有符号二进制数的补码形式
<< 左移动运算符:运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。 a <<2输出结果240
>> 右移动运算符:把“>>”左边的运算数的各二进位全部右移若干位,“>>” 右边的数指定移动的位数 a >> 2输出结果15

按位运算符是把数字看作二进制来进行计算的。
Python中的按位运算法则如下:下表中变量a为60,b为13,二进制格式如下
a = 0011 1100
b = 0000 1101
————————
a&b = 0000 1100
a|b = 0011 1100
a^b = 0011 0001
~a = 1100 0011

'''
按位运算符
'''
a = 60
b = 13
print(a & b, a | b, a ^ b, ~a)
print(bin(a ^ b))   # 0b110001

成员运算符

in与not in是Python独有的运算符(全部是小写字母),用于判断对象是否某个集合的元素之一,非常好用,并且运行速度很快。返回的结果是布尔值类型的True或者False

运算符 描述 实例
in 如果在指定的序列中找到值返回True,否则返回False 。 x在y序列中返回True。
not in 如果在指定的序列中没有找到值返回True,否则返回False。 x不在y序列中,如果x不再y序列中返回True。
'''
成员运算符
'''
a = 2
b = [1,2,3,4,5]
if a in b:
    print("a在")
else:
    print("a不在")

身份运算符

运算符 描述 实例
is is是判断两个标识符是不是引用自一个对象 x is y,类似id(x)==id(y),如果引用的是同一个对象则返回True,否则返回False
is not is not是判断两个标识符是不是引用自不同对象 x is not y,类似id(a)!=id(b),如果引用的不是同一个对象则返回结果True,否则返回False。

注意is与比较运算符“==”的区别,两者有根本上的区别,切记不可混用:is用于判断两个变量的引用是否为同一个对象,而 ==用于判断变量引用的对象的值是否相等。

'''
身份运算符
id()-->输出内存地址
==数值
'''
# a = [1, 2, 3]
# b = [1, 2, 3]
# print(id(a))
# print(id(b))
# print(a is b)  # False
# print(a == b)   # True
a = 2
b = 2.0
print(a is b, a == b)

三目运算符

python中的三目运算符不像其他语言一般的表示方法:判定条件?为真时的结果:为假时的结果。
在python中的格式:为真时的结果if判定条件else为假时的结果,例如:

'''
三目运算符
'''
a = 1
b = 2
# if a+b >3:
#     print(a+b)
# else:
#     print(b-a)
print(a+b if a+b>3 else b-a)

理解:如果if条件为真,则输出前面的结果,如果if条件为假,则输出后面的结果。

运算优先级

在这里插入图片描述

数据类型

1.更好分配管理内存
2.方便统一管理
3.更贴切人类分类管理习惯
在这里插入图片描述在这里插入图片描述

数字

数字类型是不可变类型。所谓的不可变类型,指的是类型的值一旦有不同了,那么它就是一个全新的对象。数字1和2分别代表两个不同的对象,对变量重新赋值一个数字类型,会新建一个数字对象。
还是要强调一下Python的变量和数据类型的关系,变量只是对某个对象的引用或者说代号、名字、调用等等,变量本身没有数据类型的概念。只有1,[1,2],"hello"这一类对象才具有数据类型的概念。
Python支持三种不同的数字类型,整数、浮点数和复数。
在这里插入图片描述
整数(int)
通常被称为整型,数值为正或者负,不带小数点。
通常用十进制表示数字,但有时我们还会用八进制或十六进制来表示:
十六进制用0x前缀和0-9,a-f表示,例如:0xff00
八进制用0o前缀和0-7表示,例如0o45

python的整数长度为32位,并且通常是连续分配内存空间的。
十六进制八进制
小整数对象池
python初始化的时候会自动建立一个小整数对象池,方便我们调用,避免后期重复生成。这是一个包含262个指向整数对象的指针数组,范围是-5到256.比如整数10,即使我们在程序里没有创建它,其实在Python后台已经创建了。
作用:
这些小型整数经常用到,如果使用一个创建一个则会降低python运行速度。所以python语言就创建小整数对象池,当需要用到小整数时,直接拿出来使用即可。

'''
整数缓冲区
以下输出结果每次重新运行结果不一样
'''
a = 1000000
print(id(a))   # 983198024656

del a

b = 1000000     # 983198024656
print(id(b))

浮点数(float)
浮点数也就是小数,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,一般用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8等等
复数(complex)
复数由实数部分和虚数部分构成,可以用a+bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点。

a = 5.2
# float-->int
print(int(a))     # 向下取整
print(int('0b100', base=0))
b = 5
print(float(b))
print(complex(1,2))  # 复数

import math
print(math.ceil(4.1))   # 向上取整
print(math.floor(4.5))   # 向下取整
print(math.pow(2,3))    # 8

数学计算:
在这里插入图片描述
内置方法

'''
内置方法
'''
print(round(4.1))   # 四舍五入
print(round(4.5))
'''
四舍六入五成偶
'''
print(round(3.5))   #  4
print(round(4.6))

print(abs(-10))
发布了3 篇原创文章 · 获赞 0 · 访问量 119
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览