2018-08-22 day3 python基础语法(二)字符串(含作业)

1.字符串

a='asdha'

str1='''sdlja
asdajslkda
sadlskjd
lgjsdf
'''

a.说明

python中没有字符类型,如果要表示字符,就要用一个长度是1的字符串表示。长度:指的就是长度字符串中字符的个数(tab和空格和换行都算一个)

b.转义字符

1.通过 \ 将一些特殊的字符转换成一个具有特殊功能或者特殊意义的字符,就是转义字符.
2.常见的转义: \n (换行),\t (tab), \\(\),\'(')

a1='ajhds\nasd'

a2='asdsad\tsad'

a3='awdwd\\asdsa'
ajhds
asd            #a1
asdsad  sad  #a2
awdwd\asdsa   #a3

在计算机字符串长度的时候,转义字符的长度是1
3.字符串前加r,str里面全部转义(无意义)

a=r'ashd\\/\/\t\n/\/\/'
ashd\\/\/\t\n/\/\/     #a

c.编码

1.python中字符的编码采用的是Unicode编码。
a.将字符转换成制定的数值,这个过程就是编码。(方便计算机存储)
b.将数值转换成对应的符号的过程就是解码(反编码)
c.Unicode采用两个字节(8位 ,2^15个),能够将世界上所有的符号进行编码。(包含了ASCII码)
d.python中的编码(chr())
1.将Unicode码转换成字符

print(chr(0xFB22))    # ﬢ(结果)

2.将字符转化成Unicode编码(ord())

print(hex(ord('唐')))   #  0x5510

2.获取字符

a.字符串实质:

可以看成是一个不可变的序列,序列内容是字符。一旦字符串确定,字符串里面的内容和位置是不可变的。

1.获取单个字符,通过下标(索引)来获取指定位置上的字符
str1='asojdl' # 取出第三个字符

print(str1[2])  #结果是o

索引:
a.0~字符串长度减一(不能越界)
b.-1~负字符串长度(不能越界)

str1='asojdl' # 取出第三个字符

print(str1[-4])  #结果是o
2.获取多个字符(切片)

a.切边可以越界,取临界值
字符串[下标1:下标2]:从下标1开始,获取到下标2千的所有的字符,(从下标1开始,每次下标值加1,一直加到下标2前,下标1对应的位置,一定要在下标2对应的位置前)

str1='asojdl' # 取出第二

print(str1[1:3])  #结果是s o

