day 04.字符串的知识及运用 2018-12-27

一、对于昨天字符串的补充

3.字符串(str)

空串: '' ,"" (没有内容);
空格字符串:' ' ," " (只有空格)
普通字符:'a','1',',','嗯'
编码字符: \uXXXX (XXXX 为十六进制数,每一位为 0 至 9 或者 a 至 f )

4.字符的编码:

a - z :97 - 122;
A - Z :65 - 90;


二、获取字符串的字符

1.获取单个字符

字符串中的每一个字符都会对应一个唯一的下标(索引)用来表示字符在字符串中的位置。
下标是从 0 开始依次增加的,0 对应的是第一个字符;也可以是从 -1 开始,依次减小的,-1代表最后一个字符。
例如:'halo' --> h 对应的下标为:0 ;a 对应的下标为:1 ;l 对应的下标为:2 ;o 对应的下标为:3 ;(从 0 开始)
h 对应的下标为:-4 ;a 对应的下标为:-3 ;l 对应的下标为:-2 ;o 对应的下标为:-1 ;(从 -1 开始)

a.获取单个字符的语法:
字符串[下标] -----获取字符串中指定下标对应的字符

b.说明:
字符串 -----只要结果是字符串的表达式都可以
例如:字符串字面量,字符串变量

[] -----固定写法

下标 -----需要获取的字符对应的下标;注意:这里的下标不能越界。
例如:

result = 'halo 绝世小丑!'[5]       # 获取字符串中下标是 0 的字符,并且赋值给变量 result
print(result)                       # 输出:绝
# print('halo'[10])                   # 报错! IndexError: string index out of range

运行效果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/02.get char 12.27.py"
绝

Process finished with exit code 0

2.获取部分字符(字符串切片)
a.语法:
方法一:
字符串[ 开始下标 : 结束下标 : 步长 ]
-----规则:从开始下标开始,获取到结束下标 前 为止。每次下标的下标值加上步长去获取下一个。

b.说明:
字符串 -----只要结果是字符串的表达式都可以
开始下标、结束下标 -----是下标值就行(这里的下标越界后,不会报错)
步长 -----必须是整数(正数和负数都行);如果步长是正数,是从开始下标开始,从前往后获取;
如果步长是负数,是从开始下标开始,从后往前获取;

c.注意:不管怎么取,结束下标里的字符是取不到的。
当步长为正,要求开始下标对应字符的位置,必须在结束下标对应字符的位置之前,否则结果为空串。
当步长为负,要求开始下标对应字符的位置,必须在结束下标对应字符的位置之后,否则结果为空串。
例如:

str1 = 'halo 绝世小丑!'
print(str1[0:20:1])         # 结束下标越界,可以取完所有字符。 结果为:halo 绝世小丑!
print(str1[0:7:2])          # 从前往后跳着取。 结果为:hl 世
print(str1[-1:-6:-1])       # 从后往前取。 结果为:!丑小世绝
print(str1[-1:-6:-3])       # 从后往前跳两位取。 结果为:!世
print(str1[0:-2:1])         # 从前取到倒数第二个之前。 结果为:halo 绝世小
print(str1[-1:0:-2])        # 从后往前跳一位取。 结果为:!小绝oa
# 练习:获取一个字符串中,所有下标是奇数的字符(顺序获取)
str2 = str(input('请输入一个字符串(不超过100个字符):'))
print('下标是奇数的字符为:', str2[1:100:2])

运行效果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/02.get char 12.27.py"
halo 绝世小丑!
hl 世
!丑小世绝
!世
halo 绝世小
!小绝oa
请输入一个字符串(不超过100个字符):asd
下标是奇数的字符为: s

Process finished with exit code 0

方法二(省略步长):
字符串[ 开始下标 : 结束下标 ] -----默认步长为 1 ,从开始下标到结束下标前为止,一个一个的取。

方法三(省略开始下标和结束下标):
字符串[ : 结束下标 : 步长 ] -----省略开始下标,当步长为正数,从字符串的第一个字符开始,取到结束下标前为止。
当步长为负数,从字符串的最后一个字符开始,取到结束下标前为止。
字符串[ 开始下标 : : 步长 ] -----省略结束下标,当步长为正数,从开始下标开始,取到字符串的最后一个字符为止。
当步长为负数,从开始下标开始,取到字符串的第一个字符为止。
字符串[ : ] -----省略开始和结束下标,输出整个字符串。
字符串[ : : -1] -----使字符串倒序。
例如:

str3 = '012456adc'
print(str3[:5], str3[:5:-1])    # -----省略开始下标,当步长为正数,从字符串的第一个字符开始,取到结束下标前为止。
                                                    #  当步长为负数,从字符串的最后一个字符开始,取到结束下标前为止。
print(str3[2:], str3[3::-1])    # -----省略结束下标,当步长为正数,从开始下标开始,取到字符串的最后一个字符为止。
                                                    # 当步长为负数,从开始下标开始,取到字符串的第一个字符为止。

运行效果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/02.get char 12.27.py"
01245 cda
2456adc 4210

