字符串比较
运算符
> ,>=,<,<=,==,!=
比较规则:
首先比较两个字符串中的第一个字母,如果相等则继续比较下一个字母,依次比较下去,
直到两个字符串中,有一个字母不相等,这两个字母的比较结果就是两个字符串的比较结果,
两个字符串中所有的后续字母不再比较。
比较原理:
两个字符进行比较时,比较的是其原始值,调用内置函数ord(),可以得到字母的ASCII 码
案例:
print("apple">"app") #True "l" > ""
print("apple">"banana") #False 因为第一个字母转换后 97<98
print(ord("a")) #97
print(ord("b")) #98
== 和 is 的区别
== 比较的是value
is 比较的是 内存地址 id()
a = b = "python"
c = "python"
d = a[:]
print(id(a)) # 2008148549872
print(id(b)) # 2008148549872
print(id(c)) # 2008148549872
print(a == b) # True
print(b == c) # True
print(a is b) # True 字符串储存机制
print(b is c) # True
print(d == a) # True
print(d is a) # True 字符串储存机制
a = ['1',"2","3"]
b = a[:]
print(a,id(a)) #['1', '2', '3'] 1865106539968
print(b,id(b)) #['1', '2', '3'] 1865106535168
print(a==b) #True
print(a is b) #False
字符串格式化
- % 占位符格式化
%s 字符串
%d 或%i
%f 浮点数
注意: % 后面加整数数字代表宽度 加小数代表 小数精度
print("hellohello")
print("%10d" % 99)
print("%10f" %3.1415926)
print("%10.3f" %3.1415926)
#输出
hellohello
99
3.141593
3.142
- {}.format格式化
注意:{} 格式化也有和%类似的特殊写法
print("{0}".format(3.1415926)) # {0} 占位符,第一个位置
print("{0:.3}".format(3.1415926)) # :.3 代表一共3位小数
print("{0:.3f}".format(3.1415926)) # :.3f 代表小数后面有3位
print("{0:10}".format(99)) # :10 代表宽度为10,不足前面补空格
#输出
3.1415926
3.14
3.142
99
- f-sting f 开头的字符串
name = '张三'
age = 20
print("我叫%s,今年%d岁" %(name,age))
print("%10d" % 99) # %10d 这个10代表宽度
print("hellohello")
print("%f" % 3.1415926)
print("%.3f" % 3.1415926) #代表小数位数
print("我是{0},今年{1}岁,我真的叫{0}".format(name,age))
print(f"我是{name},今年{age}岁,我真的叫{name}")
#输出
我叫张三,今年20岁
99
hellohello
3.141593
3.142
我是张三,今年20岁,我真的叫张三
我是张三,今年20岁,我真的叫张三
以 f 开头表示在字符串内支持大括号内的python 表达式