c++用一级运算比较大小_1.1.2 python基本数据类型与运算符
本章引言
?????? ?任何計(jì)算機(jī)語言的學(xué)習(xí)都離不開其基礎(chǔ)中的基礎(chǔ),即數(shù)據(jù)類型和運(yùn)算;所以要學(xué)好一門語言必須具有扎實(shí)的基礎(chǔ),后期是否能夠靈活使用就取決于第二章、第三章內(nèi)容是否深而透。
變量含義
用來存儲(chǔ)一些之后可能會(huì)變化的值
對(duì)科比投籃ID為 1 的一次投籃進(jìn)行分析,那么我們就可以創(chuàng)建一個(gè)名稱為 shot_id 的變量,并且將 1 值儲(chǔ)存在變量 shot_id 中
如果之后我們想要分析科比的另外一次投籃,比如投籃ID為 2 的投籃,我們只需要修改變量 shot_id 的賦值,將 shot_id 賦值為 2 即可
變量賦值
? ? ? ?通過賦值運(yùn)算符 = 變量名和想要賦予變量的值連接起來,變量的賦值操作就完成了聲明和定義的的過程,在其他語言中需要制定類型;同一變量可以反復(fù)賦值,而且可以是不同類型的變量,這也是Python語言稱之為動(dòng)態(tài)語言的原因
示例:>>>short_id=1
>>>print(short_id)
1
>>>type(short_id)
>>>short_>>>print(short_id)
1
>>>type(short_id)
變量名的命名規(guī)范
? ? ? ?在第一章節(jié)中提到基本語法中的命名規(guī)則要素,命名規(guī)范主要有駝峰式和蛇形式,在python中變量名習(xí)慣一般遵守蛇形命名法(snake case):
一般變量名,wood_id、wood_program_id;
類名首字符為大寫,如Python內(nèi)置模塊collections.abc中的Iterable類
類方法名:get_wood_id();
其他特殊變量,會(huì)全部大寫,例如常量,MY_PI、MY_COUNT;
多個(gè)變量賦值
python允許同時(shí)為多個(gè)變量賦值。
表現(xiàn)形式為:number1=number2=number3....=值
例如:a = b = c = 1python還可以實(shí)現(xiàn)多個(gè)變量賦值使用一個(gè)語句完成
表現(xiàn)形式:number1,numbe2,numbe3=1,2,3
說明:
多個(gè)變量賦值中涉及非常重要的兩個(gè)概念:解包、封包
解包:實(shí)際就是將一組數(shù)據(jù)(元組)進(jìn)行一一對(duì)應(yīng)的賦值給每個(gè)變量,此種表示形式實(shí)際就是解包操作;
封包:如果一個(gè)變量進(jìn)行賦予多個(gè)值的話,則表示的是該變量實(shí)際就是一個(gè)元組類型,該過程稱之為封包操作;
因?yàn)榇颂幧婕霸M的概念,所以在元組中還會(huì)詳細(xì)舉例,請(qǐng)理解概念。
常量
? ? ? ?常量表示“不能變”的變量Python中是沒有常量的關(guān)鍵字的,只是我們常常約定使用大寫字母組合的變量名表示常量,也有不要對(duì)其進(jìn)行賦值”的提醒作用
PI=3.14159265
python數(shù)據(jù)類型
? ? ? ? python語言的數(shù)據(jù)類型包括整型、浮點(diǎn)型、字符串、布爾型和空值整型(int)整型的取值為整數(shù),有正有負(fù),如 2,-666,666 等。在科比投籃數(shù)據(jù)集中,shot_id是整型變量
Python有五個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)類型:
Numbers(數(shù)字)
String(字符串)
List(列表)
Tuple(元組)
Dictionary(字典)
本章主要講以下幾種基本類型:數(shù)值型、布爾型和空值特殊類型
數(shù)值型
a1.整型:在python中其默認(rèn)的數(shù)據(jù)類型就是int類型;
>>>number=10>>>type(number)
擴(kuò)展說明:并且在python3.X中不存在long類型(已經(jīng)舍去),理論上在python3.X版本中的int類型為無窮存儲(chǔ)(最大的數(shù)值范圍是2的六十四次方,可以通過sys模塊中maxsize;在python2.X版本中則獲取int的范圍是通過sys.maxint)
a2.浮點(diǎn)型:其數(shù)據(jù)類型是float類型;
>>>number=1.1>>>type(number)
擴(kuò)展說明:
1.整形與浮點(diǎn)型之間可以實(shí)現(xiàn)數(shù)據(jù)類型的轉(zhuǎn)換;轉(zhuǎn)換使用函數(shù)int、float
2.在python中所有的值默認(rèn)都是以十進(jìn)制的形式進(jìn)行表示;如果需要實(shí)現(xiàn)數(shù)值的進(jìn)制轉(zhuǎn)換的話,則可以分別調(diào)用與之對(duì)應(yīng)的函數(shù)或者使用int類對(duì)象進(jìn)行完成;例如:int(第一個(gè)參數(shù)必須是str類型的值,base=可以是2,8,10,16)還可以使用0b表示二進(jìn)制數(shù)據(jù)進(jìn)行轉(zhuǎn)換成十進(jìn)制,0o表示八進(jìn)制轉(zhuǎn)換成十進(jìn)制,0x表示十六進(jìn)制轉(zhuǎn)換成十進(jìn)制(對(duì)應(yīng)的函數(shù)分別是:bin、oct、hex)
3.在計(jì)算機(jī)中都是以固定的多少位進(jìn)行處理數(shù)據(jù),如果一個(gè)數(shù)其轉(zhuǎn)換成二進(jìn)制不足指定的位的話,則其對(duì)應(yīng)的高位會(huì)采取補(bǔ)位補(bǔ)0操作;
a3.復(fù)數(shù)類型:表示形式是由實(shí)部+虛部 (z=a+bi);在python中表示的虛部的單位必須是j;
>>>number=1+1j>>>type(number)
擴(kuò)展說明:number=2+3j可以通過復(fù)數(shù)對(duì)象中的real和imag兩個(gè)屬性分別獲取復(fù)數(shù)的實(shí)部和虛部的值注意:在python中同樣存在對(duì)應(yīng)的ASCII碼轉(zhuǎn)換;分別使用的函數(shù)是ord、chr;例如:ord(需要傳入轉(zhuǎn)換成整型的一個(gè)字符)、chr(需要傳入整型數(shù)字)
bool類型
? ? ?布爾值可以進(jìn)行 and 、 or 和 not 運(yùn)算, and 和 or 運(yùn)算分別用 & 和 | 表示not 運(yùn)算為非運(yùn)算,即把 True 變成 False , False 變成 True
邏輯判定型;只存在兩個(gè)值:True、False;常用的false的值有:""、0、[]、None、()、{}
空值類型
? ? ? ?空值是Python里一個(gè)特殊的值,用 None 表示,一般用 None 填充表格中的缺失值使用 type() 函數(shù)來獲取某值的類型
>>>type(None)類型轉(zhuǎn)換
? ? ? 函數(shù) int()、float()、str() 和 bool() 分別用于將變量轉(zhuǎn)換成整型、浮點(diǎn)型、字符串和布爾型變量
>>>number1=1.2>>>int(number1)
1
>>>number2=2
>>>float(number2)
2.0
>>>number3=3
>>>str(number3)
'3'
>>>bool(number3)
True
思考:如果存在一個(gè)變量str1="hello",然后強(qiáng)制轉(zhuǎn)換成int,即int(str1),其結(jié)果是?
isinstance用法
????通過幫助查看如下:
作用:來判斷一個(gè)對(duì)象是否是一個(gè)已知的類型;
其第一個(gè)參數(shù)(object)為對(duì)象,第二個(gè)參數(shù)為類型名(int...)或類型名的一個(gè)列表((int,list,float)是一個(gè)列表)。其返回值為布爾型(True or flase)。
若對(duì)象的類型與參數(shù)二的類型相同則返回True。若參數(shù)二為一個(gè)元組,則若對(duì)象類型與元組中類型名之一相同即返回True。
簡(jiǎn)單來說就是判斷object是否與第二個(gè)參數(shù)的類型相同,舉例如下:
# -*- coding: utf-8 -*-test_str?=?'123'print(isinstance(test_str,str))#判斷test_str是否是字符串類型test_int?=?123print(isinstance(test_int,int))?#判斷ttest_int是否是int類型test_float = 1.23print(isinstance(test_float,float))#判斷test_float是否是float類型test_bool = Trueprint(isinstance(test_bool,bool))#判斷test_bool是否是bool類型ASCII碼獲取
? ? ? ?實(shí)現(xiàn)ASCII碼與字符相互轉(zhuǎn)換:其中ord()與chr()函數(shù)均為Python內(nèi)置函數(shù)。ord()函數(shù)接受一個(gè)字符類型參數(shù),并返回一個(gè)十進(jìn)制整數(shù)chr()函數(shù)則為ord()函數(shù)的配對(duì)函數(shù),其接受一個(gè)整型參數(shù),并返回一個(gè)與其ASCII碼相對(duì)應(yīng)的字符。
>>> ord('A')65
>>> chr(65)
'A'
運(yùn)算符
? ? ? ?運(yùn)算符和操作對(duì)象是計(jì)算機(jī)中比較常見的,任何的計(jì)算,都涉及到運(yùn)算符和操作對(duì)象。數(shù)學(xué)學(xué)習(xí)的加(+)、減(-)、乘(*)、除(/)等都是運(yùn)算符。操作對(duì)象就是由運(yùn)算符連接起來的對(duì)象。以下為python常用運(yùn)算符說明以及操作。
算術(shù)運(yùn)算符
以下變量a為10,變量b為5:
| + | 加:兩個(gè)對(duì)象相加 | a+b輸出結(jié)果15 |
| - | 減:得到復(fù)數(shù)或者是一個(gè)數(shù)減去另一個(gè)數(shù) | a-b輸出結(jié)果5 |
| * | 乘:兩個(gè)數(shù)相乘或者是返回一個(gè)被重復(fù)若干次的字符串 | a* b輸出結(jié)果是50 |
| / | 除:x除以y | a/b輸出結(jié)果2 |
| % | 取模:返回除法的余數(shù) | b%a 輸出結(jié)果0 |
| ** | 冪:返回x的y次冪 | a** b 為10的5次方,輸出結(jié)果100000 |
| // | 取整除(地板除):返回商的整數(shù)部分 | 9//2輸出結(jié)果4,9.0//2.0輸出結(jié)果4.0 |
比較運(yùn)算符
以下變量a為10,變量b為20:
| == | 等于:比較對(duì)象是否相等 | (a==b) 返回False |
| != | 不等于:比較兩個(gè)對(duì)象是否不相等 | (a!=b) 返回True |
| > | 大于:返回x是否大于y | (a>b) 返回False |
| < | 小于:返回x是否小于y | (a |
| >= | 大于等于:返回x是否大于等于y | (a>=b) 返回False |
| <= | 小于等于:返回x是否小于等于y | (a<=b) 返回True |
賦值運(yùn)算符
以下變量a為10,變量b為20:
| -= | 減法賦值運(yùn)算符 | c-=a等價(jià)于c=c-a |
| * = | 乘法賦值運(yùn)算符 | c*=a等價(jià)于c=c* a |
| /= | 除法賦值運(yùn)算符 | c/=a等價(jià)于c=c/a |
| %= | 取模賦值運(yùn)算符 | c%=a等價(jià)于c=c%a |
| ** = | 冪賦值運(yùn)算符 | c**=a等價(jià)于c=c** a |
| //= | 取整除賦值運(yùn)算符 | c//=a等價(jià)于c=c//a |
邏輯運(yùn)算符
Python語言支持邏輯運(yùn)算符,以下變量a為10,變量b為20:
| And | x and y | 布爾"與" - 如果 x 為 False,x and y 返回 False,否則它返回 y的計(jì)算值 | (a and b) 返回 20 |
| Or | x or y | 布爾“或” - 如果 x 是非 0,它返回 x 的值,否則它返回 y 的計(jì)算值 | (a or b) 返回 10 |
| Not | not x | 布爾“非” - 如果 x 為 True,返回 False 。如果 x 為 False,它返回 True | not(a and b)返回False |
位運(yùn)算符
| & | 按位與運(yùn)算符 | (a&b)輸出結(jié)果是12 二進(jìn)制解釋:0000 1100 |
| | | 按位或運(yùn)算符 | (a|b)輸出結(jié)果四61 二進(jìn)制解釋:0011 1101 |
| ^ | 按位異或運(yùn)算符 | (a^b)輸出結(jié)果是49 二進(jìn)制解釋:0011 0001 |
| ~ | 按位取反運(yùn)算符 | (~a)輸出結(jié)果是-61 二進(jìn)制解釋:1100 0011 在一個(gè)有符號(hào)二進(jìn)制數(shù)的補(bǔ)碼形式 |
| << | 左移動(dòng)運(yùn)算符:< | a << 2 輸出結(jié)果 240 ,二進(jìn)制解釋:1111 0000 |
| >> | 右移動(dòng)運(yùn)算符 | a >> 2 輸出結(jié)果 15 ,二進(jìn)制解釋:0000 1111 |
擴(kuò)展內(nèi)容:原碼、反碼、補(bǔ)碼
數(shù)字在自然界中抽象出來的時(shí)候,一棵樹,兩只豬,是沒有正數(shù)和負(fù)數(shù)的概念的
計(jì)算機(jī)保存最原始的數(shù)字,也是沒有正和負(fù)的數(shù)字,叫沒符號(hào)數(shù)字
如果我們?cè)趦?nèi)存分配4位(bit)去存放無符號(hào)數(shù)字,是下面這樣子的
后來在生活中為了表示“欠別人錢”這個(gè)概念,就從無符號(hào)數(shù)中,劃分出了“正數(shù)”和“負(fù)數(shù)”
正如上帝一揮手,從混沌中劃分了“白天”與“黑夜”
為了表示正與負(fù),人們發(fā)明了"原碼",把生活應(yīng)該有的正負(fù)概念,原原本本的表示出來
把左邊第一位騰出位置,存放符號(hào),正用0來表示,負(fù)用1來表示
但使用“原碼”儲(chǔ)存的方式,方便了看的人類,卻苦了計(jì)算機(jī)
我們希望 (+1)和(-1)相加是0,但計(jì)算機(jī)只能算出0001+1001=1010 (-2)
這不是我們想要的結(jié)果!!
另外一個(gè)問題,這里有一個(gè)(+0)和(-0)
為了解決“正負(fù)相加等于0”的問題,在“原碼”的基礎(chǔ)上,人們發(fā)明了“反碼”
“反碼”表示方式是用來處理負(fù)數(shù)的,符號(hào)位置不變,其余位置相反
當(dāng)“原碼”變成“反碼”時(shí),完美的解決了“正負(fù)相加等于0”的問題
過去的(+1)和(-1)相加,變成了0001+1101=1111,剛好反碼表示方式中,1111象征-0
人們總是進(jìn)益求精,歷史遺留下來的問題—— ?有兩個(gè)零存在,+0 和 -0
我們希望只有一個(gè)0,所以發(fā)明了"補(bǔ)碼",同樣是針對(duì)"負(fù)數(shù)"做處理的
"補(bǔ)碼"的意思是,從原來"反碼"的基礎(chǔ)上,補(bǔ)充一個(gè)新的代碼,(+1)
我們的目標(biāo)是,沒有蛀牙(-0)
有得必有失,在補(bǔ)一位1的時(shí)候,要丟掉最高位
我們要處理"反碼"中的"-0",當(dāng)1111再補(bǔ)上一個(gè)1之后,變成了10000,丟掉最高位就是0000,剛好和左邊正數(shù)的0,完美融合掉了
這樣就解決了+0和-0同時(shí)存在的問題
另外"正負(fù)數(shù)相加等于0"的問題,同樣得到滿足
舉例,3和(-3)相加,0011 + 1101 =10000,丟掉最高位,就是0000(0)
同樣有失必有得,我們失去了(-0) , 收獲了(-8)
以上就是"補(bǔ)碼"的存在方式
結(jié)論:保存正負(fù)數(shù),不斷改進(jìn)方案后,選擇了最好的"補(bǔ)碼"方案
參考信息:運(yùn)算符優(yōu)先級(jí)
| ** | 指數(shù)(最高優(yōu)先級(jí)) |
| ~+- | 按位反轉(zhuǎn),一元加號(hào)、減號(hào)(最后兩個(gè)方法名為+@和-@) |
| * / % // | 乘、除、取模、取整除 |
| + - | 加法、減法 |
| >> << | 右移、左移動(dòng)運(yùn)算符 |
| ^ | | 位運(yùn)算符 |
| <= < >= > | 比較運(yùn)算符 |
| <> != == | 等于運(yùn)算符 |
| = += -= * = /= ** = | 賦值運(yùn)算符 |
| is is not | 身份運(yùn)算符 |
| in not in | 成員運(yùn)算符 |
| not and or | 邏輯運(yùn)算符 |
練一練
下列各賦值語句,語法不正確的是? ( ?? )
A. x+y=5????
B. BiNumber =15????
C. Labell.caption =time????
D. s_Length =x+y
下列給出的賦值表達(dá)式中正確的是( )
A.4 = M?????
B.-M = M?????????????????
C.B = A – 3?????????????
D.X + Y = 0
下列程序運(yùn)行后,變量x的值為(? ? )
x=2
print(x+l)
print(x+2)
A、2????????????
B、3????????????????????????????
C、4????????????????????????????????????
D、5
設(shè)a=2,b=3,c=4,d=5,下列表達(dá)式的值是(?? )。
a<=c or 4* c==b ^2 and b+c==d
A. -1?????
B.0????
C. True????
D. False
聲明兩個(gè)變量number1=”11”,number2=”22”計(jì)算上面兩個(gè)變量的位與運(yùn)算結(jié)果、位取反運(yùn)算結(jié)果(公式:-(a+1)=-12 實(shí)際就是取當(dāng)前數(shù)值原碼所對(duì)應(yīng)的反碼)、左移動(dòng)運(yùn)算結(jié)果;要求寫出其分析過程?
小結(jié)
Python第二章內(nèi)容的學(xué)習(xí),需要全面理解Python的基本數(shù)據(jù)類型的使用以及常用的運(yùn)算符使用。
咨詢了解更多請(qǐng)掃碼添加
總結(jié)
以上是生活随笔為你收集整理的c++用一级运算比较大小_1.1.2 python基本数据类型与运算符的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java实现图形界面输入半径求圆面积_测
- 下一篇: dubbo是长连接还是短连接_从快手短视