Process finished with exit code 0


三、字符串相关运算符

1.字符串支持的运算符:+、 *、 >、 <、 ==、 !=、 >=、 <=

支持数学运算符中的 + 和 * ,以及所有的比较运算。
a.+: 字符串1 + 字符串2 -----将字符串1与字符串2拼接在一起,产生一个新的字符串。
注意;字符串不能和数字混合相加。
b.*: 字符串 * N -----N是正整数,字符串重复三次,产生一个新的字符串
c.比较是否相等:
==、 != -----可以判断两个字符串是否相等或者不相等,返回值为 True 或 False 。

d.比较大小:
>、 < -----可以比较字符的编码值的大小。
规则:从第一个字符开始,依次往后找,找到第一个不相等的字符对儿,
判断它们的编码值的大小,谁的大,对应的字符串就大,
不会继续往下比了。
应用:判断是否是小写字母:'a' <= char <= 'z'
判断是否是大写字母:'A' <= char <= 'Z'
判断是否是字母:'a' <= char <= 'z' or 'A' <= char <= 'Z'
判断是否是中文:'\u4e00' <= char <= '\u9fa5'
print('adc' > 'abc') -----True
print('aac' > 'abc') -----False
例如:判断一个字符串中第三个字符是否字母

str1 = 'asd123asd456'
char = str1[2]
print('是否是字母:', 'a' <= char <= 'z' or 'A' <= char <= 'Z')
print('是否是中文:', '\u4e00' <= char <= '\u9fa5')

运行效果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/03.字符串相关运算符 12.27.py"
是否是字母: True
是否是中文: False

Process finished with exit code 0

2.in 和 not in 操作 -----返还值为布尔值(True/False)

运用:字符串1 in 字符串2 -----判断 字符串2 中是否包含 字符串1 (判断 字符串1 是否是 字符串2 的子串)
字符串1 not in 字符串2 -----判断 字符串2 中是否不包含 字符串1 (判断 字符串1 是否不是 字符串2 的子串)
例如:

print('adc' in 'halo adc!')     # 结果为:True
print('adc' in 'ahalo dc!')     # 结果为:False
print('adc' not in 'halo adc!')     # 结果为:False
print('adc' not in 'ahalo dc!')     # 结果为:True

运行效果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/03.字符串相关运算符 12.27.py"
True
False
False
True

Process finished with exit code 0

3.len函数

len(序列) -----获取序列中元素的个数
len(字符串) -----获取字符串的长度(字符的个数),结果为一个整数
注意:一个转译字符的长度为 1 ,一个编码字符的长度为 1 ,一个空格的长度为 1 ,手动输入的一个Tab键长度为 4 。
例如:

print(len('adc'))           # 结果为:3

str2 = input('请输入一个字符串:')
last_char = str2[len(str2) - 1]
print('字符串的最后一个字符为:', last_char)

运行效果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/03.字符串相关运算符 12.27.py"
请输入一个字符串:asd
字符串的最后一个字符为: d

Process finished with exit code 0


四、格式字符串

1.什么是格式字符串

在字符串中,通过格式站位符来代替字符串中变化的部分,然后在后面通过数据或者变量确定变化。
语法:
包含占位符的字符串 % (值1, 值2, 值3···)
占位符 -----%s (字符串)
%d (整数)
%f (小数, %.nf -->为保留小数点后 n 为小数)
%c (字符,当输入数字时,可以转换为对应编码值的字符)
% -----为固定写法。
() -----为固定写法,当字符串中只有一个占位符的时候,() 可以省略。
括号中的值 -----值与占位符的个数、类型、位置要一一对应。
例如:

name = input('请输入姓名:')
age = 21
sex = '男'
jieshao = '我叫%s,今年%d岁了,性别为:%s' % (name, age, sex)
print(jieshao)

运行效果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/04.form String 12.27.py"
请输入姓名:绝世小丑
我叫绝世小丑,今年21岁了,性别为:男

Process finished with exit code 0

练习:输入一个字符串,用一个变量保存输入的字符串的相关信息:

str1 = input('请输入一个字符串:')
message = '%s的长度为:%d,最后一个字符是:%c' % (str1, len(str1), str1[-1])
print(message)

运行效果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/04.form String 12.27.py"
请输入一个字符串:adc123
adc123的长度为:6,最后一个字符是:3

Process finished with exit code 0

也可以直接在print语句里面用:

print('%s --- %d --- %f --- %c' % ('asasda', 123, 456.789, 'j'))

运行效果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/04.form String 12.27.py"
asasda --- 123 --- 456.789000 --- j

Process finished with exit code 0


五、类型转换

语法:
类型名(数据) -----将指定的数据转换成指定的类型
int(数据) -----将其他数据转换成整型
float(数据) -----将其他数据转换成浮点型
bool(数据) -----将其他数据转换成布尔型
str(数据) -----将其他数据转换成字符串型

说明:
类型名 -----任何Python支持的或者自定义的类型都可以
数据 -----需要转换的对象(类型不同,要求可能不一样)
例如:

