python-day3

字符串

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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Java 簡(jiǎn)介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計(jì)...
    子非魚_t_閱讀 4,619評(píng)論 1 44
  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,596評(píng)論 0 13
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 4,202評(píng)論 1 10
  • 我曾以為,等我穿過山河,一定有我心之所向,只是那個(gè)動(dòng)心的人,一聲不吭,去了另一個(gè)遠(yuǎn)方。 一是個(gè)孤單的字,它靜靜地橫...
    DrJoseph閱讀 454評(píng)論 0 0
  • 01 周一的時(shí)候,歪姐寫了一篇愛焦慮的人都短命嗎? | 歪理的推文,不少朋友跟我吐槽。 A說:“真的焦慮,好煩!你...
    歪理心說閱讀 391評(píng)論 0 4

友情鏈接更多精彩內(nèi)容