Loading

运算符


返回 我的技术栈(Technology Stack)



赋值运算


# 为变量st赋值为Python
st = "Python"
# 为变量pi赋值为3.14
pi = 3.14
# 为变量visited赋值为True
visited  = True
print(st) # Python
print(pi) # 3.14
print(visited)  # True

# 将变量st的值赋给st2
st2 = st
print(st2) # Python

a = b = c = 20
print(a) # 20
print(b) # 20
print(c) # 20

d1 = 12.34
# 将表达式的值赋给d2
d2 = d1 + 5
# 输出d2的值
print("d2的值为:%g" % d2 ) # d2的值为:17.34

算术运算符


a = 5.2
b = 3.1
the_sum = a + b
print("the_sum的值为:", the_sum) # sum的值为8.3
print("the_sum的值为:type ", type(the_sum))  # the_sum的值为:type  <class 'float'>

s1 = 'Hello, '
s2 = 'Charlie'
# 使用+连接两个字符串
print(s1 + s2)

c = 5.2
d = 3.1
sub = c - d
print("sub的值为:", sub) # sub的值为2.1
print("sub的值为:type ", type(sub)) # sub的值为:type  <class 'float'>

e = 5.2
f = 3.1
multiply = e * f
print("multiply的值为:", multiply) # multiply的值为16.12
print("multiply的值为:type ", type(multiply)) # multiply的值为:type  <class 'float'>

s3 = 'crazyit '
# 使用*将5个字符串连接起来
print(s3 * 5)