age = input('请输入年龄:')
print(type(age),age)
print('能否进入网吧:', int(age) >= 18)

运行效果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/05.type Conversion 12.27.py"
请输入年龄:17
<class 'str'> 17
能否进入网吧: False

Process finished with exit code 0

1.转换成整型

例如:

a = int(12.8)       # 所有的浮点数都可以转换成整数,直接保留整数部分
b = int(True)       # 所有的布尔值都可以转换成整数,True 化为 1 ;False 化为 0。
c = int('-123')     # 只有去掉字符串的引号后,本身就是一个整数的字符串才能转换成一个整数
print(a, b, c)

运行效果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/05.type Conversion 12.27.py"
12 1 -123

Process finished with exit code 0

2.转换浮点型

例如:

a = float(12.8)       # 所有的整数都可以转换成浮点数,在整数后面加 .0
b = float(True)       # 所有的布尔值都可以转换成浮点数,True 化为 1.0 ;False 化为 0.0。
c = float('-123.456')     # 只有去掉字符串的引号后,本身就是一个数字的字符串才能转换成一个浮点数
print(a, b, c)

运行效果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/05.type Conversion 12.27.py"
12.8 1.0 -123.456

Process finished with exit code 0

3.转换成布尔类型

Python中所有的数据都可以转换成布尔型
所有为空或零的值都会转换成 False,其他都为 True
例如:

a = bool(0)                 # 结果为:False
b = bool(-0.0)              # 结果为:False
c = bool('False')           # 结果为:True
d = bool([])                # 结果为:False
e = bool({})                # 结果为:False
f = bool(None)              # 结果为:False
print(a, b, c, d, e, f)

运行效果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/05.type Conversion 12.27.py"
False False True False False False

Process finished with exit code 0

4.转换成字符串类型

Python中所有的数据都可以转换成字符串类型,而且转换的时候,就是单纯的在最外面加单引号或双引号
例如:

a = str(110)
print(type(a), a)
print('adc' + str(110))     # 把数字转换为字符串类型就可以用 + 进行运算
# 练习:输入三个数字,求三个数字的和
a = input('请输入第一个数:')
b = input('请输入第二个数:')
c = input('请输入第三个数:')
print('这三个数的和为:', float(a) + float(b) + float(c))

运行效果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/05.type Conversion 12.27.py"
<class 'str'> 110
adc110
请输入第一个数:10
请输入第二个数:20
请输入第三个数:30
这三个数的和为: 60.0

Process finished with exit code 0


六、字符串使用方式

表中所有的字符串相关方法的使用都是:字符串.方法名()

1.capitalize()

字符串.capitalize() -----将指定的字符串的第一个字符转换成大写字母,并且返回新的字符串
注意:只有第一个字符是字母的时候才有效
例如:

str1 = 'adcsfg'
print(str1.capitalize())

运行效果:
···
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/06.String Method 12.27.py"
Adcsfg

Process finished with exit code 0

···

2.字符串的对齐方式:

字符串.center(width, fillchar) -----居中
字符串.ljust(width, fillchar) -----左对齐
字符串.rjust(width, fillchar) -----右对齐
width:决定新的字符串的长度;
fillchar:用来填充多出来位置的字符
例如:

str2 = 'adc'
print(str2.center(11, '_'))
print(str2.ljust(11, '_'))
print(str2.rjust(11, '_'))
'''

运行效果:
···
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/06.String Method 12.27.py"
____adc____
adc________
________adc

Process finished with exit code 0

···

3.count()

字符串1.count(字符串2) -----统计字符串1中,字符串2出现的字数
例如:

print('adcada'.count('a'))

运行效果:
···
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/06.String Method 12.27.py"
3

Process finished with exit code 0

···

4.isalpha

字符串.isalpha() -----判断字符串中是否全是字母
注意:非ASCII码表中的字符检查不出来。
例如:

print('adcada按时'.isalpha())

运行效果:
···
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/06.String Method 12.27.py"
True

Process finished with exit code 0

···

5.join

字符串1.join(字符串2) -----在字符串1插入到字符串2的每个字符之间
例如:

str3 = '12'.join('abcd')
print(str3)

运行效果:
···
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/06.String Method 12.27.py"
a12b12c12d

Process finished with exit code 0

···

6.split

字符串1.split(字符串2) -----以字符串2切割字符串1,返回的是一个列表
例如:

print('123/456/78'.split('/'))

运行效果:
···
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/06.String Method 12.27.py"
['123', '456', '78']

Process finished with exit code 0

···

====练习====

输入进班顺序,然后自动产生对应的学号,py1809xxxx
例如:输入1,产生学号:py18090001;输入23,产生学号:py18090023;以此类推。
解:

no = input('请输入序号:')
real_no = no.rjust(4, '0')
print('该生的学号为:py1809', real_no)

运行效果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe "C:/Users/Administrator/PycharmProjects/untitled1/day4.string and if 12.27/06.String Method 12.27.py"
请输入序号:45
该生的学号为:py1809 0045

Process finished with exit code 0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容