zoukankan      html  css  js  c++  java
  • 运算符

    运算符:以1+2为例,1和2称为操作数,“+”称为运算符。

    Python语言支持一下类型的运算符:

    1.算数运算符

    2.比较(关系)运算符

    3.赋值运算符

    4.逻辑运算符

    5.位运算符

    6.成员运算符

    7.身份运算符

    8.三目运算符

     一、算数运算符

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

     Python中,有三种除法。

    第一种  / :

    print(10/2)
    
    # 结果为:5.0

    / 除法计算结果是浮点数,即使两个整数恰好是整除,结果也是浮点数。

    第二种 // :

    print(10//3)
    
    # 结果为:3

    // 这种除法只取整数部分,余数抛弃。

    第三种 % :(余数运算),可以得到两个整数相除的余数

    print(10%3)
    
    # 结果为 1

    如果想同时得到商和余数,可以用下边的方法

    print(divmod(10, 2))
    
    # 结果为:(5, 0)

    因为浮点数精度的问题,Python还存在一些计算方面的小问题,例如:

    print(0.1+0.1+0.1-0.3)
    
    # 结果为: 5.551115123125783e-17

    不是应该等于0吗?Python居然......?

    要解决这个问题,可以导入decimal模块:

    from decimal import Decimal
    
    a = Decimal("0.1") + Decimal("0.1") + Decimal("0.1") - Decimal("0.3")
    print(a)

    注意其中提供的数字是用字符串的形式传递给Decimal的

     二、比较运算符

    假设变量a = 10, 变量b = 20

    a = 21
    b = 10
    c = 0
    
    if a == b:
        print("1 - a 等于 b")
    else:
        print("1 - a 不等于 b")
    
    if a != b:
        print("2 - a 不等于 b")
    else:
        print("2 - a 等于 b")
    
    if a < b:
        print("3 - a 不等于 b")
    else:
        print("3 - a 等于 b")
    
    if a < b:
        print("4 - a 小于 b")
    else:
        print("4 - a 大于等于 b")
    
    if a > b:
        print("5 - a 大于 b")
    else:
        print("5 - a 小于等于 b")
    
    
    # 修改变量 a 和 b 的值
    a = 5
    b = 20
    if a <= b:
        print("6 - a 小于等于 b")
    else:
        print("6 - a 大于  b")
    
    if b >= a:
        print("7 - b 大于等于 a")
    else:
        print("7 - b 小于 a")
    View Code
    1 - a 不等于 b
    2 - a 不等于 b
    3 - a 不等于 b
    4 - a 大于等于 b
    5 - a 大于 b
    6 - a 小于等于 b
    7 - b 大于等于 a
    打印结果

    三、赋值运算符

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

    ps:a +=b之类的操作相当于 a = a+b,不是a = b + a ,方向不要整反了。

    a = 21
    b = 10
    c = 0
    
    c = a + b
    print("1: c的值为:", c)
    
    c += a
    print("2: c的值为:", c)
    
    c *= a
    print("3: c的值为:", c)
    
    c /= a
    print("4: c的值为:", c)
    
    c = 2
    c % a
    print("5: c的值为:", c)
    
    c **= a
    print("6: c的值为:", c)
    
    c //= a
    print("7: c的值为:", c)
    View Code
    1: c的值为: 31
    2: c的值为: 52
    3: c的值为: 1092
    4: c的值为: 52.0
    5: c的值为: 2
    6: c的值为: 2097152
    7: c的值为: 99864
    打印结果

     四、位运算符

    按位运算符是把数字看作二进制来进行计算的。

    Python中的按位运算法则如下: 下表中变量 a 为 60,b 为 13,二进制格式如下:

    a = 0011 1100
    
    b = 0000 1101
    
    -----------------
    
    a&b = 0000 1100
    
    a|b = 0011 1101
    
    a^b = 0011 0001
    
    ~a  = 1100 0011

    a = 60  # 60 = 0011 1100
    b = 13  # 13 = 0000 1101
    c = 0
    
    c = a & b  # 12 = 0000 1100
    print("1 - c 的值为:", c)
    
    
    c = a | b   # 61 = 0011 1101
    print("2 - c 的值为:", c)
    
    
    c = a ^ b  # 49 = 0011 0001
    print("3 - c 的值为:", c)
    
    
    c = ~a  # -61 = 1100 0011
    print("4 - c 的值为:", c)
    
    
    c = a << 2  # 240 = 1111 0000
    print("5 - c 的值为:", c)
    
    c = a >> 2  # 15 = 0000 1111
    print("6 - c 的值为:", c)
    View Code
    1 - c 的值为: 12
    2 - c 的值为: 61
    3 - c 的值为: 49
    4 - c 的值为: -61
    5 - c 的值为: 240
    6 - c 的值为: 15
    打印结果

    五、逻辑运算符

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

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

    a = 10
    b = 20
    
    if a and b:
        print("1 - 变量 a 和 b 都为 true")
    else:
        print("1 - 变量 a 和 b 有一个不为 true")
    
    if a or b:
        print("2 - 变量 a 和 b 都为 true,或其中一个变量为 true")
    else:
        print("2 - 变量 a 和 b 都不为 true")
    
    # 修改变量 a 的值
    a = 0
    if a and b:
        print("3 - 变量 a 和 b 都为 true")
    else:
        print("3 - 变量 a 和 b 有一个不为 true")
    
    if a or b:
        print("4 - 变量 a 和 b 都为 true,或其中一个变量为 true")
    else:
        print("4 - 变量 a 和 b 都不为 true")
    
    if not (a and b):
        print("5 - 变量 a 和 b 都为 false,或其中一个变量为 false")
    else:
        print("5 - 变量 a 和 b 都为 true")
    View Code
    1 - 变量 a 和 b 都为 true
    2 - 变量 a 和 b 都为 true,或其中一个变量为 true
    3 - 变量 a 和 b 有一个不为 true
    4 - 变量 a 和 b 都为 true,或其中一个变量为 true
    5 - 变量 a 和 b 都为 false,或其中一个变量为 false
    打印结果

    六、成员运算符

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

    传统的方式,判断某集合里是否有某个元素时,都是使用for循环遍历一次集合,逐一进行对比,最后给出结果。

    lis = [1, 2, 3, 4]
    a = 1
    flag = False
    
    for i in lis:
        if i == a:
            flag = True
            break
    
    if flag:
        print("a在列表中")
    else:
        print("a不在列表中")

    那么使用in判断,是不是简单一点。

    lis = [1, 2, 3, 4]
    a = 1
    
    if a in lis: 
        print("a在列表中")
    else:
        print("a不在类表中")

    七、身份运算符

    也是Python的特色语法(全部都是小写字母)。身份运算符用于比较两个对象的储存单元。

    ps:is与比较运算符中的 == 是有区别的,切记不可混用。

    a = 20
    b = 20
    
    if a is b:
        print("a和b有相同的标识")
    else:
        print("a和b没有相同的标识")
    
    if a is not b:
        print("a和b没有相同的标识")
    else:
        print("a和b有相同的标识")
    
    a = 30
    
    if a is b:
        print("a和b有相同的标识")
    else:
        print("a和b没有相同的标识")
    
    if a is not b:
        print("a和b没有相同的标识")
    else:
        print("a和b有相同的标识")
    View Code
    a和b有相同的标识
    a和b有相同的标识
    a和b没有相同的标识
    a和b没有相同的标识
    打印结果

    is用于判断两个变量的引用是否为同一个对象,而 == 用于判断变量引用的对象的值是否相等。

    id():查看某个变量或对象的内存地址,两个相同内存地址的对象被认为是同一个对象。

    a = [1, 2, 3]
    b = a
    print(id(a))  # 内存地址 2894684568584
    print(id(b))  # 内存地址 2894684568584
    print(a is b)  # 结果为True 引用的是同一个对象
    print(a == b)  # 判断值是否相等
    
    b = a[:]
    print(id(a))  # 内存地址 2729119202312
    print(id(b))  # 内存地址 2729119200904
    print(b is a)  # 结果为Flase,引用的不是同一个对象
    print(b == a)  # 比较的还是值

    八、三目运算符(三元表达式)

    Python中的三元表达式不像其他语言一样的表示方式:判断条件? 为真时的结果 : 为假时的结果。

    在Python的格式为:为真时的结果 if 判断条件 else 为假时的结果

    a = 1
    b = 2
    
    c = True if a == b else False
    print(c)
    
    # 结果为 False

    九、运算符优先级

    表中列出了从最高到最低优先级的所有运算符。优先级高的运算符优先计算或处理,同级别的从左到右的顺序计算(赋值运算符除外,它是按照从右到左的顺序)

  • 相关阅读:
    jquery 序列化form表单
    nginx for windows 安装
    nodejs idea 创建项目 (一)
    spring 配置 shiro rememberMe
    idea 2018 解决 双击shift 弹出 search everywhere 搜索框的方法
    redis 在windows 集群
    spring IOC控制反转和DI依赖注入
    redis 的安装
    shiro 通过jdbc连接数据库
    handlebars的用法
  • 原文地址:https://www.cnblogs.com/xiaohei001/p/10106076.html
Copyright © 2011-2022 走看看