作業(yè)
在做下面的每個練習(xí)時贮配,都編寫一個獨立的程序讳推,并將其保存為名稱類似于name_cases.py的文件
2-3 個性化消息: 將用戶的姓名存到一個變量中磺送,并向該用戶顯示一條消息躯泰。顯示的消息應(yīng)非常簡單栈戳,如“Hello Eric, would you like to learn some Python today?”厨剪。
name1='uuz'
message='Hello %s,would you like to learn some Python today?'%(name1)
print(message)
輸出顯示:
Hello uuz,would you like to learn some Python today?
2-4 調(diào)整名字的大小寫: 將一個人名存儲到一個變量中哄酝,再以小寫、大寫和首字母大寫的方式顯示這個人名祷膳。
name2='LeBron James'
print(name2.lower())
print(name2.upper())
print(name2.capitalize())
輸出顯示:
lebron james
LEBRON JAMES
Lebron james
2-5 名言: 找一句你欽佩的名人說的名言陶衅,將這個名人的姓名和他的名言打印出來。輸出應(yīng)類似于下面這樣(包括引號):Albert Einstein once said, “A person who never made a mistake never tried anything new.”
name3='William Shakespeare'
word='"To be or not to be,this is a question."'
print(name3,'once said,',word)
輸出顯示:
William Shakespeare once said, "To be or not to be,this is a question."
2-6 名言2: 重復(fù)練習(xí)2-5直晨,但將名人的姓名存儲在變量famous_person 中搀军,再創(chuàng)建要顯示的消息,并將其存儲在變量message 中勇皇,然后打印這條消息罩句。
famous_person='William Shakespeare'
message='"To be or not to be,this is a question."'
print(famous_person+' once said,'+message)
輸出顯示:
William Shakespeare once said, "To be or not to be,this is a question."
2-7 剔除人名中的空白: 存儲一個人名,并在其開頭和末尾都包含一些空白字符敛摘。務(wù)必至少使用字符組合"\t" 和"\n" 各一次门烂。 打印這個人名,以顯示其開頭和末尾的空白兄淫。然后屯远,分別使用剔除函數(shù)lstrip() 、rstrip() 和strip() 對人名進行處理捕虽,并將結(jié)果打印出來慨丐。
name5='\t\totaku\n\n'
print(name5)
print(name5.lstrip())
print(name5.rstrip())
print(name5.strip())
總結(jié)
一.認識字符串
1.什么是字符串
a.用單引號或者雙引號括起來的字符集就是字符串
b.字符串中每個獨立的單元我們叫字符,
例如:字符串'abc123'中的'a','b','c','1','2','3'就是字符
2.轉(zhuǎn)義字符
說明:python中沒有字符類型泄私,如果要表示字符咖气,就是用一個長度是1的字符串表示
長度:指的就是字符串中字符的個數(shù),例如:'abc' - 長度是3挖滤,'abc123, 你好' -長度是10
a.通過\把一些特殊的字符轉(zhuǎn)換成一個具有特殊功能或者特殊意義的字符崩溪,就是轉(zhuǎn)義字符。
b.常見的轉(zhuǎn)義字符:
\n -- 換行
\t -- 制表符(相當(dāng)于tab鍵)
\\ -- \
\' -- '
在計算字符串長度的時候斩松,轉(zhuǎn)義字符的長度是1伶唯。
3.Unicode編碼
a.python中字符的編碼采用的是Unicode編碼
b.Unicode是采用兩個字節(jié)對一個字符進行編碼(2^15),能夠?qū)⑹澜缟纤械姆栠M行編碼
c.Unicode編碼中包含了ASCII碼
將字符轉(zhuǎn)換成指定的數(shù)值惧盹,這個過程就是編碼乳幸。(編碼的目的是方便計算機存儲)
將數(shù)值轉(zhuǎn)換成對應(yīng)的符號的過程就是反編碼(解碼)
1.將Unicode碼轉(zhuǎn)換成字符:chr(編碼)
print(chr(0xA001))
2.將字符轉(zhuǎn)換成Unicode編碼:ord(字符)
code1=ord('劉')
code2=ord('詩') # 結(jié)果是十進制的
code3=ord('意')
print(hex(code1),hex(code2),hex(code3))
二.獲取字符
字符串實質(zhì)是一個不可變的序列瞪讼,序列內(nèi)容是字符。
一旦字符串確定粹断,那么里面的字符和字符位置就不可變了符欠,例如:'abc'
1.怎么獲取單個字符
python中的字符串,可以通過下標(biāo)(索引)來獲取指定位置上的字符:字符串[索引]
說明:
a.字符串:可以是字符串值瓶埋,也可以是字符串變量
b.[]:中括號是固定語法
c.索引:從0開始到字符串長度減1
-1 ~ -長度(-1對應(yīng)的最后一個字符希柿,-2對應(yīng)的是倒數(shù)第二個字符)
注意:索引不能越界,否則會報錯(產(chǎn)生異常)
str1='abcd' # a->0,b->1,c->2,d->3
2.獲取部分字符(獲取子串) —— 切片
字符串[下標(biāo)1:下標(biāo)2] : 從下標(biāo)1開始养筒,獲取到下標(biāo)2前的所有的字符
從下標(biāo)1開始曾撤,每次下標(biāo)值加1,一直加到下標(biāo)2前
str2='hello world'
print(str2[0:4]) # hell
print(str2[2:7]) # llo w
print(str2[2:-1]) # llo worl
print(str2[3:12]) # 切片時下標(biāo)可以越界晕粪,越界的時候就取臨界值
字符串[下標(biāo)1:下標(biāo)2:步進]
從下標(biāo)1開始獲取挤悉,每次下標(biāo)值增加步進值,每增加一次取一個字符巫湘,直到取到下標(biāo)2為止
注意:
a.步進如果是正數(shù)装悲,那么下標(biāo)1對應(yīng)的字符一定要在下標(biāo)2對應(yīng)的位置后面
b. 步進是負數(shù),那么下標(biāo)1對應(yīng)的位置一定要在下標(biāo)2對應(yīng)的位置的前面
str3='helloPython'
print(str3[0:5:2]) # hel 步進:3 hl
print(str3[-1:5:-1]) # nohty
下標(biāo)的省略
切片的時候尚氛,下標(biāo)1和下標(biāo)2是可以省略的
下標(biāo)1省略:默認從開頭開始獲取(開頭可能是字符串的第一個字符诀诊,也可能是字符串的最后一個)
str4='good good study,day day up'
print(str4[:4])
print(str4[:4:-1])
下標(biāo)2省略:從下標(biāo)1位置開始獲取,獲取到結(jié)束(結(jié)束可能是字符串的最后一個字符怠褐,也可能是字符串的第一個字符)
print(str4[1:])
print(str4[3::-1])
print(str4[:]) # good good study,day day up
print(str4[::-1]) # pu yad yad,yduts doog doog
str5='123456789'
print(str5[1::2])
三.字符串的相關(guān)運算
1. + 運算符
字符串1+字符串2:
python支持兩個字符串相加畏梆,其效果就是將兩個字符串拼接在一起產(chǎn)生一個新的字符串您宪。
print('abc'+'123')
str1='world'
newstr='hello'+' '+str1
print(newstr)
2.* 運算符
字符串*整數(shù):字符串重復(fù)多次
print('abc'*3)
3.所有的比較運算符
str1='abc'
print('abc'=='abc')
print(str!='ab')
比較大小
str1>str2; str1<str2
讓str1中的每一位的字符奈懒,分別和str2中每一位的字符依次比較。
直到不同為止宪巨,再看不同字符中誰的編碼值大或者小磷杏。
print('abcd'>'ac')
4.in 和 not in
str1 in str2:判斷str1是否在str2中(str2是否包含str1,;str1是否是str2的子串)
print('abc' in 'a1b2cdefg')
print('f' not in 'python')
5.獲取字符串長度
字符串的長度捏卓,指的是字符串中字符的長度
len()內(nèi)置函數(shù)
str3='project'
print(len(str3),len('abc 123\n'))
補充:空串
str4=''
str5=""
print(len(str5))
len1=len(str3) # len1=7
index=len1 -1 # 6
print(str3[-1],str3[len(str3)-1])
6.阻止轉(zhuǎn)義
在字符串的最前面添加r/R可以阻止轉(zhuǎn)義
print('a\nb','a\nb\\')
print(len('a\nb\\')) # 4
print(r'a\nb',R'a\nb\\')
print(len(r'a\nb\\')) # 6
print('a\\nb\\\\') # a\nb\\
print('\\\n\\') # \換行\(zhòng)
print(r'\\\n\\') # \\\n\\
練習(xí)
str1=r'\nabc123' 求:str1[3] b
str2='abc123\123' 求:str2[-5] 3
四.字符串相關(guān)的方法
python為字符串提供了很多的內(nèi)建函數(shù)
字符串.函數(shù)()
注意:這些所有的函數(shù)的功能都不會影響原來的字符串极祸,而是產(chǎn)生一個新的字符串
str1='hello python'
1.capitalize() 將字符串的第一個字符轉(zhuǎn)換為大寫
newstr=str1.capitalize()
print(newstr)
print('abc'.capitalize())
2.center(width,fillchar)
讓字符串變成width對應(yīng)的長度,原內(nèi)容居中怠晴,剩余的部分使用fillchar的值來填充
width-整數(shù)遥金; fillchar-任意字符
print('abc'.center(10,'*'))
3.rjust(width,fillchar)
讓字符串變成width對應(yīng)的長度,原內(nèi)容靠右蒜田,剩余的部分使用fillchar的值來填充
number='12'
new_id=number.rjust(4,'0')
print(new_id)
4.原字符串.count(str)
判斷str值在原字符串中出現(xiàn)的次數(shù)
str-> 字符串
print('abcabaa'.count('ab'))
5.str1.join(str2)
在str2中的每個字符串之間插入一個str1
print('-+'.join('abc'))
6.str1.replace(old,new)
將str1中old全部替換成new
new_str='abcdahulapuyeahj'.replace('a','+')
7.str1.isalnum()
在str1中至少有一個字符并且所有字符都是字母或數(shù)字則返回True,否則返回False
print('abc'.isalnum())
8.str1.isalpha()
如果str1至少有一個字符并且所有字符都是字母則返回True稿械,否則返回False
print('abc'.isalpha())
print('a12c'.isalpha())
9.str1.isdecimal()
如果str1只包含十進制數(shù)字則返回True,否則返回False
print('23'.isdecimal())
print('23a'.isdecimal())
10.str1.isdigit()
如果str1只包含數(shù)字則返回True,否則返回False
print('123'.isdigit())
print('a123'.isdigit())
11.str1.isnumeric()
如果str1中只包含數(shù)字字符,則返回True冲粤,否則返回False
print('123'.isnumeric())
print('123d'.isnumeric())
12.str1.isspace()
如果str1中只包含空格美莫,則返回True页眯,否則返回False
print(' '.isspace())
print('a b'.isspace())
13.str1.istitle();str1.title()
如果str1是標(biāo)題化的(見 title())則返回True否則返回 False
返回"標(biāo)題化"的str1,就是說所有單詞都是以大寫開始,其余字母均為小寫(見 istitle())
print('The Sun'.istitle())
print('the sun'.title())