print(str1[[1:-4]) # 结果是s 

b.字符串[下标1:下标2:步进]
从下标1开始取,取到下标2 每次下标值加步进

a='iwjdawdjkasj'

print(a[::2])    #  结果 ijadks
注意:a.步进如果是正数,那么下标1对应字符的位置在下标2字符对应位置的前面,如果步进是负数,那么下标1对应的位置在下标2对应的位置的后面。b.下标2对应的字符是取不到的,即区间是前闭后开[下标1,下标2)

c.切片索引省略

a='sdalksjdla'

print(a[::]) #sdalksjdla

1.下标1省略默认是开始的位置(步进正则是字符第一个字符开始,步进负则是字符最后一个字符开始)
2.下标2省略:下标1位置开始要结束(同上相反,即步进正则到结束位置,步进负则到开始位置)

3.字符串的相关运算

a.字符串的加运算(必须两个字符串相加)
b.字符串的乘法运算(字符串*正数)
c.支持所有的比较运算符(大小比较是比较Unicode编码的大小依次比较)
print('abc'+'aas')   # 结果abcaas

print('asd'*2)    # 结果asdasd

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

print('abc' != 'abc')   # False

print('abcf' > 'ac')     # False
#(a=a,b<c 所以ac>abcf)

4.in 和not in

a.用法:in 和not in的结果想法

str1 in str2(str1是否在str2中)

b.获取字符串长度( len() 方法)
print('as' in 'sasdwdw')  # True

print('as' in 'a1ssdwa')  #False

print('as' not in 'sasdwdw')  # False

print('as' not in 'a1ssdwa')  #True

print(len('askdwakdjwa'))  # 11

5.空串

str1=''
str2='' ''

print(len(str1))  # 0
print(len(str2))  #0

6.阻止转义

print(r'sajdh\/\/\t\n\t\t')  # sajdh\/\/\t\n\t\t
print(R'sajdh\/\/\t\n\t\t')  # sajdh\/\/\t\n\t\t
#练习
str1=r'\nabc123'  #str1[3]
str2='abc123\\123' #求str2[-5]

print(str1[3])  #b
print(str2[-5])  #3

6.字符串的相关方法(内置函数)

基本上都是:字符串.函数() or 函数(字符串),这些所有函数的功能都不会影响原来的字符串,而是生成一个新的字符串(字符串不可变)

1.capitalize()
2.center(width,fillchar) # width:输入位置的宽度。fillchar:剩余
没有占得位置用什么填充
3.rjust(width,fillchar) #让字符串变成width对应的长度,原内容靠右,剩余的部分使用fillchar来填充
4.count(str) 判断str在原字符串中的出现的次数
5.字符串.join(str2)
6.字符串.resplace(old,new)

str1='sadasd'
number='1'

print(str1.capitalize())  # 将首字母大写
print(str1.center(20,'t'))    #tttttttsadasdttttttt

print(str1.center(20,' '))    #       sadasd      
print(number.rjust(3,0))   #  001

print(str1.count(a))    # 2
print(str1.join('ww'))  #wsadasdw
print(str1.replace('a','x'))  #sxdxsd

7.格式化

a.'格式符' %(格式符对应的值)
b.常见格式符

%s--->字符串
%d--->整数
%f--->浮点数   %.nf---->保留多少位
%c--->字符
first_name = '唐'
last_name = '小富'

print('我的姓是%s,我的名是%s' %(first_name,last_name))
#我的姓是唐,我的名是小富
print('我的名字是{0}{1}'.format(first_name,last_name))
#我的名字是唐小富
money = 100
print('%f元' %money)    # 100.000000
print('%.2f' %money)     # 100.00
char_code = 99
print('%d对应的code码是%c' % (char_code,char_code)) # 99对应的code码是c
print('%d格式化八进制0o%o,十六进制0x%x' % (char_code,char_code,char_code)) #99格式化八进制0o143,十六进制0x63

8.数据类型的转换

a.整数+浮点数------->浮点数
b.整数+布尔---------->整数{True(1),False(0)}
c.强制转换:
语法----------> 类型名(需要转换的数据)
例如: int(19.5)----->19
1.str---->int (str去掉引号是int就可以转换)
2.bool,str---->float (str去掉字符引号后是int或者float)
3.其他类型转化成bool
结论:所有的数据类型都可以转换成bool
1.数字中除了0是False,其它都是True
2.字符串中除了空串是False,其他的都是True
总结:所有为空,0的值全部都是False

print(bool(0))
print(bool(''))
print(bool(""))
print(bool(None))
'''
False
False
False
False
'''

作业

在做下面的每个练习时,都编写一个独立的程序,并将其保存为名称类似于name_cases.py的文件

2-3 个性化消息: 将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消息应非常简单,如“Hello Eric, would you like to learn some Python today?”。

#txf_2-3.py
user_name='txf'
print('“Hello '+user_name+',would you like to learn some Python today?”')

'''
结果:“Hello txf,would you like to learn some Python today?”
'''

2-4 调整名字的大小写: 将一个人名存储到一个变量中,再以小写、大写和首字母大写的方式显示这个人名。

#txf_2.4.py
user_name='txf'
print(user_name)  #小写
print(user_name.upper())      #大写

user_name_lower=user_name.upper()
print(user_name_lower.lower())  #大写变成小写
print(user_name.capitalize())  #首字母大写

'''
结果:
txf
TXF
txf
Txf
'''

2-5 名言: 找一句你钦佩的名人说的名言,将这个名人的姓名和他的名言打印出来。输出应类似于下面这样(包括引号):Albert Einstein once said, “A person who never made a mistake never tried anything new.”

#txf_2.5.py
user_name='woyebuzhidao'
print('"life is short,I use python."\n')
print(' '*12+'-------'+user_name)
'''
结果:
"life is short,I use python."

            -------woyebuzhidao
'''

2-6 名言2: 重复练习2-5,但将名人的姓名存储在变量famous_person 中,再创建要显示的消息,并将其存储在变量message 中,然后打印这条消息。

#txf_2.6.py
famous_person='woyebuzhidao'
message='Life is short,I use python'

print(message+'\n'+' '*12+'-------'+famous_person)
'''
结果:
Life is short,I use python
            -------woyebuzhidao
'''

2-7 剔除人名中的空白: 存储一个人名,并在其开头和末尾都包含一些空白字符。务必至少使用字符组合"\t" 和"\n" 各一次。 打印这个人名,以显示其开头和末尾的空白。然后,分别使用剔除函数lstrip() 、rstrip() 和strip() 对人名进行处理,并将结果打印出来。

#txf_2.7.py
user_name=' woyebuzhidao '

print("1显示\n空格"+user_name+"显示\t空格")
print("2显示\n空格"+user_name.strip()+"显示\t空格") #去除开头和结尾的空格
print("3显示\n空格"+user_name.lstrip()+"显示\t空格")    #去除开头的空格
print("4显示\n空格"+user_name.rstrip()+"显示\t空格")    #去除结尾的空格
'''
结果:
1显示
空格 woyebuzhidao 显示  空格

2显示
空格woyebuzhidao显示    空格

3显示
空格woyebuzhidao 显示   空格

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

推荐阅读更多精彩内容