一完箩、獲取字符
1.獲取單個(gè)字符
字符串中的每一個(gè)字符都會(huì)對(duì)應(yīng)一個(gè)唯一的下標(biāo)(索引)用來(lái)表示字符在字符串中的位置.
下標(biāo)是從0開(kāi)始依次增加的赐俗,0對(duì)應(yīng)的是第一個(gè)字符;(0~字符串長(zhǎng)度-1)
也可以是從-1開(kāi)始依次減小弊知,-1代表最后一個(gè)字符(-1~-字符串長(zhǎng)度)
例如:'hello' -> h->(0,-5), e->(1-4),l ->(2,-3), l->(3,-2), o->(4,-1)
'\tpytho\u4e00n' -> p->(1, -7)
a. 獲取單個(gè)字符的語(yǔ)法:
字符串[下標(biāo)] - 獲取字符串中指定下標(biāo)對(duì)應(yīng)的字符
b.說(shuō)明
字符串 - 只要結(jié)果是字符串的表達(dá)式都可以阻逮,例如:字符串字面量, 字符串變量
[] - 固定寫(xiě)法
下標(biāo) - 需要獲取的字符對(duì)應(yīng)的下標(biāo)秩彤;注意叔扼,這兒的下標(biāo)不能越界
result = 'how are you!'[0] # 獲取字符串‘how are you事哭!’中下標(biāo)是0的字符,并且賦給變量result
print(result)
print('how are you!'[-4])
# print('how are you!'[12]) # IndexError: string index out of range
str1 = 'good good study! day day up!'
print(str1[10])
2.獲取部分字符(字符串切片)
方法一:
a.語(yǔ)法:
字符串[開(kāi)始下標(biāo):結(jié)束下標(biāo):步長(zhǎng)] - 從開(kāi)始下標(biāo)開(kāi)始瓜富,獲取到結(jié)束下標(biāo)前為止鳍咱。每次下標(biāo)值加上步長(zhǎng)去獲取下一個(gè)
b.說(shuō)明:
字符串 - 只要結(jié)果是字符串的表達(dá)式都可以,例如:字符串字面量与柑, 字符串變量
[] - 固定寫(xiě)法
開(kāi)始下標(biāo)谤辜、結(jié)束下標(biāo) - 下標(biāo)值(這兒的下標(biāo)可以越界)
步長(zhǎng) - 必須是整數(shù)(正數(shù)和負(fù)數(shù)都行),如果步長(zhǎng)是正數(shù)价捧,是從開(kāi)始下標(biāo)開(kāi)始從前往后獲瘸竽睢; 如果步長(zhǎng)是負(fù)數(shù)结蟋,是從開(kāi)始下標(biāo)開(kāi)始從后往前獲雀小;
c.注意:
當(dāng)步長(zhǎng)為正嵌屎,要求開(kāi)始下標(biāo)對(duì)應(yīng)的字符的位置必須在結(jié)束下標(biāo)的字符的位置的前面推正,否則結(jié)果是空串!
當(dāng)步長(zhǎng)為負(fù)宝惰,要求開(kāi)始下標(biāo)對(duì)應(yīng)的字符的位置必須在結(jié)束下標(biāo)的字符的位置的后面植榕,否則結(jié)果是空串!
不管怎么取尼夺,結(jié)束下標(biāo)一定取不到内贮!
str1 = 'helllo python!'
print('結(jié)果1', str1[0:-1:2]) # 從前往后取
print('結(jié)果2', str1[-1:0:-2]) # 從后往前取
print('結(jié)果3', str1[-1:-100:-1]) # 結(jié)束下標(biāo)越界
print('結(jié)果4', str1[100:-100:-1]) # 下標(biāo)越界
練習(xí):獲取一個(gè)字符串中所有下標(biāo)是奇數(shù)的字符(順序)
print(str1[1:100:2])
方法二:(省略步長(zhǎng))
字符串[開(kāi)始下標(biāo):結(jié)束下標(biāo)] - 步長(zhǎng)是1;從開(kāi)始下標(biāo)開(kāi)始到結(jié)束下標(biāo)前為止汞斧,一個(gè)一個(gè)的纫褂簟!
print('shen i was young!'[2:6])
方法三:(省略開(kāi)始下標(biāo)和結(jié)束下標(biāo))
a.省略開(kāi)始下標(biāo)
字符串[:結(jié)束下標(biāo):步長(zhǎng)] - 當(dāng)步長(zhǎng)是正數(shù)粘勒,從字符串的第一個(gè)字符開(kāi)始取到結(jié)束下標(biāo)前為止;當(dāng)步長(zhǎng)是負(fù)數(shù)竞端,從字符串的最后一個(gè)字符開(kāi)始取到結(jié)束下標(biāo)前為止.
b.省略結(jié)束下標(biāo)
字符串[開(kāi)始下標(biāo)::步長(zhǎng)] - 當(dāng)步長(zhǎng)是正數(shù),從開(kāi)始下標(biāo)開(kāi)始取到字符串最后一個(gè)字符為止: 當(dāng)步長(zhǎng)是負(fù)數(shù)庙睡,從開(kāi)始下標(biāo)開(kāi)始取到字符串第一個(gè)字符為止.
str3 = 'shen i was young'
print(str3[:6], str3[:6:-1])
print(str3[2:], str3[2::-1])
print(str3[:])
print(str3[::-1]) # 讓字符串倒序
二事富、字符串相關(guān)運(yùn)算
1.字符串支持的運(yùn)算符: +, *乘陪, >, <, == , != , >= ,<=
python中的字符串支持?jǐn)?shù)學(xué)運(yùn)算符中的+和统台,以及所有的比較運(yùn)算符
a.+ : 字符串1 + 字符串2 - 將字符串1和字符串2拼接在一起產(chǎn)生一個(gè)新的字符串
注意:字符串不能和數(shù)字不能混合相加!
b. : 字符串 * N - N是正整數(shù)啡邑;字符串重復(fù)N次產(chǎn)生一個(gè)新的字符串
new_str = 'abc' + '123'
print(new_str)
name = '張三'
message = '吃飯了嗎?'
print(name+message)
c.比較是否相等
==贱勃, != 可以判斷兩個(gè)字符串是否相等或者不相等
d.字符比較大小:從第一個(gè)字符開(kāi)始依次往后找,找到第一個(gè)不相等的字符對(duì)贵扰,判斷它們的編碼值的大小仇穗, 誰(shuí)的編碼值打,對(duì)應(yīng)的字符串就大戚绕;不會(huì)再往后比較了纹坐!
應(yīng)用:
1.判斷是否是小寫(xiě)字母:'a'<=char<='z'
2.判斷是否是大寫(xiě)字母:'A'<=char<='Z'
3.判斷是否是字母: 'a'<=char<='z' or 'A'<=char<='Z'
判斷一個(gè)字符串中第三個(gè)字符是否是字母
str1 = 'shk23.ssy23'
char = str1[2] # 將第3個(gè)字符取出
print('是否是字母:', 'a' <= char <= 'z' or 'A' <= char <= 'Z')
print('是否是中文:', '\u4e00' <= char <= '\u9fa5')
2.in和not in操作
字符串1 in 字符串2 -> 判斷字符串2中是否包含字符串1(判斷字符串1是否是字符串2的字串)
字符串1 not in 字符串2 -> 判斷字符串2中是否不包含字符串1(判斷字符串1是否不是字符串2的字串)
print('abc' in 'hello abc') # True
print('abc' in 'ahello bc') # False
print('abc' not in 'hello abc') # False
print('abc' not in 'ahello bc') # True
3.len函數(shù)
len(序列) - 獲取序列長(zhǎng)度, 獲取序列中元素的個(gè)數(shù)
len(字符串) - 獲取字符串的長(zhǎng)度(字符的個(gè)數(shù)) -- 結(jié)果是一個(gè)整數(shù)
注意:
一個(gè)可以轉(zhuǎn)移的轉(zhuǎn)義字符的長(zhǎng)度是1舞丛!
一個(gè)編碼字符的長(zhǎng)度是1耘子!
一個(gè)空格字符的長(zhǎng)度是1!
手動(dòng)在鍵盤(pán)上按一個(gè)tab球切,一般是4個(gè)空格拴还,長(zhǎng)度是4;一個(gè)\t來(lái)表示的tab,長(zhǎng)度是1
print(len('abc'))
str1 = input('請(qǐng)輸入:')
last_char = str1[len(str1)-1]
print(last_char)
str1 = ' abc'
str2 = '\tabc'
print(str1)
print(str2)
print(len(str1), len(str2))
三欧聘、格式字符串
1.什么是格式字符串:
在字符串中通過(guò)格式占位符來(lái)代替字符串中變化的部分,然后在后面通過(guò)數(shù)據(jù)或者變量確定變化
語(yǔ)法:
包含占位符的字符串 % (值1端盆, 值2怀骤, 值3.....)
說(shuō)明:
占位符 - %s (字符串)
%d (整數(shù))
%f (小數(shù)) (%.nf 保留小數(shù)點(diǎn)后n位小數(shù))
%c (字符) (可以將數(shù)字轉(zhuǎn)換成字符)
% - 固定寫(xiě)法
() - 固定寫(xiě)法,字符串中只有一個(gè)占位符的時(shí)候焕妙,這個(gè)()可以省略
括號(hào)中的值 - 值和占位符要一一對(duì)應(yīng)(個(gè)數(shù)蒋伦、類(lèi)型、位置都要對(duì)應(yīng))
name = input('姓名:')
age = 18
sex = '男'
message = '我叫%s焚鹊,今年%d痕届,性別:%s,月薪%.1f萬(wàn) 字符:%c' % (name, age, sex, 1.5, 97)
print(message)
練習(xí):輸入一個(gè)字符串末患,用一個(gè)變量保存輸入的字符串的相關(guān)信息;XXX的長(zhǎng)度是XX研叫,最后一個(gè)字符是X
例如:輸入abc -> abc的長(zhǎng)度是3,最后一個(gè)字符是c
input_str = input('輸入一個(gè)字符串')
message = '%s的長(zhǎng)度是%d,最后一個(gè)字符是%c' % (input_str, len(input_str), input_str[-1])
print(message)
類(lèi)型轉(zhuǎn)換
1.基本語(yǔ)法
語(yǔ)法:
類(lèi)型名(數(shù)據(jù)) - 將指定數(shù)據(jù)轉(zhuǎn)換從指定類(lèi)型
說(shuō)明:
類(lèi)型名 - 任何python支持的璧针,或者自定的類(lèi)型都可以
數(shù)據(jù) - 需要轉(zhuǎn)換的對(duì)象(類(lèi)型不同要求可能不一樣)
2.轉(zhuǎn)換實(shí)例
int(數(shù)據(jù)) -> 將其他數(shù)據(jù)轉(zhuǎn)換成整型
float(數(shù)據(jù)) -> 將其他數(shù)據(jù)轉(zhuǎn)換成浮點(diǎn)型
bool(數(shù)據(jù)) —> 將其他類(lèi)型轉(zhuǎn)換成布爾
str(數(shù)據(jù)) —> 將其他數(shù)據(jù)轉(zhuǎn)換成字符串
age = input('年齡:')
print(type(age), age)
print('是否能進(jìn)入網(wǎng)吧:', int(age) >= 18)
1.轉(zhuǎn)換成整型
a = int(12.9) # 浮點(diǎn)數(shù)可以轉(zhuǎn)換成整數(shù)嚷炉,直接保留整數(shù)部分
b = int(True) # 布爾可以轉(zhuǎn)化成整數(shù),True -> 1;False -> 0
c = int('12') # 只有去掉字符串的引號(hào)后本身就是一個(gè)整數(shù)的字符串才能轉(zhuǎn)換成整數(shù)
print(a, b, c)
2.轉(zhuǎn)換成浮點(diǎn)型
a = float(100) # 所有整數(shù)都可以轉(zhuǎn)換成浮點(diǎn)數(shù)探橱,在后面加.0
b = float(True) # 布爾可以轉(zhuǎn)化成浮點(diǎn)數(shù)申屹,True -> 1.0;False -> 0.0
c = float('12') # 去掉引號(hào)后本身就是一個(gè)數(shù)字的字符串能轉(zhuǎn)換成浮點(diǎn)型
print(a, b, c)
3.轉(zhuǎn)換成布爾類(lèi)型
python中所有的數(shù)據(jù)都可以轉(zhuǎn)換成布爾
所有為空為0的值都會(huì)轉(zhuǎn)換成False,其他都是True
a = bool(0)
b = bool(0)
c = bool('')
print(a, b, c)
4.轉(zhuǎn)換成字符串類(lèi)型
python中所有的數(shù)據(jù)都可以轉(zhuǎn)換成字符串隧膏,而且轉(zhuǎn)換的時(shí)候就是單純的在最外面加引號(hào)
a = str(100)
print(a)
練習(xí):輸入三個(gè)數(shù)字哗讥,求三個(gè)數(shù)的和
num1 = input('請(qǐng)輸入第一個(gè)數(shù)字:')
num2 = input('請(qǐng)輸入第二個(gè)數(shù)字:')
num3 = input('請(qǐng)輸入第三個(gè)數(shù)字:')
print('三個(gè)數(shù)字的和為:', float(num1)+ float(num2)+float(num3))