print("19/4的结果是:", 19/4) # 19/4的结果是: 4.75
print("19//4的结果是:", 19//4) # 19//4的结果是: 4


aa = 5.2
bb = 3.1
print("aa/bb的值是:", aa / bb) # aa / bb的值将是1.67741935483871
print("aa//bb的值是:", aa // bb) # aa // bb值将是1.0  【整除\\  取整数部分,小数部分舍去】 0为除数的时候报错ZeroDivisionError!!!!

print('5的2次方:', 5 ** 2) # 25
print('4的3次方:', 4 ** 3) # 64
print('4的开平方:', 4 ** 0.5) # 2.0
print('27的开3次方:', 27 ** (1 / 3)) # 3.0

求余运算%:Python不要求求余运算的两个操作数都是整数,其完全支持浮点数的求余运算

print("5%3的值为:", 5 % 3)  # 输出2
print("5.2%3.1的值为:", 5.2 % 3.1)  # 输出2.1
print("-5.2%-3.1的值为:", -5.2 % -3.1)  # 输出-2.1
print("5.2%-2.9的值为:", 5.2 % -2.9)  # 输出-0.6
print("5.2%-1.5的值为:", 5.2 % -1.5)  # 输出-0.8
print("-5.2%1.5的值为:", -5.2 % 1.5)  # 输出0.8
# print("5对0.0求余的结果是:", 5 % 0.0) # 导致错误

输出:
5%3的值为: 2
5.2%3.1的值为: 2.1
-5.2%-3.1的值为: -2.1
5.2%-2.9的值为: -0.5999999999999996
5.2%-1.5的值为: -0.7999999999999998
-5.2%1.5的值为: 0.7999999999999998

答疑:
【1】为什么    5.2%-2.9   的结果是-0.6呢?
         因为Python的求余运算的逻辑是用    被除数 - 除数的N倍 这里N为-2,因此得到的结果是-0.6  
        【也可以解释为什么print("-5.2%-3.1的值为:", -5.2 % -3.1)  # 输出-2.1】

【2】为什么实际输出是  -0.5999999999999996 ?
         因为,这是由于浮点数的存储机制导致的。计算机底层的浮点数的存储机制并不是精确保存每一个浮点数的值,浮点数在Python中可能产生精度丢失。
         比如这里正常应该是-0.6,但是实际输出是一个非常接近-0.6的值

print("5的2此次方", 5 ** 2)
print("4的开2次方", 4 ** 0.5)
print("27的开3次方", 27 ** (1/3))

输出:
5的2此次方 25
4的开2次方 2.0
27的开3次方 3.0

变量引用






索引运算符


a b c d e f g h i j k  l  m  n
0 1 2 3 4 5 6 7 8 9 10 11 12 13

a = 'abcdefghijklmn'
# 获取索引2到索引8的子串,步长为3
print(a[2:8:3]) # 输出cf
# 获取索引2到索引8的子串,步长为2
print(a[2:8:2]) # 输出ceg

比较运算符与bool类型


is     与    is not    判断两个变量索引用的对象是否相同【==只比较两个变量的值,但是is 要求两个变量是否引用同一个对象】

# 输出True
print("5是否大于 4:", 5 > 4)
# 输出False
print("3的4次方是否大于等于90.0:", 3 ** 4 >= 90)
# 输出True
print("20是否大于等于20.0:", 20 >= 20.0)
# 输出True
print("5和5.0是否相等:", 5 == 5.0)
print(5 is 5.0) # False
print(type(5)) # <class 'int'>
print(type(5.0)) # <class 'float'>
# 输出False
print("True和False是否相等:", True == False)


print("1和True是否相等:", 1 == True) # 输出True
print("0和False是否相等:", 0 == False) # 输出True
print(True + False) # 输出1
print(False - True)  # 输出-1

import time
# 获取当前时间
a = time.gmtime()
b =  time.gmtime()
print(a == b) # a和b两个时间相等,输出True
print(a is b) # a和b不是同一个对象【每次调用gmtime都返回不同的对象】,输出False

id()函数用来判断变量所引用的对象的内存地址,如果两个对象所在的内存地址相同,则说明这两个对象其实是同一个对象
print(id(a)) # 1838804743712
print(id(b)) # 1838806340472

aa = 19
bb = aa
print(id(aa)) # 140721797394752
print(id(bb)) # 140721797394752
aa = 100
print(id(aa)) # 140721797397344
print(id(bb)) # 140721797394752

逻辑运算符


Python的逻辑运算符有三个:

and:与,前后两个操作数都是true才会返回true,否则返回false

or:   或,只要两个操作数中有一个是true,就可以返回true,否则返回false

not:非,只要一个操作数,如果操作数为true,则返回false;如果操作数为false,则返回true

# 直接对False求非运算,将返回True
print(not False)
# 5>3返回True,20.0大于10,因此结果返回True
print(5 > 3 and 20.0 > 10)
# 4>=5返回False,"c">"a"返回True。求或后返回True
print(4 >= 5 or "c" > "a")
【错误写法】
bookName = "疯狂Python"
price = 79
version = "正式版"
if bookName.endswith('Python') and price < 50 or version == "正式版" :
   print("打算购买这本Python图书")
else:
    print("不购买!")

【正确写法】
bookName = "疯狂Python"
price = 79
version = "正式版"
if bookName.endswith('Python') and (price < 50 or version == "正式版") :
    print("打算购买这本Python图书")
else:
    print("不购买!")

三目运算


多条语句用 “  , ” 隔开,每条语句都会执行,多条语句的结果用元组形式返回

多条语句用 “ ; ”  隔开,每条语句都会执行,只返回第一条语句的返回值

【print("ccc"), 'a 大于 b'  这两条语句都会执行,程序将会返回这两条语句的返回值组成元组。由于print()函数没有返回值,相当于他的返回值为None】
st = print("ccc"), 'a 大于 b' if a > b else "a 不大于b"
print( st ) 
输出:
ccc
(None, 'a 不大于b')

st = print("ccc"); x = 20 if a > b else "a 不大于b"
print( st ) 
输出:
ccc
None

a = 2
b = 3
st = "a大于b" if a > b else  "a不大于b" 
print(st) # 输出:a大于b

print("a大于b") if a > b else print("a不大于b") # 输出:a大于b

c = 5
d = 5
# 下面将输出c等于d
print("c大于d") if c > d else (print("c小于d") if c < d else print("c等于d")) # 输出:c等于d  【计算由外而内】
                 第一个先执行               第二个再执行

in运算符


s = 'crazyit.org'
print('it' in s) # True
print('it' not in s) # False
print('fkit' in s) # False
print('fkit' not in s) # True

posted @ 2021-03-28 13:28  言非  阅读(122)  评论(0)    收藏  举报