Python基础(2)print中+和,的区别与字符串强制类型转换
在Python基础(1)文末我记录了输出时用+和,连接字符串的区别,似乎仅仅是排版不同,其实不然,在输出单纯的双引号内的字符串时,二者的区别确实不大,但在输出布尔型变量时,两个符号的意义就不同了。下面我以大小写判定的语句为例,介绍+与,的不同。
字符串输出、索引、替换
name="Lu HeDan uuuu"
#0123456789
# -2 -1
print(name[0:8]) #输出0-7字符
print(name[0:-1]) #输出0-倒数第一个之前的字符
print(name[3:]) #输出3及以后的字符
print(name[0:9] * 2,"\n")#输出0-8字符两次
print(name[0],name[3],name[5])#输出数组「0」「3」「5」位置的字符
print(name.index("L")) #返回"L"所在位置
print(name.index("u"))
print(name.index("He"),"\n") #返回"He"开头所在位置
print(name.replace("u","a")) #将所有"u"替换成"a"
print(name.replace("uuuu","aaaa"),"\n")#将"uuuu"替换成"aaaa"
Lu HeDan
Lu HeDan uuu
HeDan uuuu
Lu HeDan Lu HeDan
L H D
0
1
3
La HeDan aaaa
Lu HeDan aaaa
字符串转化
eval():将字符串转化为数值
str():将数值或其他转化为字符串
大小写转化
name = "LuHeDan"
print("name:",name)
print("大写:",name.upper())
print("小写:",name.lower())
输出:
name: LuHeDan
大写: LUHEDAN
小写: luhedan
大小写判定
name1 = "LuHeDan"
name2 = name1.upper()
name3 = name1.lower()
print("name1、2、3:",name1,name2,name3)
print("name1是否为大写:",name1.isupper(),"是否为小写:",name1.islower())
print("name2是否为大写:",name2.isupper(),"是否为小写:",name2.islower())
print("name3是否为大写:",name3.isupper(),"是否为小写:",name3.islower())
输出:
name1、2、3: LuHeDan LUHEDAN luhedan
name1是否为大写: False 是否为小写: False
name2是否为大写: True 是否为小写: False
name3是否为大写: False 是否为小写: True
布尔变量与字符串串联输出
字符串+字符串
print("name1、2、3:",name1,name2,name3)
print("name1、2、3:" + name1 + name2 + name3)
name1、2、3: LuHeDan LUHEDAN luhedan
name1、2、3:LuHeDanLUHEDANluhedan
总结:+和,两种输出连接符号均可,逗号可以有空格符的作用,+则输出没有空格
字符串+布尔
print("name1是否为大写:",name1.isupper())
print("name2是否为大写:",name2.isupper())
print("name3是否为小写:",name3.islower())
print("name1是否为大写:",name1.isupper())
print("name2是否为大写:",name2.isupper())
print("name3是否为小写:",name3.islower())
print("name1是否为大写:"+name1.isupper())
print("name2是否为大写:"+name2.isupper())
print("name3是否为小写:"+name3.islower())
TypeError: can only concatenate str (not "bool") to str
总结:字符串和布尔之间只能用“,”连接,用+会报错。
布尔+ 布尔
print(name2.isupper(),name3.islower())
print(name2.isupper() + name3.islower())
print(name3.isupper(),name3.islower())
print(name3.isupper() + name3.islower())
print(name3.isupper(),name2.islower())
print(name3.isupper() + name2.islower())
print(name2.isupper(),name3.islower(),name2.isupper(),name3.islower())
print(name2.isupper()+name3.islower()+name2.isupper()+name3.islower())
True True
2
False True
1
False False
0
True True True True
4
总结:布尔与布尔型变量串联时用“+”或“,”均可连接保证不报错,但输出结果有明显不同。“,”不管在字符串还是布尔变量之间都起到的是连接作用,但“+”若用在多个布尔型变量之间就会变为加法运算,每个布尔值为True的项为1,布尔值为False的项为0,输出的是多个0与1算术相加后的结果。
字符串强制类型转换
既然知道了“+”只能用于字符串与字符串之间的转换,那么在输出布尔+字符串或者数字+字符串的时候,只要煎布尔变量与数字强制转换成字符串类型即可用“+”连接输出。
用 str() 实现强制类型转换
print("name1是否为大写:"+str(name1.isupper()))
print(str(23) + "s")
name1是否为大写:False
23s
字符串切片
<字符串>[M:N:K],M表示开头位置,N表示结尾位置,K表示步长(间隔),MNK可省略
<字符串>[::-1]表示字符串倒序