2019-03-11

day 总结

什么是字符串(str)

字符串是python内置的一种容器形数据类型,不可变,但是有序

''将单引号或者双引号作为容器,里面可以根据情况放多个字符

不可变:

"asfjlkdfj fcf"

顺序跟字符(内容)都不可变

有序:一旦字符串确定,字符串中的位置就固定(每个字符位置确定)

2. 字符串中的内容- 字符

python中只有字符的概念,没有字符对应的数据类型

字符串的基本单元就是字符,又叫字符串的元素

a 基本字符指的是-数字,字母,常用符号、中文、日语、韩语等

'12'
'sadlkr3'
'shusdk刷销售单位及'

转义字符-通过转义符号\后面跟不通的符号来表示特殊功能或者特殊意义的字符

\n 换行 ' 表示一个单引号, " 一个双引号 , \ 表示一个反斜杠 、\t 制表符

str1 = 'a'bc\nabs'
print(str1)

阻止转义:在字符串的最前面加r\R,可以阻止字符传中的转义字符转义(一般用于正则表达式)

str2 = r'\tabc\n123\tx'"z'
print(str2)

c. 编码字符 - \u后面跟四位的16进制数,来表示一个字符。这个4位的16进制数对应的值是字符的编码值

字符编码

python 中的字符采用的是unicode编码

计算机存储数据的时候只能存储数字,而且存的是数字的补码(是以二进制的格式进行存储的)

bin() # 获取制定数字的二进制 0b

oct() # 获取制定数字的8进制 0o

hex() # 获取制定数字的16进制 0x

print(bin(15))

编码:每个字符在计算机中存储的时候都会对应一个固定且唯一的数字,这个数字就是这个字符的编码

每个字符和数字的一一对应关系就是编码表,常见的编码有:ascii码表和unicode编码表

ascii码表只对数字字符、字母字符、英文符号进行编码

unicode(万国码)编码表是对ascii表的扩充,能够对世界上所有的字符编码:4e00 - 9fa5

chr(编码值) 获取编码值对应的字符

ord(字符) - 获取字符对应的编码值,注意,字符值就是长度是1的字符串

print(ord('杨'), ord('好'))
print(chr(100))
print(chr(0x64))
"""
num = 0
for code in range(0x4e00,0x9fa5):
print(chr(code),end=',')
num += 1
if num % 20 == 0:
print()
print(num)
"""

str3 = "\u4fff\u5faa\u00c8"
print(str3)

print(hex((200)))

print('a'> 'Z')

"""--auhtor--==yanghao"""

1.获取字符 - 取字符串的内容

a 获取单个字符 :

"""
语法: 字符串[下标] 根据下标获取字符串对应的字符
说明:字符串- 可以是字符串值,也可以是字符串变量,结果是字符串的表达式等等都可以
[]--固定写法 ,
下标 --又叫索引,指的是字符串中字符的位置,字符串固定位置就固定,下标的范围是0开始到字符串的长度减一
0 表示第一个字符,1表示第二个。。以此类推(通用的)
下标范围还可以是-1到字符串长度减1,-1 表示倒数第一个。。
"""

注意,获取单个字符的时候下标不能越界

str = 'python' # 'p':0/-6 'y':1/-5
print(str[0])
'python'[3]
result = 'python'[3]
print(result)

print(str(100))

1.2 获取部分字符(字符串切片)

"""
语法:字符串[开始下标:结束下标:步长]--从开始下标开始获取到结束下标前一个为止
说明:字符串--
[:] --固定写法
开始下标、结束下标 --下标值,开始下标值可以取到,结束下标对应的字符取不到
步长:--必须是正整数或者负整数
注意:下标可以越界
如果步长为正,从前往后获取,开始下标对应的字符要在结束下标对应的字符前才能获取到值
如果步长负,从后往前获取,开始下标对应的字符要在结束下标对应的字符的后面才能获取到值

"""
str2 = 'sdjksjfrs1323'
print(str2[0:100:1]) # 下标可以越界

"""
切片的语法可以对步长、开始下标、结束下标进行省略:
1.省略步长
字符串[开始下标:结束下标] == 字符串[开始下标:结束下标:1]

"""

2. 省略开始下标

"""
字符串[:结束下标:步长]
"""
str3 = 'abcef123456'
print(str3[:3:-1])
print(str[:3:1])

print(str3[2:])
print(str3[2::-1])
print(str3[:]) # 复制
print(str3[::-1]) # 倒叙

1.3 遍历字符串 - 一个一个取出所有的字符串

"""
方法1 :直接遍历
for 变量 in 字符串:
循环体

方法二:通过遍历下标来遍历字符串
for 变量 in range(字符串长度):
字符串[下标]
"""
for char in 'hello':
print(char)
str33 = 'when i was young'

len(字符串) - 获取字符串长度,返回一个数字,字符串长度值得是字符串的个数

for index in range(len(str33)):
print(index,str33[index])

index = 0
while index <len (str33):
print(index,str33[index])
index += 1
len()

"""--auhtor--==yanghao"""

字符串相关运算

数学运算:字符串支持加法运算跟乘法运算

语法: 字符串1 + 字符串2 -将两个字符串拼接在一起产生一个新的字符

new_str = 'abc' + '123'
print(new_str)
new_str += '你好!' # new_str = new_str + '你好!'= ’abc123' + '你好'
print(new_str)

