一.上周回顾
1.变量
变量名 = 值
变量名 - 标识符,不能是关键字
见名知义,所有字母小写多个单词之间用_隔开,不能使用系统内置函数名
2.运算符
数学运算符、比较运算符、逻辑运算符、赋值运算符
比较运算符结果是布尔值
逻辑运算符运算对象和结果都是布尔值
赋值运算符,左边必须是变量,复合的赋值运算右边不能有其他赋值运算符
3.分支结构
if, if-else, if-elif-else
4.运算符
for:
for 变量 in 序列
循环体
else:
语句块
while:
while 条件语句:
循环体
else:
语句块
continue(结束当次循环), break(直接结束循环)
二.string(字符串)
#1.什么是字符串(str)
- 字符串是python内置的一种容器型数据类型(序列), 不可变、有序;
将单引号或者双引号作为容器,里面可以根据情况放多个字符 - 不可变:只的是字符串内容的值不能变,字符串的顺序不能变
- 有序:一旦字符串确定,字符串中字符的位子就固定(每个字符是第几个字符是确定的)
2.字符串中的内容 - 字符
- python中只有字符的概念,没有字符对应的数据类型
- 字符串的基本单元就是字符,又叫字符串的元素
1 a.基本字符 - 数字、字母、常用符号、中文、日语、韩语等
2 b.转义字符 - 通过转移符号\后面跟不同的符号来表示特殊功能或者特殊意义的字符
\n - 换行
\' - 一个单引号, \" - 一个双引号
\\ - 一个反斜杠.例如:\\n - 印刷\n
\t - 制表符
百度搜索查询更多转义字符
str1 = 'a\'bc \n123'
print(str1)
- 阻止转:在字符串前最前面加 r 或者 R,可以阻止字符串中的转义字符转义(一般用于正则表达式)
str2 = r'abc\n123\tx\'y\"z'
print(str2)
3.c.编码字符 - \u 后面跟4位的十六进制数,来表示一个字符.这个4位16进制数对应的值是字符的编码值
3.字符编码
python中的字符才用的是Unicode的编码
计算机存储数据的时候只能存数字,而且存的是数字的补码(是以二进制的格式进行存储的)
print('二进制', 0b1100100)
print(bin(100)) # bin (数字) - 获取指定数字的对应的二进制
print(oct(100), 0o144) # oct(数字) - 获取指定数字对应的八进制
print(hex(100), 0x64) # hex(数字) - 获取指定的数字对应的16进制
编码:每个字符在计算机中存储的术后都会对应一个固定且唯一的数字,这个数字就是这个字符的编码 每一个字符和数字的一一对应的关系就是编码表.常见的编码表:
ASCII码表、Unicode编码表.
- ASCII码表:只对数字字符、字母字符、英文符号进行编码.
- Unicode编码表:是对ASCII码表的扩充,包涵世界上所有符号,能够对世界上所有的符号进行编码,
chr(编码值) - 获取编码值对应的字符
ord(字符) - 获取字符对应的编码值,注意字符值就是长度是1的字符串
print(chr(0xA000))
num = 0
for code in range(0x4e00,0x9fa5):
print(chr(code), end=' ')
num += 1
if num % 20 == 0:
print()
print(num)
print(ord('杨'), ord('广'), ord('剑'))
3.获取字符 - 获取取字符串内容
- a.获取单个字符:
- a.语法:字符串[下标] - 根据下标获取字符串中对应的字符,结果是获取到的字符
- b.说明: 字符串 - 可以是字符串值,也可以是字符串变量,结果是字符串的表达式等都可以
[] - 固定写法
下标 - 又叫索引,一旦字符串确定,那么字符串中每个字符都会对应一个下标,
表示这个字符在字符串中的位置,下标的范围是0开始带字符串长度减1,
0表示第一个字符,1表示第二个,以此类推.(通用的)
下标范围还可以是 -1 到 - 字符串长度减1,-1表示倒数第一个,-2表示倒数第二个以此类推 - c.注意,获取单个字符串的时候下标不能越界
# 例子
str1 = 'python' # 'p' : 0/-6 , 'y' : 1/-5
str1[3]
result = str1[3]
print(result)
print(str1[0], str1[-6])
# print(str1[100]) # IndexError: string index out of range:下标越界
4.获取部分字符(字符串切片)
- a.语法:字符串[开始下标:结束下标:补充:步长] - 从开始下标开始,获取到结束下标前为止,每次下标值增加步长
- b.说明:字符串 - 可以是字符串值,也可以是字符串变量,结果是字符串的表达式等都可以
[],: - 固定写法
开始下标,结束下标 - 下标值,开始下标对应的字符可以取到,结束下标对应的字符一定取不到
步长 - 必须是整数,可以是正数,也可以是负数 - c.注意:下标可以越界
如果步长为正(从前往后获取),开始下标对应的的字符一定要在结束下标对应的字符前才能获取到值
如果步长为负(从后往前获取),开始下标对应的字符一定要在结束下边对应的字符后面才能获取到值
str2 = 'abcdef123456'
print(str2[0:8:1]) # abcdef12
print((str2[-1:-4:-1])) # 654
print(str2[0:100:1]) # abcdef123456 - 可以越界,越界了的就不取
切片的语法中可以对步长,开始下标,和结束下标进行省略:
1.省略步长,语法:(步长默认为1)
字符串[开始下标:结束下标] == 字符串[开始下标:结束下标:1]
2.省略下标.
字符串[:结束下标:步长] - 如果步长是正,从字符串开头往后取;如果步长为负,从字符串最后一个字符往前取
字符串[开始下标;;步长] - 如果步长为正,取到最后一个字符为止;如果步长为负,取到第一个字符为止
# 练习:数字1234转换为数字4321
num = 1234
num = int(str(num)[::-1])
print(num)
3 遍历字符串 - 一个一个的取出所有的字符
- 方法一:直接遍历
for 变量 in 字符串:
循环体
for char in 'hello':
print(char)
- 方法二:通过遍历下标,来遍历字符串
for 变量 in range(字符串长度):
字符串[变量]
str3 = 'when i was young'
len(字符串) - 获取字符串长度,返回一个数字.字符串长度指的是字符串中字符的个数
for index in range(len(str3)):
print(index, str3[index])
index = 0
while index < len(str3):
print(index, str3[index])
index += 1
4.1.字符串相关运算
a.数学运算:支持加法运算和乘法运算
语法:
加法:字符串1 + 字符串2 - 把字符串1字符串2拼接在一起形成一个新的字符串
注意:加号两边必须都是数字或者都是字符串不能混合相加.
new_str = 'abc' + '123'
print(new_str)
new_str += '你好'
print(new_str)
乘法:字符串 * 正整数 / 正整数 * 字符串 - 指定的字符串重复指定次数,产生一个新的字符
print('ab' * 6)
b.比较运算:字符串支持所有的比较运算符
字符串1 == 字符串2, 字符串1 != 字符串2 - 判断两个字符串是否相等
print('abc' == 'abc') # True
print('abc' == 'bca') # False
两个字符串比较大小:让两个字符串中相同位置的字符一一比较,找到第一对不相等的字符,判断编码值的大小
print('abcdef' > 'abz') # False
print('abc' > 'abc') # False
print('abc1' > 'abc') # True
应用:判断一个字符是否是字母: 'a' <= char <='z' or 'A' <= char <='Z'
判断一个字符是否是数字: '0' <= char <= '9'
判断一个字符是否是中文(4e009fa5)(一龥): '\u4e00' <= char <= '\u9fa5'
练习:输入任意一个字符串,统计输入的内容中字母的个数
str1 = input('请输入一个字符串')
num = 0
for n in str1:
if 'a' <= n <= 'z' or 'A' <= n <= 'Z':
num += 1
print('字母一共', num, '个', sep='')
3.in 和 not in 操作
字符串1 in 字符串2 - 判断字符串1是否在字符串2中(判断字符串2中是否包含字符串1)
字符串1 not in 字符串2 - 判断字符串1中是否不在字符串2中
print('abc'in '132abc') # True 包含
print('abc' in '123a1bc') # False 不包含
4.常用内置函数
- len(字符串) - 求字符串长度
- str(数据) - 将其他数据转换成字符,所有的数据都可以转换成字符串,转换的时候直接在数据外面加引号
- print(int('23')) # 只有去掉引号后,本身就是一个整数的字符才能转换成整型
- print(float('12.4')) # 只有去掉引号后本身就是一个数字的字符串才能转换成浮点型
- print(bool('abc')) # 只有空串转换False其他的都会转换成True
5.字符串的对象方法
字符串.方法()
- 字符串.capitalize() - 将字符串中首字母大写
- 字符串.center中原字符串居中, 剩余的部分用fillchar填充
- 字符串.ljust(width, fillchar) - 左对齐
- 字符串.rjust(width, fillchar) - 右对齐
- 字符串.zfill(width) - 产生一个宽度是width的字符串,原字符串在右边,前门用0填充
str4 = 'hello'
new_str = str4.capitalize()
print(new_str)