文章目录
- 1. 类型转换
- 2. 字符串索引取值
- 3. 遍历字符串
- 4. 统计长度
- 5. 字符串的复制与拼接
- 5.1 字符串的复制
- 5.2 加号拼接
- 5.3 .join 方法拼接字符串
- 6. 字符比较
- 7. 成员运算
- 8. .format
- 9. .split
- 10. .strip
- 11 . .upper 与 .lower
- 12. .isupper 与 .islower
- 13. .startswith 与 .endswith
- 14. .replace
- 15. .isdigit
- 16. .isalpha
- 17. .isalnum
- 18. .title 与 .capitalize
- 19 .swapcase
- 20. .find 与 .index
- 21. .count
- 22. .center & .ljust & .rjust
- 23. 练习
1. 类型转换
Python 内置 str() 函数将括号内的数据转为字符串类型数据. 任意类型的数据都可以被转为字符串.
# 1. 类型转换.py
# 解释权内部写法 str1 = str('abc')
str1 = str('abc')
print(str1, type(str1))
# 整型
print(str(123))
# 浮点数
print(str(123.4))
# 列表
print(str([1, 2, 3]))
# 元组
print(str(('hello',)))
# 字典
print(str({'a': 123, 'b': 456}))
运行工具窗口提示:
abc <class 'str'>
123
123.4
[1, 2, 3]
('hello',)
{'a': 123, 'b': 456}
2. 字符串索引取值
字符串中每个字符占一个索引, 索引从0开始. 通过索引取值方式又称为'切片'.
取值格式: 字符串[起始值: 上限值: 步长]
起始值: 起始位置, 从第几位开始取值.
上限值: 上限的位置, 只能获取到它的前一索引的值, 不包含它本身.
步长: 步长是正数从左往右正向取值, 默认为正1, 步长是负数从右往左反向取值.
省略索引:
省略第一个索引: 相当于使用索引0, 从索引0开始截取.
省略第二个索引: 相当于使用列表的长度, 意味着切片直至列表的末尾.
# 2. 索引取值.py
str1 = '0123456789'
print(str1[0]) # 取单个值.
print(str1[0:9]) # 一共取9个值, 取索引0-8的值
print(str1[0:30]) # 超出也只能取全部的值.
print(str1[0:]) # 省略第二个索引相当于使用列表的长度, 意味着切片直至列表的末尾.
print(str1[:9]) # 省略第一个索引相当于使用索引0.
# 倒序切片
print(str1[-10:-1]) # 负索引-1的值不会显示, -1是终止位不被包含.
print(str1[0:-1]) # 第一位到倒数第二位.
print(str1[-30:-1]) # 超出也只能从0取-1之间的值 等通于 [0:-1].
print(str1[-1:-11:-1]) # 利用索引 倒退写法, 步长是倒退-1.
print(str1[::-1]) # 倒取全部.
运行工具窗口提示:
0
012345678
0123456789
0123456789
012345678
012345678
012345678
012345678
9876543210
9876543210
3. 遍历字符串
for 循环语句可以依次获取字符串中的单个字符.
str1 = '0123456789'
# 遍历每个字符
for i in str1:
print(i, end='--')
运行工具窗口提示:
0--1--2--3--4--5--6--7--8--9--
4. 统计长度
Python 内置 len() 函数统计序列类型的元素个数.
# 4. 统计字符长度.py
str1 = '0123456789'
print(len(str1))
运行工具窗口提示:
10
5. 字符串的复制与拼接
符号 | 作用 | 例 |
---|---|---|
+ 加号 | 连接字符串. | ‘a’ + ‘b’ = ‘ab’ |
* 乘号 | 复制字符串. | ‘a’ * 3 = ‘aaa’ |
Python 属于强类型语言, 不能类型的数据是无法互相操作的.
Python 中为了方便程序员的使用:
使用+号, 让字符串与整型将加时, 使其不再表示加法, 而是拼接字符串.
使用*号, 让字符串与整型将乘是, 使其不再表示乘法, 而是重复n次.
5.1 字符串的复制
# 5. 字符串的复制.py
str1 = 'abc'
print(str1 * 5)
运行工具窗口提示:
abcabcabcabcabc
5.2 加号拼接
# 6. 字符串的复制.py
str1 = 'abc'
str2 = 'def'
# 字符串拼接
print(str1 + str2)
# 字符截取拼接
print(str1[0:1] + 'a')
运行工具窗口提示:
abcdef
aa
5.3 .join 方法拼接字符串
方法: 方法是让对象调用的函数, 对象调用方法: 对象.方法()
字符串的 .join() 方法适用于列表中的字符串想加, 直接连接字符串比较麻烦还需要转为列表, 在拼接.
格式: '连接符'.join(可迭代对象)
* 拼接的列表中存在不是字符串的元素会报错.
# 7. join方法拼接字符串.py
str1 = 'abc'
str2 = 'def'
list1 = [str1, str2]
# 以 空字符串 做为拼接符
print(''.join(list1))
# 以 - 做为拼接符
print('-'.join(list1))
运行工具窗口提示:
abcdef
abc-def
6. 字符比较
字符串比较大小, 会将字符转为ASCII表对应的十进制数来比较
ASCII编码范围在0-127, 定义了128个单字节字符.
超过这个范围则需要转为Unicode编码表对应的十进制数来比较.
# 8. 字符串比较.py
str1 = 'a'
str2 = 'b'
print(str1 > str2)
# 输入的字符串作为值 赋值 给变量
input_str = input('输入字符串>>>:')
# 值相等
print(str1 == input_str)
# 地址相等
print(str1 is input_str)
运行工具窗口提示:
False
输入字符串>>>:(a)
True
True
7. 成员运算
in 判断某个个体是否在某个群体当中, 返回布尔值.
not in 判断某个个体是否不在某个群体当中, 返回布尔值.
# 9. 成员运算.py
str1 = '0123456789'
print('0' in str1)
print('0' not in str1)
运行工具窗口提示:
True
False
8. .format
.format() 方法, Python官方推荐的使用的格式化输入.
.format() 方法使用{}占位, .format() 方法可以接送任意类型参数, 参数不能是变量.
使用方式一: {}默认按传递的参数依次获取值.
使用方式二:{}中写索引, 可以对参数进行多次调用. 索引是来源于format()的参数.
使用方式三: {}中写上变量名, .format()以关键字参数 变量名 = xxx 传参.
* {} 内不可是的位置参数不能是变量.
# 10. .format 方法.py
# 使用方式一
print('今天星期{}, 天气{}, 温度{}℃!'.format('一', '晴', 28))
# 使用方式二
print('现在时间是: {0}点{0}分{0}秒.'
'距离下班时间还有{1}个小时{1}分{1}秒!'.format(13, 1))
# 使用方式三
print('{name}独断万古!'.format(name='荒天帝'))
name = '王腾'
print('吾儿{name}有大帝之姿!'.format(name=name))
"""
# 错误使用方法
name ='王腾'
print('吾儿{name}有大帝之姿!'.format(name))
"""
运行工具窗口提示:
今天星期一, 天气晴, 温度28℃!
现在时间是: 13点13分13秒.距离下班时间还有1个小时1分1秒!
荒天帝独断万古!
吾儿王腾有大帝之姿!
9. .split
.split('字符') 方法指定一个字符为分割点进行切分, 被切分的的字符串会以列表类型存放.
指定切割的字符不会保留, 不写默认指定为空字符, 指定的字符必须存在字符串中.
切割方向:
从左往右 .split('指定字符', maxsplit =_)
从右往左 .rsplit('指定字符', maxsplit =_)
''.join() 将列表多个字符串元素拼接成字符串.
引号内指定一个拼接符号, 引号内默认不写则不使用分隔符.
split 切分, join还原.
# 11. .split 方法.py
str1 = 'abc and acg adf'
# 默认按空格切分
print(str1.split())
# 指定 | 作为分隔 , |不保留
str1 = '1 | 2 | 3| 4 | 5'
print(str1.split('|'))
# 最大切分一次
print(str1.split('|', maxsplit=1))
# 最大切分两次
print(str1.split('|', maxsplit=2))
# 从右往左, 最大切分一次
print(str1.rsplit('|', maxsplit=1))
# 从右往左, 最大切分两次
print(str1.rsplit('|', maxsplit=2))
list1 = ['1 ', ' 2 ', ' 3', ' 4 ', ' 5']
# 以空字符串拼接
print(''.join(list1))
# 以|拼接
print('|'.join(list1))
运行工具窗口提示:
['abc', 'and', 'acg', 'adf']
['1 ', ' 2 ', ' 3', ' 4 ', ' 5']
['1 ', ' 2 | 3| 4 | 5']
['1 ', ' 2 ', ' 3| 4 | 5']
['1 | 2 | 3| 4 ', ' 5']
['1 | 2 | 3', ' 4 ', ' 5']
1 2 3 4 5
1 | 2 | 3| 4 | 5
10. .strip
.strip() 方法移除指定的首尾字符.
.lstrip() 方法移除首部, 指定的的字符.
.rstrip() 方法移除尾部, 指定的的字符.
不写都默认移除空字符. 需要移除的字符用引号引起来, 中间的无法移除.
注意点:
aipoo移除'aoa'
aoa 中的字符每个字符依次去 aipoo 前后匹配, 如果存在则移除.
# 12. strip 方法
str1 = ' 01234 56789 '
# 默认移除首尾空字符
print(str1.strip())
str2 = '###123 456@@@'
# 移除首尾 #
print(str2.strip('#'))
# 移除首尾 @
print(str2.strip('@'))
# 移除首尾 #
str3 = '###123 4566###'
print(str3.lstrip('#'))
# 移除尾
print(str3.rstrip('#'))
# 指定多个字符串移除
print('aipoo'.strip('aoa')) # ip
运行工具窗口提示:
01234 56789
123 456@@@
###123 456
123 4566###
###123 4566
ip
11 . .upper 与 .lower
将纯字母字符转为 大写或者小写 其他的字符原样输出.
.upper() 方法将字符串中的字母全转为大写.
.lower() 方法将字符串中的字母全转为小写.
# 13. upper 与 .lower.py
str1 = 'AbCdEfG'
# 全转大写
print(str1.upper()) # ABCDEFG
# 全转小写
print(str1.lower()) # abcdefg
运行工具窗口提示:
ABCDEFG
abcdefg
设计一个程序, 将输入的字母 与 验证码 全转为大写或小写 在做比较.
# 14. 验证码示例.py
# 1. 创建一个验证码
code = 'sAD8'
# 2. 将验证码发给用户
print(f'xx验证码是:{code}')
# 3. 获取用户输入的验证码
input_code = input('输入验证码>>:')
# 4. 将输入的验证码 与 验证码 转为大写 做比较
if input_code.upper() == code.upper():
print('验证成功!')
else:
print('验证失败!')
运行工具窗口提示:
xx验证码是:sAD8
输入验证码>>:(sad8)
验证成功!
12. .isupper 与 .islower
.isupper('字符串') 判断字符串中的字母是否为全大写, 其它字符不会影响判断.
.islower('字符串') 判断字符串中的字母是否为全小写, 其它字符不会影响判断.
* 凡是方法描述信息带判断的, 返回的结果为布尔值.
# 15. .isupper 与 .islower.py
str1 = 'AbCdEfG'
str2 = 'ABC'
str3 = 'abc'
# str1的字母是否为全大写 或全小写
print(str1.isupper(), str1.islower())
# str2的字符串是否为全大写, str3的字符串是否为全小写
print(str2.isupper(), str3.islower())
# 其他字符不受影响
str4 = 'a我'
print(str4.islower())
运行工具窗口提示:
False False
True True
True
13. .startswith 与 .endswith
.startswith('字符串') 判断字符串是否以某个字符串开头, 区分大小写.
.endswith('字符串') 判断字符串是否以某个字符串结尾, 区分大小写.
# 16. .startswith 与 .endswith.py
str1 = 'Hello world!'
# 判断字符串是否以h开头(区分大小写)
print(str1.startswith('h'))
# 判断字符串是否以H开头
print(str1.startswith('H'))
# 判断字符串是否以Hello开头
print(str1.startswith('Hello'))
# 判断字符串是否以!结尾
print(str1.endswith('!'))
运行工具窗口提示:
False
True
True
True
14. .replace
.replace() 方法将指定字符替换.
格式: .replace(old, new, count=None)
old 需要替换的字符参数, 参数必须写.
new 替换的字符参数, 参数必须写.
count 替换的次数, 默认全部替换.
# 17. .replace 方法.py
str1 = 'aaaa aaaa aaaa'
# 将所有a替换为b
print(str1.replace('a', 'b'))
# 将所有a替换为b, 替换4次
print(str1.replace('a', 'b', 4))
运行工具窗口提示:
bbbb bbbb bbbb
bbbb aaaa aaaa
15. .isdigit
.isdigit('字符串') 方法判断字符串是否为纯整数字字符串, 浮点型不行.
# 18 .isdigit 方法.py
str1 = '123456'
str2 = '12.3'
str3 = 'a123'
str4 = ' 123'
print(str1.isdigit())
print(str2.isdigit())
print(str3.isdigit())
print(str4.isdigit())
运行工具窗口提示:
True
False
False
False
False
设计一个程序, 模拟登录, 密码是6位数整型. 要求用户输入密码,
程序对输入进行类型转换, 对密码进行校验, 避免字符串转整型报错.
验证成功退出程序, 否则要求继续输入.
* 设计程序的时候先写所条件为 False 的代码块, 可以提高代码的可读性.
# 19. 模拟登录.py
# 1. 创建密码
pwd = 123456
# 2. 循环代码块
while True:
# 2.1 获取用户输入
input_pwd = input('输入6位数的密码>>>:')
# 2.2 判断字符串是否为纯整型数字
if not input_pwd.isdigit():
print('密码是纯数字!, 请重新输入!')
continue
# 2.3 对字符串进行类型转换
input_pwd = int(input_pwd)
# 2.4 校验密码
if input_pwd != pwd:
print('密码错误!, 请重新输入!')
continue
# 2.5 登入成功退出循环
print('登录成功!')
break
运行工具窗口提示:
输入6位数的密码>>>:(qwe)
密码是纯数字!, 请重新输入!
输入6位数的密码>>>:(123)
密码错误!, 请重新输入!
输入6位数的密码>>>:(123456)
登录成功!
16. .isalpha
.isalpha() 方法判断字符串中是否为纯字母.
# 20. .isalpha 方法.py
str1 = 'asd123'
str2 = 'asd'
print(str1.isalpha())
print(str2.isalpha())
运行工具窗口提示:
False
True
17. .isalnum
.isalnum() 方法判断字符串中是否只有字母和数字.
# 21. .isalnum.py
str1 = 'asd123'
str2 = 'asd1.23'
print(str1.isalnum())
print(str2.isalnum())
运行工具窗口提示:
True
False
设计一个程序, 统计下列字符串中的符号, 除数字和字母都是符号, 空格也是符号.
# 22. 统计字符串中的符号.py
str1 = 'a1sd564ew9r/7wa/*7sd49c8aw4ea1r98""":::~!@#17*/ 29e7w+91w49d '
# 计数器
count = 0
# 遍历字符串
for i in str1:
if not i.isalnum():
count += 1
print(count)
运行工具窗口提示:
19
18. .title 与 .capitalize
.title() 方法将字符串中所有单词的首字母转为大写.
.capitalize() 方法将字符串中第一个单词首字母转为大写.
# 23. .title 与 .capitalize.py
str1 = 'my name is kid my age is 18.'
print(str1.title())
print(str1.capitalize())
运行工具窗口提示:
My Name Is Kid My Age Is 18.
My name is kid my age is 18.
19 .swapcase
.swapcase() 方法将字符串中的大写字母转为小写, 将小写字母转为大写.
# 24. swapcase.py
str2 = 'AbCd'
print(str2.swapcase())
运行工具窗口提示:
aBcD
20. .find 与 .index
.find() 方法从左往右查找指定字符对应的索引, 找到就返回索引的值, 如果查找的字符不存在则返回-1.
.rfind() 方法从右往左查找指定字符对应的索引, 找到就返回索引的值, 如果查找的字符不存在则返回-1.
.index() 方法从左往右查找指定字符对应的索引, 找到就返回索引的值, 找不到就报错.
.rindex() 方法从右往左查找指定字符对应的索引, 找到就返回索引的值, 找不到就报错.
* 提供的参数使一个字符串, 只对首个字符进行查询.
# 25 .find 与 .index.py
str1 = 'My name is kid my age is 18.'
print(str1.find('m'))
print(str1.rfind('m'))
print(str1.index('m'))
print(str1.rindex('m'))
# print(str1.index('2')) # 报错 substring not found 未找到子字符串
运行工具窗口提示:
5
-1
5
15
21. .count
.count() 方法统计某个字符组合在字符串中出现的次数.
str1 = 'My name is kid my age is 18.'
print(str1.count('m'))
print(str1.count('my'))
运行工具窗口提示:
2
1
22. .center & .ljust & .rjust
.center(字符宽度, '字符') 方法指定字符与字符宽度, 让字符串居中.
.ljust( 字符宽度, '字符') 方法指定字符与字符宽度, 让字符串左对齐.
.rjust( 字符宽度, '字符') 方法指定字符与字符宽度, 让字符串右对齐.
# 27. .center & .ljust & .rjust.py
message = '输出'
print(message.center(16, '-'))
print(message.ljust(16, '-'))
print(message.rjust(16, '-'))
运行工具窗口提示:
-------输出-------
输出--------------
--------------输出
23. 练习
name = " kiD"
1. 移除 name 变量对应的值两边的空格,并输出处理结果
print(name.strip())
2. 判断 name 变量对应的值是否以 "ki" 开头,并输出结果
print(name.startswith('ki'))
3. 判断 name 变量对应的值是否以 "d" 结尾,并输出结果
print(name.endswith('d'))
4. 将 name 变量对应的值中的 “i” 替换为 “p”,并输出结果
print(name.replace('i', 'p'))
5. 将 name 变量对应的值根据 “i” 分割,并输出结果.
print(name.split('i'))
6. 将 name 变量对应的值变大写,并输出结果
print(name.upper())
7. 将 name 变量对应的值变小写,并输出结果
print(name.lower())
8. 请输出 name 变量对应的值的第 2 个字符?
print(name[1])
9. 请输出 name 变量对应的值的前 3 个字符?
print(name[:3])
10. 请输出 name 变量对应的值的后 2 个字符?
print(name[2:])
11. 请输出 name 变量对应的值中 “d” 所在索引位置?
print(name.index('i'))
12. 获取子序列,去掉最后一个字符.如: kid 则获取 ki.
print(name[0:len(name)-1])
文章的段落全是代码块包裹的, 留言0是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言1是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言2是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言3是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言4是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言5是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言6是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言7是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言8是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言9是为了避免文章提示质量低.