======获取字符======
1. 获取单个字符
字符串中的每一个字符都会对应一个唯一的下标(索引), 用来表示字符在字符串中的位置.
下标是从 0 开始依次增加, 0 对应的是第一个字符(0 ~ 字符串长度 -1)
可以是从 -1 开始依次减小, -1 代表最后一个字符(-1 ~ -字符串长度)
例如: "hello" -> h
'\tpytho\u4e00n' # p 在(左1, 右-7)
a. 语法:
字符串[下标] —— 获取字符串中指定下标对应的字符
b. 说明:
字符串 —— 只要结果是字符串的表达式都可以, 例如: 字符串字面量, 字符串变量
[] —— 固定写法
下标 —— 需要获取的字符对应的下表; 注意: 这儿的下表不能越界,必须在范围之内
result = 'how are you!'[0]
# 12位字符, 获取字符串'hao are you!'中下标是 0 的字符, 并且赋给变量result
print(result) # h
print('how are you!'[-4]) # y
# print('how are you!'[-13]) # (-12 ~ 11)越界IndexError: string index out of range
str1 = 'good good study! day day up!'
print(str1[10]) # 取 s
print(str1[-1]) # 取 !
2.获取部分字符(字符串切片)
方法一
a. 语法:
字符串[开始下标: 结束下标: 步长] —— 从开始下标开始, 获取到结束下标 前 为止. 每次下标值 加上步长去获取下一个
b. 说明:
字符串 —— 只要结果是字符串的表达式都可以, 例如: 字符串字面量, 字符串变量
[] —— 固定写法
开始下标、结束下标 —— 下标值(这儿的下标可以越界)
步长 —— 必须是整数(正数和负数都行);如果步长是正数,是从开始下标开始 从前往后获取,如果步长是负数,是从开始下标开始 从后往前获取
注意:
当步长为正,要求开始下标对应的字符位置必须在结束下标对应的字符的前面,否则结果是空串!
当步长为负,要求开始下标对应的字符为止必须在结束下标对应的字符的后面,否则结果是空串!
不管怎么取,结束下标一定取不到!
str1 = 'hello python!'
print(str1[0:4:1]) # hell 从前往后取
print(str1[0:4:2]) # hl 从前往后取
print(str1[0:7:3]) # hlp
print(str1[0:-1:2]) # hlopto
print(str1[-1:0:-2]) # !otpil 从后往前取
print(str1[-1:-100:-1]) # !nohtyp olleh 结束下标越界 从后往前取
print(str1[100:-100:-1]) # !nohtyp olleh # 开始下标和结束下标越界
获取一个字符串中所有下标是奇数的字符(顺序)
print(str1[1:100:2]) #el yhn
str2 = "{'name':'小明', 'age': 18}" # 去掉 {}
print(str2[1:-1:1]) # 'name':'小明', 'age': 18
方法二
字符串[开始下标:结束下标] —— 步长是 1 ; 从开始下标开始到结束下标为止,一个一个的取
print('when i was young!'[2:6]) # en i
方法三:(省略开始下标和结束下标)
a. 省略开始下标 - 字符串[:结束下标:步长] —— 当步长是正数,从字符串的第一个字符开始取到结束下标前为止; 当步长是负数,从字符串的最后一个字符开始取到结束下标前为止。
b. 省略结束下标 - 字符串[开始下标::步长] —— 当步长为正数,从开始下标开始取到字符串最后一个字符为止;当步长为负数,从开始下标开始取到字符串的第一个字符为止。
str3 = 'when i was young!'
print(str3[:6], str3[:6:-1]) # when i !gnuoy saw
print(str3[2:], str3[2::-1]) # en i was young! ehw
print(str3[:]) # when i was young!
print(str3[::-1]) # !gnuoy saw i nehw 让字符串倒序 ★
======字符串相关运算======
1. 字符串支持的运算符: +, *, >, <, ==, !=, >=, <=
python中的字符串支持数学运算符中的 + 和 * ,以及所有的比较运算符
a. + : 字符串1 + 字符串2 - 将 字符串1和字符串2 拼接在一起产生一个 新的字符串
new_str = 'abc' + '123'
print(new_str) # abc123
注意: 字符串 和 数字 不能混合相加!
b. * : 字符串 * N - N 是正整数;字符串重复N次产生一个新的字符串
new_str = 'abc' * 3
print(new_str) # abcabcabc
new_str = 'abc' + '123'
print(new_str) # abc123
name = '张三'
message = '吃饭了吗?'
print(name + message) # 张三吃饭了吗?
print(name + message + '...') # 张三吃饭了吗?...
# print('abc' + 123) # “123”错误 TypeError: must be str, not int
new_str = 'abc' * 3
print(new_str) # abcabcabc
print(('abc' + '123') * 2) # abc123abc123
print('abc' + '123' * 2) # abc123123
c. 比较是否相等
==, != 可以判断两个字符是否相等或者不相等
print('abc' == 'abc') # True
print('abc' != 'abc') # Flase
d. 比较大小:从第一个字符开始依次往后找,找到第一个不相等的字符,判断它们的编码值的大小,
谁的编码值大,对应的字符串就大,就不再往后继续比较了
print('abdcb' > 'abcde') # True d > c 故正确
print('abdcb' > 'zbcde') # False a < z 故错误
应用:
1. 判断是否是小写字母:'a' <= char <= 'z' <===> char >= 'a' and char <= 'z' 注: 只有python可以是前者的写法
2. 判断是否是大写字母:'A' <= char <= 'Z'
print('abc' == 'abc') # True
print('abc' != 'abc') # Flase
print('abdcb' > 'abcde') # True d > c 故正确
print('abdcb' > 'zbcde') # False a < z 故错误
print('abc' < 'abcd') # True 多一个字符 d
判断一个字符串中第三个字符是否是字母
str1 = 'shk23.ssy23'
char = str1[2] # 将第3个字符取出
print('是否是字母:', 'a' <= char <= 'z' or 'A' <= char <= 'Z') # 是否是字母: True
print('是否是中文:', '\u4e00' <= char <= '\u9fa5') # 是否是中文: False
2. in 和 not in 操作
字符串1 in 字符串2 -> 判断 字符串2 中是否包 含字符串1 (判断 1 是否是 2 的子串)
print('abc' in 'hello abc') # True 均有'abc'
print('abc' in 'ahello bc') # False 位置顺序不可变,故错误
字符串1 not in 字符串2 -> 判断 字符串2 中是否包 含字符串1 (判断 1 是否是 2 的子串)
print('abc' not in 'hello abc') # False
print('abc' not in 'ahello bc') # True
print('abc' in 'hello abc') # True 均有'abc'
print('abc' in 'ahello bc') # False 位置顺序不可变,故错误
print('abc' not in 'hello abc') # False
print('abc' not in 'ahello bc') # True
print('A' in 'hello Abc') # True
3. len 函数
len(序列) —— 获取序列长度,获取序列中元素的个数
len(字符串) —— 获取字符串的长度(字符的个数) >>结果是一个整数
print(len('abc')) # 3 长度为 3 (整数)
注意:
一个可以转移的转义字符的长度是 1 !
一个编码字符的长度是 1 !
一个空格字符的长度是 1 !
手动在键盘上按一个tab,一般是4个空格,长度是4;一个 \t 来表示的 tab,其长度为 1 ,比较方便
print(len('abc')) # 3
str1 = input('请输入:')
last_char = str1[len(str1) - 1] # 获取输入中的最后一个字符
print(last_char) # 获取输入中的最后一个字符
str1 = ' abc' # 其中abc之前是一个tab键(4个空格)
print(str1)
print(len(str1)) # 7 个字符
str2 = '\tabc' # \t 是随着tab的变化而变化,方便
print(len(str2)) # 4 个字符
======格式字符串======
1. 什么是格式字符串?
在字符串中通过格式占位符来代替字符串中变化的部分,然后在后面通过数据或变量确定变化(变化的字符串就是格式字符串)
语法:
包含 占位符的字符串 % (值1,值2,值3...)有多少占位符就有多少值
说明:
占位符 —— %s (字符串)
%d (整数)
%f (小数) > %.Nf 保留小数点后N位小数
%c (字符) > 可以将数字转换成字符
% —— 固定写法
() —— 固定写法,字符串中只有一个占位符的时候,这个括号()可以省略
括号中的值 —— 值 和 占位符 要一一对应(个数、类型、位置都要对应)
name = input('姓名:')
age = 18
sex = '男'
# =============加法操作============
# mesage = '我叫XXX, 今年xx岁,性别:X,月薪x万'
# mesage ='我叫' + name',今年' + age + '岁,性别:' + sex
# print(mesage)
# =============格式字符串操作========
message = '我叫%s,今年%d,性别:%s,月薪%.2f万,字符:%c' % (name, age, sex, 1.5, 97)
print(message) # 我叫小明,今年18,性别:男,月薪1.50万,字符:a
练习:输入一个字符串,用一个变量保存输入的字符串的相关信息:XXX的长度是XX,最后一个字符是X
例如:输入abc -> abc 的长度是3,最后一个字符是 c
input_str = input('请输入一个字符串:')
message = '%s的长度是%d,最后一个字符是%c' % (input_str, len(input_str), input_str[-1])
print(message) # sadsadd的长度是7,最后一个字符是d
======类型转换======
1. 基本语法
语法:
类型名(数据)—— 将指定数据转换成指定类型
说明:
类型名 —— 任何python支持的,或自定的类型都可以
数据 —— 需要转换的对象(类型名不同,要求可能不一样)
2. 转换实例
int(数据) -> 将其它数据转换成整型
float(数据) -> 将其它数据转换成浮点型
bool(数据) -> 将其它类型转换成布尔
str(数据) -> 将其他数据转换成字符串
age = input('年龄:')
print(type(age), age)
print('是否能进入网吧:', age >= 18) # 需要加 int()
print('是否能进入网吧:', int(age) >= 18)
1. 转换成整型
a = int(12.9) # 浮点数可以转换成整数,直接保留整数部分
b = int(False) # 所有布尔可以转换成整数, True -> 1; False -> 0
c = int('-120') # 只有去掉字符串的引号后,本身就是一个整数的字符串才能转换成整数
print(a, b, c) # 12 0 -120
2. 转换成浮点型
a = float(100) # 所有整数都可以转换成浮点数,在后面加 .0
b = float(True) # 所有布尔可以转换成浮点数,True -> 1.0;False -> 0.0
c = float('12.9') # 去掉引号后,本身就是一个数字的字符串能转换成浮点型
print(a, b, c) # 100.0 1.0 12.9
3. 转换成布尔类型
python中所有的数据都可以转换成布尔
所有为 空 为 0 的值都会转换成False,其它都是True
a = bool(100) # True
b = bool(-0.0) # False
c = bool('abc') # True
d = bool('') # False
e = bool([]) # False
f = bool(None) # False
print(a, b, c, d, e, f) # True False True False False False
4. 转换成字符串类型
python中所有的数据都可以转换成字符串,而且转换的时候就是单纯的在外面加引号''
a = str(100)
print(a) # 100
print('abc' + str(100)) # abc100
练习:输入三个数字,求三个数的和
num1 = input('第一个数:') # 1
num2 = input('第二个数字:') # 2
num3 = input('第三个数字:') # 3
print(float(num1) + float(num2) + float(num3)) # 6.0
网友评论