第五课
1. 运算符
1.1 运算符的概念
- 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+”
1.2 运算符的分类
- 算术运算符
- 赋值运算符
- 比较运算符(关系运算符)
#特殊比较 ascⅡ值比较
result = '2' > '1'
print(result)
True
result = 'ab' > 'aa'
print(result)
True
== != 比较对象的值
is is not 比较对象的id
a = [1,2,3]
b = [1,2,3]
result = a is b
print(id(a),id(b))
print(result)
3187287017544 3187286186184
False
- 逻辑运算符
- 条件运算符(三元运算符)
2. 算术运算符
- 加法运算符 表现形式 +
- 减法运算符 表现形式 -
- 乘法运算符 表现形式 *
- 除法运算符 表现形式 /
- // 整除,只会保留计算后的整数位,总会返回一个整型
- % 取模,求两个数相除的余数
- ** 幂运算,求一个值的几次幂
3. 赋值运算符
复制运算符的特殊写法 x = x + 3 其实是和 x += 3 是一样的
- += (x+= 3 相当于 x = x + 3 )
- -= (x -= 3 相当于 x= x - 3 )
- *= (x = 3 相当于 x = x 3 )
- **= (x **= 3 相当于 x = x ** 3 )
- /= (x /= 3 相当于 x = x/ 3 )
- //= (x //= 3 相当于 x = x // 3 )
- %= (x %= 3 相当于 x= x % 3 )
4. 比较运算符
比较运算符用来比较两个值之间的关系,总会返回一个布尔值.如果关系成立,返回True,否则返回False
比较左侧值是否大于右侧值
= 比较左侧的值是否大于或等于右侧的值
< 比较左侧值是否小于右侧值
<= 比较左侧的值是否小于或等于右侧的值
特殊的比较方式
== 比较两个对象的值是否相等
!= 比较两个对象的值是否不相等
is 比较两个对象是否是同一个对象,比较的是对象的id
is not 比较两个对象是否不是同一个对象,比较的是对象的id
5. 逻辑运算符
5.1 not 逻辑非
- not可以对符号右侧的值进行非运算对于布尔值,非运算会对其进行取反操作,True变False,False变True
#逻辑非 :可以对符号右侧值进行非运算
a = 1
a = not 1
print(a)
>>>False
5.2 and 逻辑与
- and可以对符号两侧的值进行与运算。 只有在符号两侧的值都为True时,才会返回True,只要有一个False就返回False
- 与运算是找False的,如果第一个值为False,则不再看第二个值
result1 = True and True
result2 = True and False
print(result1,result2)
>>>True False
5.3 or 逻辑或
- 或运算两个值中只要有一个True,就会返回True
- 或运算是找True的
result1 = True or True
result2 = True or False
print(result1,result2)
>>> True True
5.4 非布尔值的与或运算
当我们对非布尔值进行与或运算时,Python会将其当做布尔值运算,最终会返回原值
非布尔值与运算的规则
与运算是找False的,如果第一个值是False,则不看第二个值。如果第一个值是False,则直接返回第一个值,否则返回第二个值
result = 1 and 2
result1 = 1 and 0
result2 = 0 and 2
result3 = None and 1
print(result,result1,result2,result3)
>>> 2 0 0 None
非布尔值或运算的规则
或运算是找True的,如果第一个值是True,则不看第二个值。如果第一个值是True,则直接返回第一个值,否则返回第二个值
result = 1 or 2
result1 = 1 or 0
result2 = 0 or 2
result3 = None or 1
print(result,result1,result2,result3)
>>>1 1 2 1
6. 条件运算符(三元运算符)

image.png
条件运算符在执行时,会先对条件表达式进行求值判断
如果判断结果为True,则执行语句1,并返回执行结果
如果判断结果为False,则执行语句2,并返回执行结果
语法: 语句1 if 条件表达式 else 语句2
a = 20
b = 30
print('a的值比较大') if a > b else print('b的值比较大')
>>>b的值比较大
a = 20
b = 30
m = a if a > b else b
print(m)
>>>30
7. 运算符的优先级
# 运输符优先级
b = 2 or 3 and 4
# and 的优先级比 or 高
print(b)
>>>2

运算符优先级别.png
8 字符串操作
# find
# 检测 str 是否包含在 A 中,如果是返回开始的索引值,否则返回-1
# mystr.find(str, start=0, end=len(mystr))
A = 'hello world itcast and itcastcpp'
a = A.find('itcast')
print(a)
b = A.find('itcast',0,10)
print(b)
c = A.find('itcast',0,19)
print(c)
12
-1
12
#index
#find()方法一样,只不过如果str不在 mystr中会报一个异常.
#mystr.index(str, start=0, end=len(mystr))
A = 'hello world itcast and itcastcpp'
a = A.index('itcast')
print(a)
>>>12
b = A.index('itcast',0,10)
print(b)
>>> b = A.index('itcast',0,10)
ValueError: substring not found
c = A.index('itcast',0,19)
print(c)
>>>12
# count
# 返回 str在start和end之间 在 mystr里面出现的次数
# mystr.count(str, start=0, end=len(mystr))
A = 'hello world itcast and itcastcpp'
m = A.count('itcast',0,len(A))
print(m)
>>>2
# replace
# 把 mystr 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次.
# mystr.replace(str1, str2, mystr.count(str1))
name = 'hello world ha ha'
a = name.replace('ha','HA')
b = name.replace('ha','HA',1)
print(a)
>>> hello world HA HA
print(b)
>>>hello world HA ha
# split
# 以 str 为分隔符切片 mystr,如果 maxsplit有指定值,则仅分隔 maxsplit 个子字符串
# mystr.split(str=" ", 2)
# 以” “ 切分
name = 'hello world ha ha'
s = name.split(' ')
s1 = name.split(' ',2)
print(s)
['hello', 'world', 'ha', 'ha']
print(s1)
['hello', 'world', 'ha ha']
#以”a或者h“ 字符串中存在字符切分
name = 'hello world ha ha'
s = name.split('a')
s1 = name.split('h',2)
print(s)
>>>['hello world h', ' h', '']
print(s1)
>>>['', 'ello world ', 'a ha']
#以字符串中不存在字符切分
name = 'hello world ha ha'
s = name.split('n')
s1 = name.split('n',2)
print(s)
>>>['hello world ha ha']
print(s1)
>>>['hello world ha ha']
# capitalize
# 把字符串的第一个字符大写
# mystr.capitalize()
name = 'hello world ha ha'
a = name.capitalize()
print(a)
>>>Hello world ha ha
# <7>title
# 把字符串的每个单词首字母大写
a = "hello itcast"
b = a.title()
print(b)
>>>Hello Itcast
# startswith & endswith
# 检查字符串是否是以 hello 开头, 是则返回 True,否则返回 False
a = "hello itcast"
b = a.startswith('hello')
c = a.endswith('st')
print(b)
>>>True
print(c)
>>>True
# lower & upper 大小写转换
a = "Hello Itcast"
b = a.lower()
c = a.upper()
print(b,c)
>>>hello itcast HELLO ITCAST
9 作业
三个数比大小
a = input("a:")
b = input("b:")
c = input("c:")
num = max(int(a), int(b),int(c))
print(num)
a = float(input('请输入a值:'))
b = float(input('请输入b值:'))
c = float(input('请输入c值:'))
m = a if(a > b and a > c) else b if (b>c) else c
print(m)
a = float(input('请输入a值:'))
b = float(input('请输入b值:'))
c = float(input('请输入c值:'))
if a > b and a > c:
print(a)
elif b > a and b > c:
print(b)
else:
print(c)