1.含義
- 使用單引號或雙引號括起來的字符集就是字符串。由一串字符構(gòu)成(數(shù)字、字母、符號)
'123' 'abcd' '這是漢字' #這些都是字符串
str1 = '盡誅宵小天策義\n' #將一個字符串賦給變量
str2 = '長槍獨守大唐魂\n'
- 轉(zhuǎn)義字符:當(dāng)想要表示一些字符,但是這些字符是系統(tǒng)語法的一部分,含有特殊功能。
則可以用轉(zhuǎn)義字符達(dá)成效果
這些都是轉(zhuǎn)義字符:
\ --> '
\\ --> \
\n --> 換行
\t --> 制表符
\" --> "
- 阻止轉(zhuǎn)義:\\在轉(zhuǎn)義的時候輸出只有一個\,
在引號前加r(R),可以阻止轉(zhuǎn)義(使得\的功能失效),使得字符串輸出變成 \\。
str1 = r"\\1\n"
print(str1)
輸出:
\\1\n
- python中字符串的字符是Unicode編碼。
Unicode編碼:使用16位對一個字符進(jìn)行編碼(ASCII是8位的)
Unicode編碼包含了ascll編碼,可以表示世界上所有的語言和符號
? ? ? ?a.獲取一個字符的Unicode編碼
print(hex(ord('孫')),hex(ord('建')),hex(ord('康')))
print(ord('1'))
輸出
0x5b59 0x5efa 0x5eb7
49
? ? ? ?b.將Unicode碼轉(zhuǎn)換成字符
print(chr(0x4EAE)) #查看unicode代碼為0x4EAE對應(yīng)的漢字
輸出
亮
字符串比較大小,從字符開始依次往后比較,直到遇到的字符不一樣為止
比較字符大小的時候,實質(zhì)比的是他們的編碼大小,結(jié)果為布爾值
print('abc' > 'b') #------>False
print('Zbc' > 'aa') #---->False
2.字符串中字符的獲取
python的字符,實質(zhì)是一個有序的字符序列。
-
獲取字符串的長度:(長度-->字符串中字符的個數(shù))
注:轉(zhuǎn)義字符的長度為1
#len()是python內(nèi)置的獲取一個序列長度的內(nèi)置函數(shù)
count_num = len('abc\n123')
print(count_num) #------>count_num == 7
-
通過下標(biāo)獲取字符串中的某一個字符
字符串中每個字符都對應(yīng)一個下標(biāo)(索引),我們可以通過索引值去獲取固定的字符.字符串:[索引值]
'abc' ---> a:0 , b:1 , c:2
str1 = 'abc'
print(str1[1]) # 獲取 b
print(str2[num-1]) #獲取 p的2種方法
print(str2[-1]) #獲取 p的2種方法
str2 = 'goog good study\nday day up'
num = len(str2) #獲取字符串str2的長度
獲取字符的時候,索引值(下標(biāo))不能超過索引(下標(biāo))的范圍,否則會報錯index out of range
-
獲取字符串中的部分字符。字符串:[開始下標(biāo):結(jié)束下標(biāo)]
獲取從開始下標(biāo)到結(jié)束下標(biāo)的字符(----具體范圍為[開始下標(biāo),結(jié)束下標(biāo))-----)
要求:開始和結(jié)束下標(biāo)都有值,開始下標(biāo)對應(yīng)的字符,要在結(jié)束下標(biāo)對應(yīng)的字符前面。獲取部分字符的方式多種多樣,需要仔細(xì)研究實現(xiàn)的原理。
str3 = 'hello python'
獲取python
print(str3[6:12])
print(str3[-6:12])
print(str3[6:]) #視情況可選擇性的省略開始下標(biāo)和結(jié)束下標(biāo)
獲取hello
print(str3[:5]) #視情況可選擇性的省略開始下標(biāo)和結(jié)束下標(biāo)
獲取整個字符串
print(str3[:])
字符串[開始下標(biāo):結(jié)束下標(biāo):步進(jìn)]------>步進(jìn)默認(rèn)為1可省略,不為1的時候:依次間隔取
print(str3[::2]) #每2個字符取一次
print(str3[::-1]) #倒序
輸出
python
python
python
hello
hello python
hlopto
nohtyp olleh
3.字符串運算
- a. 字符串拼接 ,使用+實現(xiàn),注意: + 兩邊數(shù)據(jù)類型必須要一樣的
str1 = 'hello' + ' ' + 'python' #---->str1 == 'hello python'
- b. 讓字符串重復(fù)
字符串*整數(shù),讓字符串重復(fù)n次
str2 = 'abc' *3
print(str2) #---->str2 == abcabcabc
- c. in 和 not in
字符串1 in 字符串2:判斷字符串1是否在字符串2中。結(jié)果是布爾值
result = 'aa' in 'abaac'
print(result) #----->True
字符串1 not in 字符串2 :判斷字符串1是否不在字符串2中。結(jié)果是布爾值
result = 'aa' not in 'abaac'
print(result) #---->False
- d. 格式字符串
格式:'%s%s'%(值) -----> '占位符1占位符2'%(值1,值2)
str1 = 'abc%s123' % ('>>>')
print(str1)
%s ---->字符串占位符
%d---->整數(shù)占位符
%f---->浮點占位符
%c---->字符(長度是1的字符串)占位符
str2 = '%s%d%c%f' % ('sjk',100,'a',2.13)
print(str2)
使用%.nf控制小數(shù)點后的位數(shù)(默認(rèn)是6位小數(shù))
str2 = '這是一個2位小數(shù):%.2f' % (2.13000)
print(str2)
%x和%X都是16進(jìn)制的占位符(分大寫小寫)
num = 255
str4 = '%x, %X' % (num,num)
print(str4)
# 輸出
ff, FF
- e.格式化輸出
賦給變量名字,年齡最后格式化輸出
name = 'sjk'
age = 18
print('我是%s,我今年%d歲' % (name,age))
- f.去進(jìn)制符號
print('格式化無符號八進(jìn)制:%o,十六進(jìn)制%x,十六進(jìn)制大寫:%X' % (0o76,0xff,0Xff)) #---->分別去掉各進(jìn)制的前置符號
print('100的八進(jìn)制數(shù)為:%o' % (100)) #結(jié)果--->100的八進(jìn)制數(shù)為:144
4.字符串相關(guān)內(nèi)建函數(shù)
在python中,有許多關(guān)于字符串的內(nèi)建函數(shù),這是系統(tǒng)預(yù)先封裝好了的函數(shù),可以直接調(diào)用,免去自己寫算法的麻煩。
| 函數(shù) | 作用 |
|---|---|
| strip | 切片函數(shù) |
| ……未完待續(xù) | ……未完待續(xù) |
5.條件語句
即if語句。條件語句:可以是任何有值的表達(dá)式,但是一般是布爾值。
執(zhí)行過程:先判斷條件語句是否為True,如果為True就執(zhí)行if語句后:后面對應(yīng)的一個縮進(jìn)的所有的代碼。
為False,就不執(zhí)行:后面一個縮進(jìn)中的代碼塊,直接執(zhí)行后續(xù)的其他語句
結(jié)構(gòu)
#if 條件語句:
#條件語句結(jié)果為True執(zhí)行的代碼塊
if True:
print('代碼1')
print('代碼2')
print('代碼3')
#條件語句結(jié)果為False執(zhí)行的代碼塊
else:
print('代碼5')
print('代碼4') #---->由于縮進(jìn)的原因,此行的代碼不屬于if語句,是一個單獨的語句
實戰(zhàn)練習(xí):
判斷一個學(xué)生成績是否合格(60分)先判斷條件語句是否為True,如果為True就執(zhí)行語句塊1,輸出“合格”。
否則執(zhí)行語句塊2,輸出“不合格!太弱了”
score = 50
if score > 60:
print('合格')
else:
print('不合格!太弱了')