Day02-变量_数据类型和运算符
1 數(shù)據(jù)類型
不同類型的變量可以進(jìn)行的運(yùn)算是不同的,所以必須理解變量的類型,python中數(shù)據(jù)類型可以分為:
-
內(nèi)置類型
-
數(shù)值類型:整型int,浮點(diǎn)型float,復(fù)數(shù)(complex) 3+5j
-
str:字符串
-
bool:布爾值【True,False】
-
None:空值,表示變量沒(méi)有確定的值
-
list:列表
-
tuple:元組
-
dict:字典
-
set:集合
-
-
自定義類型
-
class :類
-
1.1 基礎(chǔ)類型
-
數(shù)值類型:
-
整型(int): python3中只有int一種,可以表示整數(shù),例如:10,-5,10000
-
浮點(diǎn)型(float): 表示帶小數(shù)點(diǎn)的實(shí)數(shù),有兩種表示法:
-
小數(shù)表示: 1.9 .23
-
科學(xué)計(jì)數(shù)法: 用e來(lái)表示10的指數(shù),1e2就代表了100,注意e前面必須有數(shù)值,e后面必須為整數(shù)
-
-
復(fù)數(shù)(complex):表示數(shù)學(xué)上的無(wú)理數(shù),形如:a+bj
-
-
布爾型(bool):表示事務(wù)的兩種狀態(tài),男女、陰晴、亮暗等,它只有兩個(gè)值:True,False
-
None:表示空對(duì)象,一般用于判斷,不同于0和空字符
-
字符串(str):在python中,用引號(hào)(單引號(hào)、雙引號(hào)、三引號(hào))表示字符串
-
字符串的表示
# 用單引號(hào)表示: 'hello' # 用雙引號(hào)表示:"我用python" # 用3個(gè)單引號(hào)表示:可以表示多行文本,例如:'''偉大的祖國(guó)''' # 用3個(gè)雙引號(hào)表示:可以表示多行文本,例如:"""生死看淡,不服就干""" -
轉(zhuǎn)義字符:有些特殊字符無(wú)法從鍵盤輸入,可以使用轉(zhuǎn)義字符表示,另外,無(wú)論是單引號(hào)、雙引號(hào)還是三引號(hào)字符串,其中引號(hào)是字符串界定符,引號(hào)并不是字符串的內(nèi)容,那么如何在單引號(hào)字符串中表示一個(gè)單引號(hào)呢,這也可以使用轉(zhuǎn)義字符表示。常見(jiàn)的轉(zhuǎn)義字符
轉(zhuǎn)義字符描述轉(zhuǎn)義字符描述 \' 表示一個(gè)普通字符單引號(hào) \n 換行 \" 表示一個(gè)普通字符雙引號(hào) \r 回車 \''' 一個(gè)普通的三單引號(hào) \\ 一個(gè)普通的字符\ \""" 一個(gè)普通的三雙引號(hào) \a 響鈴 \t tab鍵 \b 回刪一個(gè)字符 -
字符串編碼:計(jì)算機(jī)只能識(shí)別二進(jìn)制,那么字符串如何存儲(chǔ)到計(jì)算機(jī)里呢
計(jì)算機(jī)不能直接存儲(chǔ)字符串,但我們可以將字符編碼,例如用65表示大寫字符A,66表示大寫字符B....等這種表示方式就是美國(guó)類的ASCII碼,只能表示127個(gè)字符,但對(duì)于美國(guó)人來(lái)說(shuō)已經(jīng)足夠了。一但能用整數(shù)表示字符,我們可以很方便的把整數(shù)用二進(jìn)制表示,那么字符串也就和容易存儲(chǔ)到計(jì)算機(jī)了。 但還有很多其他國(guó)家的語(yǔ)言是不能用ASCII表示的,所有ISO組織就推出了unicode碼,用來(lái)表示任何一種語(yǔ)言的字符,unicode碼也稱之為萬(wàn)國(guó)碼,通用碼,可以表示任何一種語(yǔ)言的任何一個(gè)字符。unicdoe碼有多中表示方式,例如:utf-8、utf-16、utf-32等。一般使用較多的是utf-8,utf-8是一種變長(zhǎng)的編碼,表示一個(gè)字符可能用一個(gè)字節(jié),也可能是三個(gè)字節(jié) 中文常用編碼一般用GBK編碼,用2個(gè)字節(jié)表示一個(gè)漢字
-
1.2 類型判斷
我們可以使用type和isinstance來(lái)測(cè)試和判斷數(shù)據(jù)類型
#type用法:type(obj)功能:返回obj的數(shù)據(jù)類型參數(shù):obj是你要測(cè)試變量或數(shù)值示例:age = 10name = 'hello'print(type(name),type(age))#判斷變量是否是指定類型if type(age) is int:print('是')else:print('否') ? #isinstance用法:isinstance(obj,typename)功能:判斷obj是否是指定類型,是返回True,否返回False參數(shù): objobj是你要判斷的變量或數(shù)值typename是指定數(shù)據(jù)類型,可以是int,float,str等。也可是一個(gè)類型的元組,例如:(int,float)示例:age = 10name = 'hello' print(isinstance(age,int))print(isinstance(name,(str,int)) #只要name是str或int的一種就返回Trueif isinstance(age,int):print('是')else:print('否')#type和isinstance的區(qū)別 type判斷基本類型是沒(méi)問(wèn)題的,但無(wú)法判斷子類對(duì)象是父類的一種 isinstance可以判斷子類對(duì)象是父類的一種 class A:pass ? class B(A):pass ? objA = A() objB = B() ? #輸出否 if type(objB) is A:print('是') else:print('否')print(isinstance(objB,A)) #True結(jié)論:優(yōu)先使用isinstance
2. 運(yùn)算符和表達(dá)式
在數(shù)學(xué)上為了計(jì)算結(jié)果,我們會(huì)寫一些式子計(jì)算,例如:
30 + 5
這是數(shù)學(xué)中的計(jì)算式,python中為了計(jì)算也有類似的式子,叫表達(dá)式。在表達(dá)式中30和5稱作操作數(shù),+稱之運(yùn)算符。表達(dá)式的目的在于計(jì)算結(jié)果。表達(dá)式構(gòu)成:
-
最基本的表達(dá)式就是一些數(shù)值,變量、函數(shù),例如: 3, a(變量) print('hello')
-
由基本表達(dá)式加上適當(dāng)?shù)倪\(yùn)算符構(gòu)成復(fù)雜的表達(dá)式: 3 + a
綜合上述,所謂表達(dá)式就是由操作數(shù)和運(yùn)算符組成?符合python語(yǔ)法的式子。要寫表達(dá)式首先要學(xué)習(xí)運(yùn)算符。關(guān)于運(yùn)算符要知道兩件事情
-
計(jì)算順序 : 是從左向右算還是從右向左算
-
優(yōu)先級(jí) : 比如先乘除后加減
###2.1 算術(shù)運(yùn)算符
a = 20
b = 10
| - | 負(fù)號(hào),取原數(shù)的相反數(shù) | a = 10 print(-a) #-10 |
| + - * / | 加減乘除,同數(shù)學(xué)上一樣 | a + b = 30 a - b = 10 a * b = 200 a / b = 2 |
| % | 模運(yùn)算,即求 a整除以b的余數(shù) | a % 10 = 0 |
| // | 整除 | a // b = 2 |
| ** | 對(duì)運(yùn)算符進(jìn)行指數(shù)(冪)計(jì)算 | a ** b 表示20的10次方 |
####模運(yùn)算說(shuō)明
-
模運(yùn)算的符號(hào)取決于第二個(gè)操作數(shù)(右操作數(shù))
-
模運(yùn)算的計(jì)算公式:r = a % b = a - n * b,其中n是小于a/b的最大整數(shù)
-
整除(//)運(yùn)算如果有一個(gè)操作數(shù)是浮點(diǎn)數(shù),結(jié)果是浮點(diǎn)數(shù)
-
用途:判斷奇偶、判斷是否能夠整除、最大公約數(shù)、水仙花數(shù)
數(shù)學(xué)函數(shù)
| abs | 取絕對(duì)值 | abs(-10) |
| pow(x,y) | x的y次方 | pow(10,2)求10的平方 |
| round(x,[n]) | 浮點(diǎn)數(shù)的4舍5入, n代表保留小數(shù)的位數(shù) | round(3.456) |
| max() | 求給定參數(shù)的最大值 | max(21,43,65,75,86,32,3,45) |
| min() | 求給定參數(shù)的最小值 | min(21,43,65,75,86,32,3,45) |
| math.ceil() | 需要導(dǎo)入import math庫(kù) 向上取整 | math.ceil(18.1) #19 |
| math.floor() | 需要導(dǎo)入import math庫(kù) 向下取整 | math.floor(18.1) #18 |
| math.sqrt | 需要導(dǎo)入import math庫(kù) 求平方根 | math.sqrt(100) |
python3.5.2中文幫助文檔 https://yiyibooks.cn/xx/python_352/index.html
隨機(jī)函數(shù)
獲取隨機(jī)數(shù),需要引入random庫(kù)。
import random
| random.randrange(start,stop,step) | start 指定范圍的起始值 包含本身,默認(rèn)是0;stop 指定范圍的結(jié)束值 不包含本身; step 步長(zhǎng),默認(rèn)步長(zhǎng)是1。該函數(shù)返回一個(gè)整數(shù) |
| random.randint(start,end) | 返回[start end]之間的一個(gè)隨機(jī)整數(shù),start必須小于end |
| random.random() | 返回一個(gè)[0.0,1.0)之間的隨機(jī)小數(shù) |
注意
-
優(yōu)先級(jí): ** >正負(fù)號(hào) > // % * / > + -
-
從左向右算
-
在冪運(yùn)算和一元運(yùn)算符聯(lián)合計(jì)算時(shí),從右向左算,例如: -1 ** 2 = -1
2.2 賦值運(yùn)算符
a = 5; b = 10; c = 20
| = | 簡(jiǎn)單賦值, 將b+c的結(jié)果賦給a | a = b +c #a=30 |
| += | a += b等價(jià)于 a = a +b | a = 15 |
| -= | a -= b等價(jià)于 a = a - b | a = -5 |
| *= | a *= b等價(jià)于 a = a * b | a = 50 |
| /= | a /= b 等價(jià)于a = a / b | a = 0.5 |
| %= | a %= b等價(jià)于a = a % b | a = 5 |
| //= | a //= b等價(jià)于 a = a // b | a = 0 |
| **= | a **= b等價(jià)于a = a ** b | ? |
注意:
-
賦值運(yùn)算符左邊必須是變量
-
從右向左算
-
沒(méi)有賦值表達(dá)式
-
所有賦值運(yùn)算符優(yōu)先級(jí)相同,賦值運(yùn)算符優(yōu)先級(jí)非常低,僅高于成員運(yùn)算符和身份運(yùn)算符、邏輯運(yùn)算符
-
注意在復(fù)合賦值中
2.3 關(guān)系運(yùn)算
關(guān)系運(yùn)算就是比較運(yùn)算,如果表達(dá)式成立,返回True,否則返回False。關(guān)系運(yùn)算的結(jié)果是布爾值。
| == | a == b | a和b值相等,結(jié)果是True,a和b值不相等結(jié)果為False |
| != | a != b | a不等于b 結(jié)果為True,否則結(jié)果為True |
| > | a > b | a大于b結(jié)果為True,否則為False |
| >= | a >= b | a大于等于b結(jié)果為True,否則為False |
| < | a < b | a小于b結(jié)果為True,否則為False |
| <= | a <= b | a小于等于b結(jié)果為True,否則為False |
注意:
-
優(yōu)先級(jí): 比較運(yùn)算符優(yōu)先級(jí)相同
-
從左向右算
-
可以這樣算:1 < a < 3 等價(jià)于 a > 1 and a < 3
2.4 邏輯運(yùn)算
邏輯運(yùn)算符可以用于構(gòu)造復(fù)雜條件。邏輯運(yùn)算符包括:
-
邏輯與 and 對(duì)應(yīng)漢語(yǔ)的意思是“并且” 、 “同時(shí)”
-
邏輯或 or 對(duì)應(yīng)漢語(yǔ)意思為"或者"
-
邏輯非 not 對(duì)應(yīng)漢語(yǔ)意思為”相反“
在邏輯運(yùn)算中,False、None、0、0.0、‘’(空字符串)被看做假(False),其它的看做真(True)
2.4.1 邏輯與
| 真 | 任意值 | b的值 |
| 假 | 任意值 | a的值 |
-
表達(dá)式 a and b的值為: 如果a為真,結(jié)果為b的值,否則結(jié)果是a的值
2.4.2 邏輯或
| 真 | 任意值 | a的值 |
| 假 | 任意值 | b的值 |
-
表達(dá)式a or b的值為:如果a為真結(jié)果為a的值,否則結(jié)果是b的值
2.4.3 邏輯非
| 真 | False |
| 假 | True |
小結(jié):a為真則表達(dá)式為False,否則表達(dá)式為True
2.4 短路計(jì)算
-
對(duì)于邏輯與表達(dá)式 a and b,如果a為假,則不計(jì)算b
-
對(duì)于邏輯或表達(dá)式 a or b ,如果a為真,則不計(jì)算b
2.4.5 注意事項(xiàng)
-
優(yōu)先級(jí) not > and >or
2.5 身份運(yùn)算符
is: 判斷兩個(gè)標(biāo)識(shí)符是否引用自同一個(gè)實(shí)體【對(duì)象】,比較的是兩個(gè)對(duì)象的id是否一樣,如果相同為真,否則為假
is not:判斷兩個(gè)標(biāo)識(shí)符是不是引用自不同的實(shí)體【對(duì)象】如果兩個(gè)對(duì)象的id不同結(jié)果為真,否則為假
id()函數(shù)獲取實(shí)體的id(地址)
注意:is和==的區(qū)別
-
is用于判斷兩個(gè)變量引用實(shí)體是否為同一個(gè)【id】
-
==用于判斷兩個(gè)變量的值是否相同,但id不一定相同
2.6 成員運(yùn)算符
主要應(yīng)用在序列中
in:如果在指定的序列中找到指定的值,則返回True,否則返回False
not in:如果在指定的序列中未找到指定的值,則返回True,否則返回False
2.7 if-else表達(dá)式
表達(dá)式1 if 條件 else 表達(dá)式2
如果條件為真假結(jié)果是表達(dá)式1的值,否則結(jié)果是表達(dá)式2的值
?
總結(jié)
以上是生活随笔為你收集整理的Day02-变量_数据类型和运算符的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【SSL】HTTPS配置全过程
- 下一篇: android 9 one ui,三星S