注意:加好两边,必须都是字符串,或者都是字符串,数字和字符串不能混合相加!

语法: 字符串* 正整数 / 正整数* 字符串-制定的字符串重复指定次数,产生一个新的字符串

print('abc'3)
print('
'*10)

比较运算符: 字符串支持所有的比较运算符

==,!= --判断两个字符串是否相等

print('abc'=='abc')

两个字符串比较大小,让字符串中相同位置的字符--比较(从前往后),找到第一对不相等的字符判断其编码值大小

print('abcde'<'abz')
char = 'a'

应用

判断一个字符是否是字母: a <= char <= 'z' or 'A' <=CHAR <= 'Z '

书否是数字: '0'<= char <=' 9'

判断是否是中文:'\u4e00'<= char<= '\u9fa5' / 0x4e00<= ord(char) <= 0x9fa5

练习:输入任意一个字符串,统计输入内容中字母的个数

例如:输入'abc123你好世界end---'结果是:6

str = input('请输入字符串:')
count = 0
for char in str:
if 'A' <= char <= 'Z' or 'a'<=char<= 'z' :
count += 1
print('字母的个数',count)

3 in 和 not in 操作

字符串1 in 字符串2 --判断字符串1是否在字符串2中

字符串1 not in 字符串2 --判断字符串1是否不在字符串2中

print('abc' in '123abc==') # True

print('abc' not in 'a12bc3==') False

4 常用内置函数

len(字符串) -- 求字符串长度

str(数据) - 将其他数据转换成字符,所有的数据都能转换成字符串,直接在外面加引号

print(int('+23')) # 只有去掉引号后,本身就是一个整数的字符串才能转换成整形
print(bool('')) # 除了空串会转成False ,其他字符串都会转成True
str2 = ''
if not str2 :
print('不是空串')
"""--auhtor--==yanghao"""

5.字符串的对象方法

字符串.方法()

str4 =' hello'

字符串.capitalize() 字符串中首字母大写

字符串.center(width,fillchar)

产生一个长度为width的新字符串,新字符串中元字符串居中,剩余部分用fillchar填充

字符串。ljust (width,fillchar)左对齐,

字符串。rjust (width,fillchar)右对齐

num = 1
study_id = str(num).rjust(3,'0')
print(study_id)

字符串.zfill(width)--产生一个宽度是width的字符串,原字符串在右边,前面用0填充

1.输入一个字符串,打印所有奇数位上的字符(下标是1,3,5,7…位上的字符) 例如: 输入'abcd1234 '输出'bd24'

str = input('请输入字符串:')
print(str[1::2])

2.输入用户名,判断用户名是否合法(用户名长度6~10位)

str1 = input('请输入用户名:')
if 6 <= len(str1) <= 10:
print('用户名合法')
else:
print('用户名不合法')

3.输入用户名,判断用户名是否合法(用户名中只能由数字和字母组成)例如: 'abc' — 合法'123' — 合法 ‘abc123a’ — 合法

str2 = input('请输入用户名:')
for char in str2:
if '0 '<= char <= '9' and ('a'<= char <= 'z'and 'A'<= char <= 'Z') :
print('用户名合法;')
else:
print('用户名不合法')
print('用户名不合法')

4.输入用户名,判断用户名是否合法(用户名必须包含且只能包含数字和字母,并且第一个字符必须是大写字母)例如: 'abc' — 不合法 ** '123' ** — 不合法'abc123' — 不合法'Abc123ahs' — 合法

5.输入一个字符串,将字符串中所有的数字字符取出来产生一个新的字符串例如:输入'abc1shj23kls99+2kkk'输出:'123992'

str5 = input('请输入用户名:')
for char in str5:
if '0 '<= char <= '9' :
print(char,end = '')

6.输入一个字符串,将字符串中所有的小写字母变成对应的大写字母输出例如: 输入'a2h2klm12+'输出'A2H2KLM12+'

str6 = input('请输入一个字符串:')
new_str = str6.upper()
print(new_str)

7.输入一个小于100的数字,产生对应的学号例如: 输入'23',输出'py1901023'输入'9', 输出'py1901009'输入'123',输出'py1901123'

str = input('请输入一个小于100的数字:')
str1 = 'py1901'
str2 = str.rjust(3,'0')
new_str = str1+str2
print(new_str)

8.输入一个字符串,统计字符串中非数字字母的字符的个数例如: 输入'anc2+93-sjd胡说'输出: 4 输入'==='输出: 3

str8 = input('请输入用户名:')
count = 0

count1=int(len(str8)-count)

for char in str8:
if '0 '<= char <= '9' or ('a'<= char <= 'z'or 'A'<= char <= 'Z') :
count += 1

print('数字字母的个数:',count)

count1 = int(len(str8)-count)
print('非数字字母的个数:',count1)

9.输入字符串,将字符串的开头和结尾变成'+',产生一个新的字符串例如: 输入字符串'abc123', 输出'+bc12+'

str9 = input('请输入一个字符串:')
new_str = str9[1:-1].center(len(str9),'+')
print(new_str)

10.输入字符串,获取字符串的中间字符例如: 输入'abc1234'输出: '1'输入'abc123'输出'c1'

str10 = input('请输入字符串:')
num = int(len(str10)/2)
if len(str10) %2 ==0 :
print(str10[num-1],str10[num],end = '')
else:
print(str10[num])

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

推荐阅读更多精彩内容