python运算符


python中有8种运算符:

  • 算术运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符
  • 成员运算符
  • 身份运算符
  • 三目运算符

算术运算符

运算符作用
+相加
-相减
*相乘
/相除
%取模运算
**幂运算
//整除(返回商的整数部分)
注意:
  • 整除是取除运算后,比自身小的整数。
  • 取模运算是先整除,然后用整除的值乘除数,然后用被除数减去商得到结果。
  • 在计算机中,做计算需要转为2进制,计算完之后又将结果转为十进制呈现,所以会产生精准误差。
  • 解决精准问题,可以采用内置模块decimal。
    示例:
from decimal import Decimal
Decimal('5.4')-Decimal('3')#==>2.4

赋值运算符

运算符作用示例
=赋值a=b;c=d+e
+=加法赋值a+=1(等价于a=a+1)
-=减法赋值a-=1(等价于a=a-1)
*=乘法赋值a=2(等价于a=a2)
/=除法赋值a/=2(等价于a=a/2)
%=取模赋值a+=2(等价于a=a%2)
**=幂运算赋值a=2(等价于a=a2)
//=整除赋值a//=2(等价于a=a//2)
注意:

python中不支持a++,a--这种自运算写法。

比较运算符

运算符作用
==等于
!=不等于
>大于
<小于
>=大于等于
<=小于等于
注意
  • int 不能直接与str比较
  • python3中不再支持<>号,在python2中该符号表示不等于。
  • ==与!=符号不能分开写。即不能写成= =或是! =
  • str与str之间比较的是ASCII码,并且逐个对比。
  • 连续的比较,如:a>b>c可以拆解为a>b and b>c

逻辑运算符

运算符表达式描述
anda and b逻辑与,a与b都为True则返回True
ora or b逻辑或,a或b其中一个为True则返回True
notnot a逻辑非,如果a为True则,返回False,反之则反
懒惰机制
    • 当运用逻辑或(or)的时候,如果第一个参数为True,则执行到第一个参数就结束了,不会再执行后面的参数。
    • 当运用逻辑与(and)的时候,如果第一个参数为False,则执行到第一个参数就结束了,不会再执行后面的参数。
    示例:
    print(10 and 20)#==>返回20
    print(10 or 20)#==>返回10

    位运算符

    运算符描述
    &按位与,两者都为1才为1,否则为0
    竖线按位或,只有一个为1则为1,否则为0
    ^按位异或,两者相等则为0,否则为0

    成员运算符

    运算符描述
    in判断元素是否在一个序列中,是则返回True
    not in判断元素是否在一个序列中,否则返回True

    身份运算符

    运算符描述
    is判断两个对象的内存地址是否一致,是则返回True
    not is判断两个对象的内存地址是否一致,否则返回True

    三目运算符

    运算符True_statements if expression else False_statements
    描述如果expresssion为ture则返回True_statements,否者返回False_statements
    示例:
    b=1
    print(a=1 if b>4 else a=2)#==>输出结果为a=2

    运算符的优先级

    运算符描述
    **幂运算符(最高优先级)
    * / % //乘 除 取模 整除
    + -加 减
    < > <= <=比较运算符
    == !=比较运算符
    = %= /= //= -= += = *=赋值运算符
    is not is身份运算符
    in not in成员运算符
    not or and逻辑运算符
    注意:
    • 列表中的运算从上到下,优先级从高到低。
    • 同级别的运算符按从左往右的顺序计算。
    • 赋值运算符是从右往左运算。
    • 有小括号的话,小括号内的优先。

    问题:

    问题1:

    判断"amy"是否在["bob","tony","lisa","steven"]里面,如果在则输出“amy 在逻辑大家庭”,否则输出“amy 不在……好难过”

    回答:
    写法一:

    logic=["bob","tony","lisa","steven"]
    if "amy" in logic:
        print("amy 在逻辑大家庭")
    else:
        print("amy 不在…好难过")




    写法二:

    logic=["bob","tony","lisa","steven"]
    print("amy 在逻辑大家庭" if "amy" in logic else "amy 不在…好难过")




    问题2:

    'ax'<'xa'为True还是为False?为什么呢?

    回答:
    为True。因为这两者比较的时候是按着字符的个数用ascII码逐一比较的,在这里a的ascII比x的ascII码要小,所以返回为True。



    问题3:

    一下程序如果输入666执行那一条语句?为什么?

    temp = input("请输入:")
    if temp == 'Yes' or 'yes':
        print("if执行了")
    else:
        print("else执行了")


    回答:
    会执行print("if执行了")。因为上面的==是比较运算符,or是逻辑运算符。比较运算符的优先级比逻辑运算符高。所以上面的if条件首先会执行temp == 'Yes',返回值为False ,接着会执行False or 'yes'。'yes'的返回值为True,所以返回值为True。所以会执行print("if执行了")



    问题4:

    is与==的区别?

    回答:
    is判断的是两个对象的内存地址是否一致。==判断的是两个对象的值是否一致。



    问题5:

    用户输入a,b
    当a与b都不为0时则输出a与b的商;否则输出a与b的乘积。

    回答:
    写法一:

    while 1:
        a=input("请输入一个数值:")
        b=input("请输入一个数值:")
        if str.isdigit(a) and str.isdigit(b):
            if int(a) and int(b):
                print(int(a)/int(b))
            else:
                print(0)
        else:
            continue





    写法二:

    while 1:
        a=input("请输入一个数值:")
        b=input("请输入一个数值:")
        try:
            if int(a) and int(b):
                print(int(a) / int(b))
            else:
                print(0)
        except ValueError:
            continue

    写法三:

    while 1:
        a=input("请输入一个数值:")
        b=input("请输入一个数值:")
        try:
            print(int(a) / int(b) if int(a) and int(b) else 0)
        except ValueError:
            continue
    问题6:

    基于问题5,采用三目运算符输出a,b中较大的数。

    回答:

    while 1:
        a=input("请输入一个数值:")
        b=input("请输入一个数值:")
        if str.isdigit(a) and str.isdigit(b):
            print(a) if int(a) > int(b) else print(b)
            #或者这样写:
            #print(a if int(a) > int(b) else b)
        else:
            continue




    声明:一代明君的小屋|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

    转载:转载请注明原文链接 - python运算符


    欢迎来到我的小屋