03 基本數(shù)據(jù)類型
1.幾個概念
1.1 表達式
定義:表達式膀钠,就是由數(shù)字杖刷、算符斤儿、數(shù)字分組符號(括號)剧包、自由變量和約束變量等恐锦,以能求得數(shù)值的有意義排列方法所得的組合。例如:1+12*4
表達式特點:
(1)表達式一般僅僅用于計算一些結(jié)果疆液,不會對程序產(chǎn)生實質(zhì)性的影響
(2)如果在交互模式中輸入一個表達式一铅,解釋器會自動將表達式的結(jié)果輸出
1.2 語句
定義:一個語法上自成體系的單位,它由一個詞或句法上有關(guān)連的一組詞構(gòu)成枚粘。在程序中馅闽,語句一般是要完成某些功能,如print();input();for XXX in yyy......
語句的執(zhí)行一般會對程序產(chǎn)生一定的影響,在交互模式中不一定會輸出語句的執(zhí)行結(jié)果馍迄。
代碼塊:Python程序是由代碼塊構(gòu)造的福也。塊是一個python程序的文本,是作為一個單元執(zhí)行的攀圈。一個模塊暴凑,一個函數(shù),一個類赘来,一個文件等都是一個代碼塊捞魁。
而作為交互方式輸入的每個命令都是一個代碼塊胧弛。例如:條件控制語句凹耙。
pass語句:python中的空語句填物,只是用來保證我們程序結(jié)構(gòu)的完整性(沒想好怎么寫的時候)
1.3程序
定義:程序就是由一條一條的語句和一條一條的表達式構(gòu)成的,表達式和語句是構(gòu)成程序的最小基本單位幌缝。
1.4函數(shù)
(1)定義:函數(shù)就是一種語句灸促,函數(shù)專門用來完成特定的功能。函數(shù)形如:xxx()? 涵卵, 比如:max() min() len() print() input()
(2)函數(shù)的分類:
內(nèi)置函數(shù) : 或者稱為內(nèi)建函數(shù)浴栽,就是由語法規(guī)定存在的函數(shù),這些函數(shù)轿偎,包含在編譯器的運行時庫中典鸡,程序員不比單獨書寫代碼實現(xiàn)它,只需要調(diào)用既可坏晦。(詳見官網(wǎng))
自定義函數(shù) ?:? ?由程序員自主的創(chuàng)建的函數(shù) ?當我們需要完成某個功能時萝玷,就可以去調(diào)用內(nèi)置函數(shù),或者自定義函數(shù)昆婿。
(3)函數(shù)的2個要素:
參數(shù):函數(shù)中括號的內(nèi)容间护,可以有一個,可以有多個挖诸,若有多個,用英文逗號,隔開法精。比如print(a,b)多律。也可以沒有內(nèi)容痴突。
返回值? ?:就是函數(shù)返回的結(jié)果。
2. 標識符
2.1 關(guān)鍵字
python語言的組成:
(1)關(guān)鍵字(2)標識符(3)注釋(4)變量和數(shù)值(5)運算符(6)語句(7)函數(shù)(8)序列
定義:所謂的關(guān)鍵字狼荞,就是python一些具有特殊功能的標識符辽装,是python已經(jīng)使用的了,所以不允許開發(fā)者自己定義和關(guān)鍵字相同的名字的標識符 相味。
2.2 標識符概念
(1)定義:開發(fā)人員在程序中自定義的一些符號和名稱拾积。標識符是自己定義的,如變量名 、函數(shù)名丰涉、類名等拓巧。由26個英文字母大小寫,數(shù)字 0-9 符號 _$ 組成
(2)標識符的規(guī)則:
#標識符中可以包含字母一死、數(shù)字肛度、下劃線_,但是不能使用數(shù)字開頭投慈,例如:name1 name_1 _name1 1name(不行)
#Python中不能使用關(guān)鍵字和保留字來作為標識符
(3)命名方式:
#駝峰命名法
小駝峰式命名法: 第一個單詞以小寫字母開始承耿;第二個單詞的首字母大寫,例如:myName伪煤、aDog
大駝峰式命名法: 每一個單字的首字母都采用大寫字母加袋,例如:FirstName、LastName
#下劃線命名法
不過在程序員中還有一種命名法比較流行抱既,就是用下劃線“_”來連接所有的單詞职烧,比如 get_url ?buffer_size
3. 基本數(shù)據(jù)類型
定義:數(shù)據(jù)類型,指的就是變量的值的類型蝙砌。
3.1 整數(shù)和小數(shù)
整數(shù) : 所有整數(shù)? ? 例如 : a = 1 b = 100 c =999? 都是int類型阳堕。如果數(shù)值太大,可以隔三位用下劃線_分開
小數(shù)常量 : 所有小數(shù)? ? ?例如 a = 1.2 b=6.66? 用float類型表示择克。
浮點型運算恬总,特點是會保留近似值,是因為二進制轉(zhuǎn)換成十進制的原因肚邢,比如0.3=0.30000000000000004
3.2 布爾值和空值
(1)布爾值:?只有2個值一個是真值True 一個是假值False壹堰,布爾常量是做邏輯判斷的。
#########? 它們也屬于特殊的整型骡湖,True相當于1贱纠,F(xiàn)alse相當于0
(2)None常量:只有一個數(shù)值就是None 也就是空值
4 變量
4.1 變量的概念
(1)定義:變量是計算機內(nèi)存中的一塊區(qū)域,存儲規(guī)定范圍內(nèi)的值响蕴,值可以改變谆焊,通俗的說變量就是給數(shù)據(jù)起個名字。
(2)變量命名規(guī)則:
變量名由字母浦夷、數(shù)字辖试、下劃線組成要符合標識符的命名規(guī)范:數(shù)字不能開頭辜王,不能使用關(guān)鍵字。
#注意 : 兩個對象相等罐孝,和兩個對象是同一個對象呐馆,是兩個概念,即:兩個對象的值相等莲兢,不代表他們是同一個對象汹来,例如:
d1 = {'Jerry':'Python'}? ? ? ?#字典
import copy
d2 = copy.deepcopy(d1)? ? # 把d1的值copy給d2
print(d2)? ? ? ? ? ? # 結(jié)果是:{'Jerry': 'Python'}
print(id(d1),id(d2))? ? #返回的結(jié)果是兩個不同的對象id:2159738099816 2159738100616,說明是不一樣的對象
print(d1==d2)? ? #返回的結(jié)果:True改艇,說明兩個對象的值是相等的
4.2變量的運算
變量的運算就是正常的四則運算 ,需要注意的是:在運算過程中含有浮點數(shù)收班,那么它返回的結(jié)果就是一個浮點數(shù)類型。
5 字符串
5.1 什么是字符串
(1)定義:字符串是由數(shù)字遣耍、字母闺阱、下劃線組成的一串字符
(2)注意:
#單引號和雙引號不能混合使用
#Python中用一對單引號,或者一對雙引號包裹的內(nèi)容就是字符串
#嵌套:"Let's play!"
5.2 轉(zhuǎn)義字符
(1)定義:轉(zhuǎn)義字符是一種特殊的字符常量舵变,告訴解釋器它不是用于包裹字符串的酣溃。轉(zhuǎn)義字符以反斜線"\"開頭,后跟一個或幾個字符。轉(zhuǎn)義字符具有特定的含義,不同于字符原有的意義,故稱“轉(zhuǎn)義”字符
(2)總結(jié):
\t 表示制表符纪隙,跳到下一個Tab的位置
\n 表示換行符赊豌,寫在新一行開頭
\\ 表示反斜杠
\' ?表示 '? ??
\ '' 表示 ''
......
5.3 長字符串
(1)定義:長字符串,又叫做文檔字符串绵咱,我們使用三重引號來表示一個長字符串''' '''
(2)注意:三重引號可以換行碘饼,并且會保留字符串中的格式,
例如:
love='''我愛你悲伶,
趙云'''
print(love)
結(jié)果:
我愛你艾恼,
趙云
5.4 格式化字符串
第一種格式化字符串 拼串
用加號+拼接字符串(其他類型【如整數(shù)】和字符串不能拼接),用于如:拼接url? ? ?url = 'https:' + /xxx/xxxx.img
舉例1:
>>>'6'+'6'
'66'
舉例2:
s = 'hello'
print('s = '+ s)? ? ?
s = hello
第二種格式化字符串 參數(shù)傳遞
print函數(shù)里面可以有多個參數(shù)麸锉,參數(shù)之間就是用逗號,連接
舉例1:
print('abc','nba')? ?
abc nba
舉例2:
s ='hello'
print('s = ',s)
s = hello
第三種格式化字符串 占位符
%s 字符串占位
%f 浮點數(shù)占位
%d 整數(shù)占位
舉例1:
>>>'I love %s'%'study'
'I love study'
舉例2:
>>>a='I love %s'
>>>a % 'python'
'I love python'
舉例3:
print('s = %s' % 'hello')
s = hello
舉例4:
s ='s = %s, s2 = %s'?%?('hello','python')? ? #若%后只有一個字符串钠绍,或者有兩個但是沒有放在元組()里,就會報錯TypeError: not enough arguments for format string
print(s)
s = hello, s2 = python
舉例5:
a='云今天跑了 %d 公里花沉,%s竟然比他跑得更多柳爽。'%(4,'信''和''守約')
print(a)
云今天跑了 4 公里,信和守約竟然比他跑得更多碱屁。
舉例6:
a='云今天跑了 %d 公里磷脯,比他跑得更多的竟然是%s'%(4,'信''和''守約''。')
print(a)
云今天跑了 4 公里娩脾,比他跑得更多的竟然是信和守約赵誓。
第四種格式化字符串? ? f+str &?r+str? & str.format
(1) f+str? ? (即f'{變量1}{變量2}......')
舉例1:
baby1='趙云'
baby2='百里守約'
x=f'王者榮耀里,我愛{baby1},也愛{baby2}俩功。'
print(x)
#王者榮耀里隘冲,我愛趙云,也愛百里守約绑雄。
舉例2:
babe='趙云'
h=f'i love {babe}'
print(h)
i love趙云
(2)r+str (正則表達式*除外)
舉例1:
x=r'python'? ?
print(x)
python
舉例2:
x=r'python','suck'
print(x)
('python', 'suck')
(3) str.format
錯誤例子:
s = 'i like {a}'
a = s.format('python')
print(a)
不行,沒找到a奥邮,KeyError: 'a'
正確例子:
s = 'i like {}'
a = s.format('python')
print(a)
i like python
或者花括號里多加一個0 也可以(加一個1就不行万牺,會報錯IndexError: tuple index out of range,越界了洽腺,所以啥也不寫最好)
s ='i like {0}'
a = s.format('python')
print(a)
i like python
有兩個的話同理脚粟,花括號里可以啥也不寫,也可以填入0和1 (?寫1和2就不行蘸朋,又出現(xiàn)IndexError: tuple index out of range)
s = 'i like {0},{1}'? ? ?
a = s.format('python','java')
print(a)
i like python,java
舉例1:
a='我最喜歡趙云的英雄皮膚是{},{}'
b=a.format('龍膽','白執(zhí)事')
print(b)
我最喜歡趙云的英雄皮膚是龍膽,白執(zhí)事
舉例2:
a='我最喜歡的女英雄是{}'
b=a.format('花木蘭')
print(b)
我最喜歡的女英雄是花木蘭
練習
(1)占位符方法
d = '張三 %d 歲. %s歲數(shù)更大'%(22,'李四')? ? ? ? ? ?#括號是元組
print(d)
張三22 歲. 李四歲數(shù)更大
(2)str.format 方法
d = '張三 {0} 歲. {1}歲數(shù)更大'
r = d.format(22,'李四')
print(r)
張三22 歲. 李四歲數(shù)更大
(3)f+str 的方法
age =22
name ='李四'
w =f'張三{age} 歲,{name}歲數(shù)更大'
print(w)
張三22歲,李四歲數(shù)更大
5.5 字符串的其他操作
(1)len()? 用于字符串的長度(有多少個字核无,包括空格)
舉例1:
print(len('i love zhaoyun'))
14
舉例2:
print(len('iloveyou'))
8
(2)max() 最大值? ? ?-----比較的是ascii碼的值?
舉例1:
x='abc'
print(max(x))
c
舉例2:
a=10
b=33
c=21
x=a,b,c
print(max(x))
(3)min() 最小值
x='abc'
print(min(x))
a
綜合舉例:
a ='Jerry Python'
print(max(a),min(a))
y? ? ? ?#最大值是y,最小值是空格
用ord()函數(shù)可以去查找字符所對應ascii值
print(ord('y'),ord(' '))
121 32
特殊:一個反斜杠有轉(zhuǎn)義的作用藕坯,所以測不出來团南,兩個才代表一個反斜杠
print(ord('\\'))
92
拓展:
判斷一個字符串是否在這個字符串當中,用in炼彪,如果在返回True 如果不在返回Fasle
舉例:
c='abc'
print('a' in c)
True
否則:
print('j' in c)
False
(4)split()?分割字符串吐根,分割之后會把結(jié)果返回到一個列表里面
應用舉例:分割網(wǎng)址,要選擇最好的分割方式辐马,如/ . =
http://www.reibang.com/writer#/notebooks/12284287/notes/73041915
舉例1:
s ='I love china'
r=s.split(' ')? ? ----單引號間為分割方式拷橘,此處是空格
print(r)
['I', 'love', 'china']? ?----列表
舉例2:
s1 ='www.baidu.com'
r = s1.split('.')? ? ?-----單引號間是.?
print(r)
['www', 'baidu', 'com']
(5)join() 拼接字符串,語法:str.join(seq)? ? ? str是拼接的方式喜爷,seq是序列的內(nèi)容
a ='abc' #以 - 拼接冗疮,效果是a-b-c
r ='-'.join(a)
print(r)
a-b-c
去空格
(1)s.strip() 左右兩邊去空格
s.strip()左右兩邊去空格
s =' Python '? ? ?----左右兩邊有空格
r = s.strip()
print(s)
?Python? ? ----直接打印s的話,左右兩邊有空格
print(r)
Python? ? ?----用了s.strip()的r檩帐,打印出來就去掉了兩邊的空格
(2)s.lstrip() 去左邊空格
s =' Python '
print(s.lstrip())
Python? ? ? ----右邊仍有空格
(3)s.rstrip() 去右邊空格
s =' Python '
print(s.rstrip())
?Python? ? ----左邊仍有空格
字符串大小寫
(1)s.upper() 全部大寫
a ='I Love China'
print(a.upper())
I LOVE CHINA
(2)s.lower() 全部小寫
a ='I Love China'
print(a.lower())
i love china
(3)s.isupper() 判斷是不是大寫术幔,如果是就返回True,如果不是則返回False
b ='HELLO'
print(b.isupper())
True
(4)s.islower() 判斷是不是小寫,如果是就返回True,如果不是則返回False
b ='HELLO'
print(b.islower())
False
###今日作業(yè)
1. 練習課堂中老師敲的代碼
2.現(xiàn)在 a,b = 6, 8 轿塔,如果想讓a=8 b=6特愿,該怎么辦?用2種方式實現(xiàn)勾缭。
參考文章:https://www.cnblogs.com/oldfish123/p/11780271.html
3.print()語句練習揍障,用兩種方式打印 “hello,python”。