01.原碼改化、反碼临梗、補碼
計算機在存儲數(shù)據(jù)的時候,都是以二進制的形式存儲在計算機中(存一個數(shù)的補碼),并且計算機只有加法運算今瀑。
1.原碼:數(shù)據(jù)的二進制形式
正數(shù)的原碼:符號位的值是0,后面是數(shù)值大小
負(fù)數(shù)的原碼:符號位的值是1点把,后面是去掉符號的數(shù)值大小
10----> 1010 原碼:00001010
-10----> 原碼:10001010
2.反碼:
正數(shù)的反碼:反碼和原碼一樣
負(fù)數(shù)的反碼:符號不變橘荠,后面的每一位的值取反(0變1,1變0)
10 ----->反碼:00001010
-10 ---->反碼:11110101
3.補碼:
正數(shù)的補碼:補碼和原碼一樣
負(fù)數(shù)的補碼:反碼+1
10 ---->補碼:00001010
-10 ---->補碼:11110110
02.認(rèn)識字符串:
1.字符串定義:
a.在Python中,用單引號或雙引號括起的字符集就是字符串郎逃。
例如:'hfsig5325~!%^$手動閥'哥童,"ss a56"
b.字符串中的每個獨立的單元我們叫字符。
例如:字符串'abc123'中的'a','b','c','1','2','3'就是字符
name='海賊王'
poem='one'
說明:python中沒有字符類型褒翰,如果要表示字符贮懈,就是用一個長度是1的字符串表示。例如:'a','1',
長度:指的就是字符串中字符的個數(shù)优训,例如:'abc'-長度是3朵你,'ABC123, 你好'-長度是:10
2.轉(zhuǎn)義字符
a.通過\將一些特殊的字符轉(zhuǎn)換成一個具有特殊功能或者特殊意義的字符揣非,就是轉(zhuǎn)義字符抡医。
b.常見的準(zhǔn)義字符:
\n ---換行
\t ---制表符(相當(dāng)于tab鍵)
\\ ---\
\' ---'
在計算字符串長度的時候,轉(zhuǎn)義字符的長度是1
poem='海闊憑魚躍早敬,\n天高任鳥飛'
#海闊憑魚躍
#天高任鳥飛
print(poem)
str1='abc\\bcd'
print(str1) #abc\bcd
str2='abc\'123'
print(str2) #abc'123
str3="abc\"123"
print(str3) #abc"123
str4='abc"123'
print(str4) #abc"123
3.Unicode編碼
將字符轉(zhuǎn)換成指定的數(shù)值忌傻,這個過程就是編碼大脉。(編碼的目的是方便計算機存儲)
將數(shù)值轉(zhuǎn)換成對應(yīng)的符號的過程就是反編碼。(解碼)
a.python中字符的編碼采用的是Unicode編碼
b.Unicode是采用兩個字節(jié)對他一個字符進行編碼(2^15)可將世界上所有的符號進行編碼
c.Unicode包含ASCII碼
1).將Unicode碼轉(zhuǎn)換成字符chr(編碼)
print(chr(0xAC00)) #?
print(chr(0x4E60)) #習(xí)
2).將字符轉(zhuǎn)換成Unicode編碼:ord(字符)
print(ord('廖'),ord('鴻'),ord('業(yè)')) #24278 40511 19994
code1=ord('廖')
code2=ord('鴻')
code3=ord('業(yè)')
print(hex(code1),hex(code2),hex(code3)) #0x5ed6 0x9e3f 0x4e1a
03.獲取字符:
字符串實質(zhì)是一個不可變的序列水孩,序列內(nèi)容是字符镰矿。一旦字符串確定,里面的字符和字符位置就不了變俘种。例如:'abc'
1.怎么獲取單個字符:
python中的字符串秤标,可以通過下標(biāo)(索引)來獲取指定位置上的字符:字符串[索引]
說明:
a.字符串:可以是字符串值,也可以是字符串變量
b.[]:中括號使用固定語法
c.索引:從0開始到字符串長度減1宙刘;-1~-長度(-1對應(yīng)的是最后一個字符)
注意:索引不能越界抛杨,否則會報錯(產(chǎn)生異常)
str1='acbd'#a->0 ,c->1 ,b->2, d->3
print(str1[0]) #a
# print(str1[4]) #IndexError:string index out of range
name='海賊王'
print(name[2]) #王
print(name[-3],name[-2],name[-1]) #海 賊 王
# print(name[-4]) #IndexError:string index out of range
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:6]) #hell
print(str2[2:7]) #llo w
#print(str2[-2:1])注意:下標(biāo)1對應(yīng)的位置玉罐,一定要在下標(biāo)2對應(yīng)的位置前
print(str2[2:-1]) #llo worl
print(str2[3:12])#切片是下標(biāo)可以越界,越界的時候就取臨界值
3. 字符串[下標(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)的位置的前面琅束; 步進如果是負(fù)數(shù)扭屁,那么下標(biāo)1對應(yīng)的字符的位置一定要在下標(biāo)2對應(yīng)的位置的后面。
b.下標(biāo)2對應(yīng)的字符是取不到的涩禀。
str3='helloPython'
print(str3[0:5:2]) #hlo 步進:3 hl
print(str3[-1:5:-1]) #nohty
4.下標(biāo)的省略
切片時料滥,下標(biāo)1和下標(biāo)2是可以省略的。
下標(biāo)1省略:默認(rèn)從開頭獲取(開頭可能是字符串的第一個字符艾船,也可能是字符串最后一個字符)
str4='good good study,day day up'
print(str4[:4]) #good
下標(biāo)2省略:從下標(biāo)1位置開始獲取葵腹,獲取到結(jié)束(結(jié)束可能是字符串的最后,也可能是字符串)
print(str4[3::-1]) #doog
print(str4[:])#good good study,day day up
print(str4[::-1]) #pu yad yad,yduts doog doog
練習(xí):要求將一個字符串中的所有奇數(shù)位上的字符或取出來(位數(shù)從0開始算)
str5='clchcyc'
print(str5[1::2]) #lhy
04.字符串的相關(guān)運算
1. + 運算符
python支持兩個字符串相加,其結(jié)果為兩字符串拼接一起屿岂,成新的字符串践宴。
注意:如果+的一邊是字符串,那么另外一個也必須是字符串爷怀,左右類型需對應(yīng)阻肩。
print('lhy'+'8899') #lhy8899
str1 = 'world'
newstr = 'hello'+' '+str1
print(newstr) #hello world
#print(10+'abc') #IndentationError: unexpected indent
2. * 運算符
字符串*整數(shù):字符串重復(fù)多次
print('abc'*3) #abcabcabc
3.所有的比較運算符
str1='abc'
print('abc'==str1) #True
print(str1 !='ab') #True
4.比較大小
str1>str2; st1<str2
讓str1中的每一位的字符,分別和str2中每一位的字符依次比較霉撵。
直到不同為止磺浙,再看不同字符中誰的編碼值大或小
print('abcd'>'ac')# 一一對應(yīng) 比較大小False
print('廖'>'鴻'>'業(yè)') #False
print(ord('廖'),ord('鴻'),ord('業(yè)')) #24278 40511 19994
5.in和not in
str1 in str2:判斷str1是否在str2中(str2是否包含str1洪囤,str1是否為str2的子串)
結(jié)果是布爾值
print('abc' in 'abcdefg') #True
print('f' not in 'python') #True
6.獲取字符串長度
字符串的長度指的是字符串中字符的個數(shù)
len()內(nèi)置函數(shù)---->計算字符串中字符的個數(shù)
str3='CCTVcctv'
print(len(str3),len('abc 123\n')) #8 8
7.空串
str4 = ''
str5 = ""
print(len(str4),len(str5)) #0 0
print(str3[-1],str3[len(str3)-1]) #v v
8.阻止轉(zhuǎn)義
在字符串最前面添加r/R可以阻止轉(zhuǎn)義
print('a\nb','a\nb\\') #a b a b\
print(len('a\nb\\')) #4
print(r'a\nb',R'a\nb\\')#a\nb a\nb\\
print(len(R'a\nb\\')) #6
練習(xí)
str1= r'\nabc123' 求str1[3]
str2= 'abc123\123' 求:str2[-5]
str1= r'\nabc123'
print(str1[3]) #b
str2= 'abc123\\123'
print(str2[-5]) #3
05.字符串相關(guān)的方法:
python為字符串提供了很多的內(nèi)建函數(shù)
使用方法:字符串.函數(shù)()
注意:這些所有函數(shù)的功能都不會影響原來的字符串,而是產(chǎn)生新的字符串
1.capitalize()
把字符串的第一個字符大寫撕氧,并且其余字母小寫展示瘤缩。
str1= 'cctv'
# 1.capitalize()將字符串的第一個字母大寫
newstr=str1.capitalize()
print(newstr) #Cctv
print('abc'.capitalize()) #Abc
2.center(width,fillchar)
字符串在指定的寬度width內(nèi)居中,剩余的部分用字符fillchar的值來填充
width-整數(shù)伦泥;fillchar-任意字符
print('abc'.center(10,'¥')) #¥¥¥abc¥¥¥¥
3.rjust(width,fillchar)
字符串在指定的寬度width內(nèi)居右剥啤,剩余的部分用字符fillchar的值來填充
1 2 3 4 5 55 77 ---->001 002 003 004 005 055 077
1--->001 11--->011
number='1'
new_id=number.rjust(3,'0')
print(new_id) #001
4.count(str)
判斷str值在原字符串中出現(xiàn)的次數(shù)
str->字符串
print('abcaaa'.count('a')) #4
5.str1.join(str2)
在str2中的每個字符串之間插入一個str1
print('+-'.join('abc')) #a+-b+-c
6.str1.replace(old,new)
將str1中的old全部替換成new
new_str='abcdahulapuyeahj'.replace('a','+')
print(new_str) #+bcd+hul+puye+hj
7.
a.lower(str) : 轉(zhuǎn)換 str 中所有大寫字符為小寫.。
b.upper(str) : 轉(zhuǎn)換 str 中的小寫字母為大寫不脯。
name1='FTrl'
print(name1.lower(),name1.upper()) #ftrl FTRL
8.
Python中有三個去除頭尾字符府怯、空白符的函數(shù),它們依次為:
strip:用來去除頭尾字符防楷、空白符(包括\n牺丙、\r、\t复局、' '冲簿,即:換行、回車亿昏、制表符峦剔、空格)
lstrip:用來去除開頭字符、空白符(包括\n角钩、\r吝沫、\t、' '递礼,即:換行惨险、回車、制表符宰衙、空格)
rstrip:用來去除結(jié)尾字符平道、空白符(包括\n、\r供炼、\t一屋、' ',即:換行袋哼、回車冀墨、制表符、空格)
注意:這些函數(shù)都只會刪除頭和尾的字符涛贯,中間的不會刪除诽嘉。
Day3 作業(yè)
2-3 個性化消息: 將用戶的姓名存到一個變量中,并向該用戶顯示一條消息。顯示的消息應(yīng)非常簡單虫腋,如“Hello Eric, would you like to learn some Python today?”骄酗。
name = 'ftr'
str='are you ok?'
print('hello'+' '+name+'~'+' '+str) #hello ftr~ are you ok?
a='hello '
name = 'ftr '
str='are you ok?'
print('%s%s%s'%(a,name,str)) #hello ftr are you ok?
2-4 調(diào)整名字的大小寫: 將一個人名存儲到一個變量中,再以小寫悦冀、大寫和首字母大寫的方式顯示這個人名趋翻。
name1='FTrl'
print(name1.lower(),name1.upper(),name1.capitalize()) #ftrl FTRL Ftrl
2-5 名言: 找一句你欽佩的名人說的名言,將這個名人的姓名和他的名言打印出來盒蟆。輸出應(yīng)類似于下面這樣(包括引號):Albert Einstein once said, “A person who never made a mistake never tried anything new.”
print('Tagore once said, “We read the world wrong and say that it deceives us.”')
2-6 名言2: 重復(fù)練習(xí)2-5踏烙,但將名人的姓名存儲在變量famous_person 中,再創(chuàng)建要顯示的消息历等,并將其存儲在變量message 中讨惩,然后打印這條消息。
famous_person='Tagore'
message='“We read the world wrong and say that it deceives us.”'
print(famous_person+' once said, '+message)
2-7 剔除人名中的空白: 存儲一個人名寒屯,并在其開頭和末尾都包含一些空白字符荐捻。務(wù)必至少使用字符組合"\t" 和"\n" 各一次。 打印這個人名寡夹,以顯示其開頭和末尾的空白靴患。然后,分別使用剔除函數(shù)lstrip() 要出、rstrip() 和strip() 對人名進行處理,并將結(jié)果打印出來农渊。
name2=' \n FTrl \t '
print(name2)
print(name2.lstrip()) #用來去除開頭字符患蹂、空白符
print(name2.rstrip()) #用來去除結(jié)尾字符、空白符
print(name2.strip()) #用來去除頭尾字符砸紊、空白符
總結(jié):
課堂知識已掌握传于,但還需多鞏固。