字符串
1.什么是字符串
使用單引號(hào)或者雙引號(hào)括起來的字符集就是字符串。
引號(hào)中單獨(dú)的符號(hào)、數(shù)字、字母等叫字符。
轉(zhuǎn)義字符:可以用來表示一些有特殊功能或者是特殊意義的字符(通過在固定的字符前加)
\ ' ->'
\ \ -> \
\n ->換行
\t ->制表符
\ "-> "
說明:在計(jì)算字符串長(zhǎng)度時(shí),轉(zhuǎn)義字符代表一個(gè)字符。
str2='\''
print(str2)
str1='床前明月光,\n疑是地上霜'
print(str1)
結(jié)果:
'
床前明月光,
疑是地上霜
2.阻止轉(zhuǎn)義(python專有)
可以通過在字符串前面加r(R)來阻止轉(zhuǎn)義字符轉(zhuǎn)義。
str1=r'\''
print(str1)
結(jié)果
\'
3.python中字符串中的編碼方式是Unicode編碼。
- Unicode編碼:使用16位對(duì)一個(gè)字符編碼。
- 編碼目的:讓字符可以存儲(chǔ)到計(jì)算機(jī)中。
-Unicode碼中包含了ASSCII碼,可以表示世界上所有的語言和符號(hào)。
a.獲取一個(gè)字符的Unicode碼
print(ord('w'),ord('s'),ord('w'))
結(jié)果:
119 115 119
b.將Unicode碼轉(zhuǎn)換成字符
chr(編碼值)
print(chr(0x5434))
結(jié)果:
吳
字符串比較大小時(shí),從字符開始依次往后比較每個(gè)字符的大小,直到遇到字符不一樣為止。
比較字符大小時(shí),實(shí)質(zhì)比的是他們編碼的大小。
print('abc'>'b')
結(jié)果:
False
2.獲取字符串的字符
python的字符串,實(shí)質(zhì)是一個(gè)有序的字符序列。
1.獲取字符串長(zhǎng)度:(長(zhǎng)度->字符串中字符的個(gè)數(shù))
len是獲取序列長(zhǎng)度的內(nèi)置函數(shù)。
count=len('abc\n123')
print(count)
結(jié)果:
7
2.通過下標(biāo)獲取字符串中的某一個(gè)字符。
字符串中每個(gè)字符都對(duì)應(yīng)一個(gè)下標(biāo)(索引),我們可以通過索引值去獲取固定的字符。
'abc' ---> a:0,b:1,c:2
str1='abc'
print(str1[0]) #a
print(str1[2]) #c
結(jié)果:
a
c
下標(biāo)范偉: 0 - 字符串長(zhǎng)度-1;-1~負(fù)的字符串長(zhǎng)度
獲取字符時(shí),索引值不能超過索引的范圍,否則會(huì)報(bào)IndexError錯(cuò)誤。
str2='good good study\nday day up'
print(str2[25])
print(str1[-1]) #獲取字符串str1中的最后一個(gè)字符
print(str1[-2]) #獲取字符串str1中的倒數(shù)第二個(gè)字符
結(jié)果:
p
c
b
3.獲取字符串中的部分字符(切片):
字符串[開始下標(biāo):結(jié)束下標(biāo)]
--->獲取字符串中從開始下標(biāo)到結(jié)束下標(biāo)的字符(包含開始下標(biāo)對(duì)應(yīng)的字符,不包含結(jié)束下標(biāo)對(duì)應(yīng)的字符)
字符串[開始下標(biāo):結(jié)束下標(biāo):步進(jìn)]
字符串[開始下標(biāo):結(jié)束下標(biāo)] == 字符串[開始下標(biāo):結(jié)束下標(biāo):1]
- a.開始和結(jié)束下標(biāo)都有值:開始下標(biāo)對(duì)應(yīng)的字符,要在結(jié)束下標(biāo)對(duì)應(yīng)的字符前面(步進(jìn)是正數(shù))。
str3=('hello python')
str4=print(str3[6:12]) # python
str4=print(str3[-6:12]) # python
結(jié)果:
python
python
- b.開始下標(biāo)省略:從字符串的最前面取到結(jié)束下標(biāo)前。
print(str3[:4])
結(jié)果:
hell
- c.結(jié)束下標(biāo)省略:從開始位置獲取到字符串結(jié)束。
print(str3[4:])
結(jié)果:
o python
- d.兩個(gè)都省略:獲取整個(gè)字符串的內(nèi)容。
print(str3[:])
結(jié)果:
hello python
- e.(了解)當(dāng)步進(jìn)是復(fù)數(shù)的時(shí)候,開始下標(biāo)和結(jié)束下標(biāo)的性質(zhì)相反
print(str3[::2]) #lhopto
print(str3[6:1:-1]) #p oll
print(str3[::-1]) #字符串倒序
結(jié)果:
hlopto
p oll
nohtyp olleh
3.字符串運(yùn)算符
1.+:字符串拼接
字符串1+字符串2
str1='hello'
str2='python'
print(str1+' '+str2)
結(jié)果:
hello python
注意:+號(hào)兩邊要么都是數(shù)字,要么都是字符串。不能一個(gè)數(shù)字一個(gè)字符串。
print(12+'ad') #TypeError: unsupported operand type(s) for +: 'int' and 'str'
2. *:讓字符串重復(fù)
字符串*整數(shù)
print(str1*3)
結(jié)果:
hellohellohello
3. in:
字符串1 in 字符串2:判斷字符串1是否在字符串2中 -->在是True,不在是False
result='aa' in 'abac'
print(result)
結(jié)果:
False
4. not in
字符串1 not in 字符串2:判斷字符串1是否不在字符串2中 -->不在就是True,在是False
result='aa' not in 'abac'
print(result)
結(jié)果:
True
5.格式字符串 %s(占位符)
格式:'占位符1占位符2' % (值1,值2)
str1='abc%s12%s3' % ('>>>','!!!')
print(str1)
結(jié)果:
abc>>>12!!!3f10
- %s -->字符串占位符(格式符)
- %d -->整數(shù)占位符(格式符)
- %f -->浮點(diǎn)數(shù)占位符
- %c -->長(zhǎng)度是1的字符串占位符(字符占位符)--可以給一個(gè)字符,也可以給字符的編碼值
str2='%s%d%f%c' % ('我是字符串',123,12.4,'k')
print(str2)
結(jié)果:
我是字符串12312.400000k
- %.nf:使用n值限制小數(shù)點(diǎn)后面的小數(shù)位數(shù)(默認(rèn)六位小數(shù))
str3='金額:%.2f元' % (100)
print(str3)
結(jié)果:
金額:100.00元
如果后面沒有加上%,那么這個(gè)字符是一個(gè)普通的字符串
str3='金額:%f元'
print(str3)
結(jié)果:
金額:%f元
- %x和%X -->十六進(jìn)制數(shù)據(jù)占位符
XXX的十六進(jìn)制是XXXXXX
str4='%d的十六進(jìn)制是%x' % (number,number)
print(str4)
結(jié)果:
100的十六進(jìn)制是64
6.格式化輸出
name='XXX'
age=18
print('%s今年%d' % (name,age))
結(jié)果:
XXX今年18
4.字符串相關(guān)方法
字符串相關(guān)方法的通用格式:字符串.函數(shù)()
1.capitalize():將字符串的首字母轉(zhuǎn)換成大寫字母,并創(chuàng)建一個(gè)新的字符串返回。
str1='abc'
new_str=str1.capitalize()
print(new_str)
print('asv'.capitalize())
結(jié)果:
Abc
Asv
2.centre(width,fillchar):將原字符串變成指定的長(zhǎng)度并且內(nèi)容居中,剩下的部分使用指定的字符填充
str1.center(10,'*')
new_str1=str1.center(10,'*')
print(str1,new_str1)
結(jié)果:
abc ***abc****
3.rjust(width,fillchar)右對(duì)齊
new_str1=str1.rjust(10,'0')
print(new_str1)
結(jié)果:
0000000abc
產(chǎn)生學(xué)號(hào) py1805009
number=9 #py1805009
# str(數(shù)據(jù)):將任何其他的數(shù)據(jù)轉(zhuǎn)換成字符串
num_str=str(number)
print(num_str,type(number))
# 讓字符串變成寬度為3,內(nèi)容右對(duì)齊,剩下部分使用'0'填充
new_str=num_str.rjust(3,'0')
print(new_str)
結(jié)果:
9 <class 'int'>
009
4.ljust(width,fillchar):左對(duì)齊
5.字符串1.join(字符串2):在字符串2中的每個(gè)字符串之間插入一個(gè)字符串1
new_str='*'.join('bbb')
print(new_str)
結(jié)果:
b*b*b
5.if語句
1.
if 條件語句:
條件語句結(jié)果為True執(zhí)行的代碼塊
執(zhí)行過程:先判斷條件語句是否為True,如果為True就執(zhí)行if語句后:后面對(duì)應(yīng)的一個(gè)縮進(jìn)的所有的代碼。
為False,就不執(zhí)行冒號(hào)后面一個(gè)縮進(jìn)中的代碼塊,直接執(zhí)行后續(xù)的其他語句。
條件語句:可以是任何有值的表達(dá)式,但是一般是布爾值。
if:關(guān)鍵字
- 練習(xí):用一個(gè)變量保存時(shí)間(50米短跑),如果時(shí)間小于8s,就打印及格
str1='及格'
time=7
if time<8:
print(str1) # 只有條件成立的時(shí)候才會(huì)執(zhí)行
print(time) # 不管if語句的條件是否成立,這個(gè)語句都會(huì)執(zhí)行
結(jié)果:
及格
7
if 條件語句:
語句塊1:
else:
語句塊2
執(zhí)行過程:先判斷條件語是否為True,如果為True就執(zhí)行語句塊1,否則執(zhí)行語句塊2
練習(xí):用一個(gè)變量保存成績(jī),如果成績(jī)大于60,打印及格,否則打印不及格。
str1='及格'
str2='不及格'
score=59
if score>=60:
print(str1)
else:
print(str2)
結(jié)果:
不及格
練習(xí)
1.個(gè)性化消息:
將用戶的姓名存到一個(gè)變量中,并向該用戶顯示一條消息。顯示的消息應(yīng)非常簡(jiǎn)單,如“Hello Eric, would you like to learn some Python today?”。
name='吳紹文'
print('hello '+name+', would you like to learn some Python today?')
結(jié)果:
hello wushaowen, would you like to learn some Python today?
2.調(diào)整名字的大小寫:
將一個(gè)人名存儲(chǔ)到一個(gè)變量中,再以小寫、大寫和首字母大寫的方式顯示這個(gè)人名。
name='wushaowen'
print(name.title())
print(name.upper())
print(name.lower())
結(jié)果:
Wushaowen
WUSHAOWEN
wushaowen
3.名言:
找一句你欽佩的名人說的名言,將這個(gè)名人的姓名和他的名言打印出來。輸出應(yīng)類似于下面這樣(包括引號(hào)):Albert Einstein once said, “A person who never made a mistake never tried anything new.”
name='喬布斯'
str1='“你的時(shí)間有限,所以不要為別人而活?!?
print(name+'說'+str1)
結(jié)果:
喬布斯說“你的時(shí)間有限,所以不要為別人而活。”
4.名言2:
重復(fù)練習(xí)3,但將名人的姓名存儲(chǔ)在變量famous_person 中,再創(chuàng)建要顯示的消息,并將其存儲(chǔ)在變量message 中,然后打印這條消息。
5.剔除人名中的空白:
famous_person='喬布斯'
str1='“你的時(shí)間有限,所以不要為別人而活?!?
message=famous_person+'說'+str1
print(message)
結(jié)果:
喬布斯說“你的時(shí)間有限,所以不要為別人而活?!?
存儲(chǔ)一個(gè)人名,并在其開頭和末尾都包含一些空白字符。務(wù)必至少使用字符組合"\t" 和"\n" 各一次。 打印這個(gè)人名,以顯示其開頭和末尾的空白。然后,分別使用剔除函數(shù)lstrip() 、rstrip() 和strip() 對(duì)人名進(jìn)行處理,并將結(jié)果打印出來。
name='\t\t\twushaowen \n'
print(name.lstrip())
print(name.rstrip())
print(name.strip())
結(jié)果:
wushaowen
wushaowen
wushaowen