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

    九、运算符优先级

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

  • 相关阅读:
    Day13
    Day12
    Day11
    Day10
    Day9
    Day8
    Day7
    mac上使用gitlab拉项目报错Permissions 0644 for ...
    vue-cli3使用svg
    js合并多个array
  • 原文地址:https://www.cnblogs.com/xiaohei001/p/10106076.html
Copyright © 2011-2022 走看看