python數字1 3怎么表示_Python入門篇之數字

數字類型

數字提供了標量貯存和直接訪問。它是不可更改類型,也就是說變更數字的值會生成新的對象。當然,這個過程無論對程序員還是對用戶都是透明的,并不會影響軟件的開發方式。 Python 支持多種數字類型:整型、長整型、布爾型、雙精度浮點型、十進制浮點型和復數。

創建數值對象并用其賦值

(數字對象)

創建數值對象和給變量賦值一樣同樣簡單:

>>> anInt=1

>>> along=-555555555555L

>>> afloat=3.141595468565

>>> acomplex=1.334+4.5433j

更新數字對象

通過給數字對象(重新)賦值, 您可以“更新”一個數值對象。我們之所以給更新這兩個字加上引號,是因為實際上你并沒有更新該對象的原始數值。這是因為數值對象是不可改變對象。Python 的對象模型與常規對象模型有些不同。你所認為的更新實際上是生成了一個新的數值對象,并得到它的引用。 在學習編程的過程中, 我們一直接受這樣的教育,變量就像一個盒子, 里面裝著變量的值。在Python中,變量更像一個指針指向裝變量值的盒子。對不可改變類型來說,你無法改變盒子的內容,但你可以將指針指向一個新盒子。每次將另外的數字賦給變量的時候,實際上創建了一個新的對象并把它賦給變量.(不僅僅是數字,對于所有的不可變類型,都是這么回事)

anInt += 1

aFloat = 2.718281828

通過下面的代碼測試:

>>> anInt=1

>>> id(anInt)

10416152

>>> anInt+=1

>>> id(anInt)

10416140

如何刪除數字對象

按照Python的法則,你無法真正刪除一個數值對象,你僅僅是不再使用它而已。如果你實際上想刪除一個數值對象的引用,使用del語句。刪除對象的引用之后,你就不能再使用這個引用(變量名), 除非你給它賦一個新值。如果試圖使用一個已經被刪除的對象引用,會引發 NameError 異常。

del anInt

del aLong, aFloat, aComplex

Python的四種主要數字類型

1.整型

Python 有幾種整數類型。布爾類型是只有兩個值的整型。常規整型是絕大多數現代系統都能識別的整型。Python 也有長整數類型。然而,它表示的數值大小遠超過C 語言的長整數。下面我們先來了解一下這些類型,然后再來研究那些用于Python整數類型的運算符和內建函數。

1.1 布爾型

Python 從版本 2.3 開始支持布爾類型。該類型的取值范圍只有兩個值,也就是布爾值 True和布爾值 False。

1.2 標準整數類型

Python 的標準整數類型是最通用的數字類型。在大多數32位機器上,標準整數類型的取值范圍是-231到231-1,也就是-2,147,483,648到2,147,483,647。如果在64位機器上使用64位編譯器編譯Python,那么在這個系統上的整數將是 64 位。下面是一些 Python 標準整數類型對象的例子:

0101 84 -237 0x80 017 -680 -0X92

Python標準整數類型等價于C的(有符號)長整型。整數一般以十進制表示,但是 Python也支持八進制或十六進制來表示整數。如果八進制整數以數字“0”開始, 十六進制整數則以“0x”或“0X”開始。

1.3 長整型

關于Python長整數類型我們必須要提的是,請不要將它和C或其它編譯型語言的長整數類型混淆。那些語言的長整數典型的取值范圍是32位或64位。Python的長整數類型能表達的數值僅僅與你的機器支持的(虛擬)內存大小有關,換句話說,Python 能輕松表達很大很大很大的整數。長整數類型是標準整數類型的超集,當你的程序需要使用比標準整數類型更大的整數時,長整數類型就有用武之地了。在一個整數值后面加個 L(大寫或小寫都可以),表示這個整數是長整數。這個整數可以是十進制,八進制,或十六進制。下面是一些長整數的例子:

16384L -0x4E8L 017L -2147483648l 052144364L

299792458l 0xDECADEDEADBEEFBADFEEDDEAL -5432101234L

Edit By Vheavens

Edit By Vheavens

核心風格:用大寫字母 “L”表示長整數,目前整型和長整型正在逐漸緩慢的統一,您只有在對長整數調用repr()函數時才有機會看到“L”,如果對長整數對象調用 str()函數就看不到 L。舉例如下:

>>> aLong = 999999999l

>>> aLong

999999999L

>>> print aLong

999999999

1.4 整型和長整型的統一

這兩種整數類型正在逐漸統一為一種。在 Python 2.2 以前,標準整數類型對象超出取值范圍會溢出(比如上面提到的大于 232 的數),但是從 Python2.2 以后就再也沒有這樣的錯誤了。

>>> 9999 ** 8

Traceback (most recent call last):

File "", line 1, in ?

OverflowError: integer exponentiation

Python 2.2

>>> 9999 ** 8

99920027994400699944002799920001L

雙精度浮點數

Python中的浮點數類似C語言中的double類型,是雙精度浮點數,可以用直接的十進制或科學計數法表示。每個浮點數占8個字節(64比特),完全遵守IEEE754號規范(52M/11E/1S),其中52個比特用于表示底,11個比特用于表示指數(可表示的范圍大約是正負 10 的 308.25次方),剩下的一個比特表示符號。這看上去相當完美,然而,實際精度依賴于機器架構和創建 Python 解釋器的編譯器。浮點數值通常都有一個小數點和一個可選的后綴e(大寫或小寫,表示科學計數法)。在e和指數之間可以用正(+)或負(-)表示指數的正負(正數的話可以省略符號)。下面是一些典型的浮點數值的例子:

0.0 -777. 1.6 -5.555567119 96e3 * 1.0

4.3e25 9.384e-23 -2.172818 float(12) 1.000000001

3.1416 4.2E-10 -90. 6.022e23 -1.609E-19

復數

一個實數和一個虛數的組合構成一個復數。一個復數是一對有序浮點數(x, y)。表示為x + yj,其中x是實數部分,y是虛數部分。漸漸的復數在日常運算,機械,電子等行業獲得了廣泛的應用。由于一些研究人員不斷的重復制造用于復數運算的工具,在很久以前的Python1.4 版本里,復數終于成為一個真正的Python 數據類型。

下面是 Python 語言中有關復數的幾個概念:

虛數不能單獨存在,它們總是和一個值為 0.0 的實數部分一起來構成一個復數。

復數由實數部分和虛數部分構成

表示虛數的語法: real+imagj

實數部分和虛數部分都是浮點數

虛數部分必須有后綴j或J。

1.復數的內建屬性

復數對象擁有數據屬性,分別為該復數的實部和虛部。復數還擁有conjugate 方法,調用它可以返回該復數的共軛復數對象。

復數屬性

屬性 描述

num.real 該復數的實部

num num.imag 該復數的虛部

num.conjugate() 返回該復數的共軛復數

>>> c=2.3+2.5j

>>> c.real

2.3

>>> c.imag

2.5

>>> c.conjugate()

(2.3-2.5j)

運算符

數值類型可進行多種運算。從標準運算符到數值運算符,甚至還有專門的整數運算符。

5.5.1 混合模式運算符

Python支持不同的數字類型相加。當一個整數和一個浮點數相加時, 系統會決定使用整數加法還是浮點數加法(實際上并不存在混合運算)。Python使用數字類型強制轉換的方法來解決數字類型不一致的問題,也就是說它會強制將一個操作數轉換為同另一個操作數相同的數據類型。這種操作不是隨意進行的, 它遵循以下基本規則:

首先,如果兩個操作數都是同一種數據類型,沒有必要進行類型轉換。僅當兩個操作數類型不一致時, Python才會去檢查一個操作數是否可以轉換為另一類型的操作數。如果可以,轉換它并返回轉換結果。

由于某些轉換是不可能的,比如果將一個復數轉換為非復數類型,將一個浮點數轉換為整數等等,因此轉換過程必須遵守幾個規則。要將一個整數轉換為浮點數,只要在整數后面加個.0就可以了。要將一個非復數轉換為復數,則只需要要加上一個 “0j”的虛數部分。

這些類型轉換的基本原則是: 整數轉換為浮點數,非復數轉換為復數。在 Python 語言參考中這樣描述coerce()方法:

如果有一個操作數是復數, 另一個操作數被轉換為復數。

否則,如果有一個操作數是浮點數, 另一個操作數被轉換為浮點數。

否則, 如果有一個操作數是長整數,則另一個操作數被轉換為長整數;

否則,兩者必然都是普通整數,無須類型轉換。

數字類型之間的轉換是自動進行的,程序員無須自己編碼處理類型轉換。Python 提供了 coerce() 內建函數來幫助你實現這種轉換。

參見下面的流程圖闡釋了強制轉換的規則:

201410201028292.jpg

算術運算符

Python 支持單目運算符正號(+)和負號(-), 雙目運算符, +,-,*,/,%,還有 ** ,分別表示加法,減法,乘法,除法,取余,和冪運算。從 Python2.2 起,還增加了一種新的整除運算符//。

傳統除法

如果是整數除法, 傳統除法會舍去小數部分,返回一個整數(地板除)。如果操作數之一是浮點數,則執行真正的除法。包括 Python 語言在內的很多語言都是這種行為。看下面的例子:

>>> 1 / 2 # perform integer result (floor) # 地板除

0

>>> 1.0 / 2.0 # returns actual quotient#真正除法

0.5

真正的除法

除法運算總是返回真實的商,不管操作數是整數還是浮點數。在未來版本的 Python中,這將是除法運算的標準行為。現階段通過執行from __future__ import division指令,也可以做到這一點。

>>> from __future__ import division

>>>

>>> 1 / 2 # returns real quotient

0.5

>>> 1.0 / 2.0 # returns real quotient

0.5

地板除

從Python 2.2開始,一個新的運算符//已經被增加進來,以執行地板除:// 除法不管操作數何種數值類型,總是舍去小數部分,返回數字序列中比真正的商小的最接近的數字。

>>> 1 // 2 # floors result, returns integer # 地板除, 返回整數

0

>>> 1.0 // 2.0 # floors result, returns float # 地板除, 返回浮點數

0.0

>>> -1 // 2 # move left on number line# 返回比 –0.5 小的整數, 也就是 -1

-1

冪運算

冪運算操作符和一元操作符之間的優先級關系比較特別:冪運算操作符比其左側操作數的一元操作符優先級低,比起右側操作數的一元操作符的優先級高,由于這個特性你會在算術運算符表中找到兩個** .下面舉幾個例子:

>>> 3 ** 2

9

>>> -3 ** 2 # ** 優先級高于左側的 -

-9

>>> (-3) ** 2 # 加括號提高 -的優先級

9

>>> 4.0 ** -1.0 # ** 優先級低于右側的 -

0.25

第2種情況下解釋器先計算3**2再取其相反數,我們需要給"-3"加上括號來得到我們希望的結果。最后一個例子,結果是4**(-1),這是按照規定的優先級獲得的結果.

>>> 4 ** -1

Traceback (innermost last):

File "", line 1, in ?

ValueError: integer to the negative power

下面是更多 Python 數值運算的例子:

>>> -442 - 77

-519

>>>

Edit By Vheavens

Edit By Vheavens

>>> 4 ** 3

64

>>>

>>> 4.2 ** 3.2

98.7183139527

>>> 8 / 3

2

>>> 8.0 / 3.0

2.66666666667

>>> 8 % 3

2

>>> (60. - 32.) * ( 5. / 9. )

15.5555555556

>>> 14 * 0x04

56

>>> 0170 / 4

30

>>> 0x80 + 0777

639

>>> 45L * 22L

990L

>>> 16399L + 0xA94E8L

709879L

>>> -2147483648L - 52147483648L

-54294967296L

>>> 64.375+1j + 4.23-8.5j

(68.605-7.5j)

>>> 0+1j ** 2 # same as 0+(lj**2)

(-1+0j)

>>> 1+1j ** 2 # same as 1+(lj**2)

0j

>>> (1+1j) ** 2

2j

*位運算符(只適用于整數)

Python整數支持標準位運算:取反(~),按位 與(&), 或(|) 及 異或(^) 及左移(<<)和右移(>>)。Python 這樣處理位運算:

負數會被當成正數的2進制補碼處理。

左移和右移N位等同于無溢出檢查的2的N次冪運算:2**N。

對長整數來說, 位運算符使用一種經修改的2進制補碼形式,使得符號位可以無限的向左擴展。取反(~)運算的優先級與數字單目運算符相同,是所有位操作符中優先級最高的一個。左移和右移運算的優先級次之,但低于加減法運算。與,或,異或運算優先級最低。所有位運算符按優先級高低列在表 5.4

201410201028295.jpg

內建函數與工廠函數

標準類型函數

cmp(), str() 和 type()內建函數。這些函數可以用于所有的標準類型。對數字對象來說,這些函數分別比較兩個數的大小,將數字轉換為字符串,以及返回數字對象的類型。

轉換工廠函數

函數 int(), long(), float() 和 complex() 用來將其它數值類型轉換為相應的數值類型。從Python2.3開始,Python 的標準數據類型添加了一個新成員:布爾(Boolean)類型。從此 true 和 false 現在有了常量值即 True 和 False(不再是1和0)

下面是一些使用內建函數的示例:

>>> int(4.25555)

4

>>> long(42)

42L

>>> float(4)

4.0

>>> complex(4)

(4+0j)

>>>>>> complex(2.4, -8)

(2.4-8j)

>>>

>>> complex(2.3e-10, 45.3e4)

(2.3e-10+453000j)

功能函數

Python 有五個運算內建函數用于數值運算: abs(), coerce(), divmod(), pow(), pow() 和 round()。我們將對這些函數逐一瀏覽,并給出一些有用的例子:

abs()返回給定參數的絕對值。如果參數是一個復數,那么就返回 math.sqrt(num.real2 + num.imag2)

coerce()僅回一個包含類型轉換完畢的兩個數值元素的元組

divmod()內建函數把除法和取余運算結合起來, 返回一個包含商和余數的元組。對整數來說,它的返回值就是地板除和取余操作的結果。對浮點數來說,返回的商部分是math.floor(num1/num2),對復數來說,商部分是ath.floor((num1/num2).real)。

>>> divmod(10, 3)

(3, 1)

>>> divmod(10, 2.5)

(4.0, 0.0)

>>> divmod(2.5, 10)

(0.0, 2.5)

>>> divmod(2+1j, 2.3+4.3j)

(0j, (2+1j))

round()用于對浮點數進行四舍五入運算。它有一個可選的小數位數參數。如果不提供小數位參數,它返回與第一個參數最接近的整數(但仍然是浮點類型)。第二個參數告訴round 函數將結果精確到小數點后指定位數。

>>> round(3)

3.0

>>> round(3.154)

3.0

>>> round(3.499999, 1)

3.5

>>> import math

>>> for n in range(10):

print round(math.pi, n)

3.0

3.1

3.14

3.142

3.1416

3.14159

3.141593

3.1415927

3.14159265

3.141592654

數值運算內建函數:

函數 功能

abs(num) 返回num 的絕對值

coerce(num1, num2) 將num1和num2轉換為同一類型,然后以一個元組的形式返回

divmod(num1, num2) 除法-取余運算的結合。返回一個元組(num1/num2,num1 % num2)。對浮點數和復數的商進行下舍入

pow(num1, num2, mod=1) 取num1 的num2次方,如果提供mod參數,則計算結果再對mod進行取余運算

round(flt, ndig=0) 接受一個浮點數 flt 并對其四舍五入,保存 ndig位小數。若不提供ndig 參數,則默認小數點后0位

round() 僅用于浮點數

僅適用于整數的內建函數:

函數 操作

hex(num) 將數字轉換成十六進制數并以字符串形式返回

oct(num) 將數字轉換成八進制數并以字符串形式返回

chr(num) 將ASCII值的數字轉換成ASCII字符,范圍只能是0 <= num <= 255

ord(chr) 接受一個 ASCII 或 Unicode 字符(長度為1的字符串),返回相應的ASCII或Unicode值。

unichr(num) 接受Unicode碼值,返回 其對應的Unicode字符。所接受的碼值范圍依賴于你的Python是構建于UCS‐2還是UCS‐4

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446255.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446255.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446255.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java 打印100以內的質數

題目 質數&#xff1a;只能被1和它本身所整除的數。即&#xff1a;從2開始一直到這個數-1&#xff0c;都不能被這個數整除&#xff1b;最小的質數是2 知識點 1.System.currentTimeMillis():計算當前時間距離1970-1-1的毫秒數&#xff0c;返回long 2.Math.sqrt&#xff1a;開…

STL源碼剖析 slist單向鏈表概述

概述 SGI STL的list是一個雙向鏈表&#xff0c;單向鏈表是slist&#xff0c;其不在標準規格之內單向和雙向鏈表的區別在于&#xff0c;單向鏈表的迭代器是單向的 Forward Iterator&#xff0c;雙向鏈表的迭代器屬于雙向的Bidirectional Iterator。因此很多功能都被受限但是單向…

output怎么用_用樹莓派實現室內溫度監控

樹莓派加上溫度傳感器實現室內溫度監控。可用于家庭&#xff0c;轎車&#xff0c;工業&#xff0c;農業 等許多方面。可做溫度預警&#xff0c;自動降溫等操作。各位小伙伴可自行腦補發揮。1.硬件準備a.樹莓派&#xff08;Raspberry Pi&#xff09;一個b.DS18B20溫度傳感器一個…

java 家庭收支賬戶

代碼1 package lesson.project.p1_familyAccount;import java.util.Scanner;public class FamilyAccount {public static int money 10000;public static String all "";public static void main(String[] args) {Scanner scanner new Scanner(System.in);while …

【Android 13】使用Android Studio調試系統應用之Settings移植(四):40+個依賴子模塊之ActionBarShadow

文章目錄 一、篇頭二、系列文章2.1 Android 13 系列文章2.2 Android 9 系列文章2.3 Android 11 系列文章三、子模塊AS移植3.1 AS創建目標3.2 創建ActionBarShadow(1)使用VS Code打開org_settings/SettingsLib目錄(2)ActionBarShadow的Manifest.xml(3)ActionBarShadow的An…

STL源碼剖析 關聯式容器

STL關聯式容器以set(集合) 和 map(映射表)兩大類&#xff0c;以及對應的衍生體構成,比如mulyiset(多鍵集合) multimap(多鍵映射表) ,容器的底層均基于紅黑樹RB-Tree也是一個獨立的容器&#xff0c;但是不對外開放此外還提供了標準之外的關聯式容器 hash table散列表&#xff0c…

python求小于n的所有素數_用python求出2000000內所有素數的和?不知怎么寫?

展開全部 import itertools import time N 2000000 L range(N) def findnxt(s): flag 0 for n in itertools.ifilter(None, L[s1:]): return n t0 time.time() n 2 X int(N ** .5) while n < X: for i, x in enumerate(L[::n][1:]): if i0: continue L[x] 0 n findn…

STL源碼剖析 關聯式容器 紅黑樹

概念 紅黑樹不僅僅是一個二叉樹&#xff0c;必須滿足如下條件1&#xff0c;每個節點不是紅色就是黑色 (深色底紋為黑色&#xff0c;淺色底紋為紅色)2&#xff0c;根節點是黑色的3&#xff0c;如果節點為紅&#xff0c;其子節點必須為黑色的4&#xff0c;任一節點至NULL(樹的尾…

java藍橋杯 試題-基礎練習-數列排序

試題-基礎練習-數列排序 題目 問題描述   給定一個長度為n的數列&#xff0c;將這個數列按從小到大的順序排列。1<n<200 輸入格式   第一行為一個整數n。   第二行包含n個整數&#xff0c;為待排序的數&#xff0c;每個整數的絕對值小于10000。 輸出格式   輸出…

python生成的詞云沒有圖案_還在為專欄封面發愁?我用Python寫了個詞云生成器!...

媽媽再也不用擔心我寫專欄找不到合適的封面了&#xff01;B站專欄的封面至少是我一直頭疼的問題&#xff0c;每次寫完文章卻找不到合適的圖片作為封面。 詞云是一個很不錯的選擇&#xff0c;既美觀&#xff0c;又提綱挈領。網上也有詞云生成的工具&#xff0c;但大多收費/只能試…

java 1000以內的完數

題目 代碼 package lesson.l6_review;public class PrefectNumber {public static void main(String[] args) {for (int i 1; i <1000 ; i) {int num0;for (int j 1; j <i-1 ; j) {if (i%j0){numj;}}if (inum){System.out.print(i"\t");}}} }

STL源碼剖析 set集合

set的特性是 所有的元素會按照鍵值自動排序set 的鍵值等同于實值set不允許涵蓋兩個相同的鍵值不可以通過迭代器修改set的元素數值&#xff0c;這會破壞元素的排列順序。因此set<T>::iterator 被定義為底層RB-tree的const_iterator,杜絕寫入。也就是set的iterators是一種c…

python turtle畫圣誕樹動圖_圣誕節!教你用Python畫棵圣誕樹

作者 | 糖甜甜甜&#xff0c;985高校經管研二&#xff0c;擅長用 Python、R、tableau 等工具結合統計學和機器學習模型做數據分析。 如何用Python畫一個圣誕樹呢&#xff1f; 最簡單&#xff1a; 1height 5 2 3stars 1 4for i inrange(height): 5print(( * (height - i)) (** …

java藍橋杯 試題-基礎練習-十六進制轉八進制

試題-基礎練習-十六進制轉八進制 題目 試題 基礎練習 十六進制轉八進制 資源限制 時間限制&#xff1a;1.0s 內存限制&#xff1a;512.0MB 問題描述   給定n個十六進制正整數&#xff0c;輸出它們對應的八進制數。 輸入格式   輸入的第一行為一個正整數n &#xff08;1…

STL源碼剖析 map

所有元素會根據元素的鍵值自動被排序 元素的類型是pair&#xff0c;同時擁有鍵值和實值&#xff1b;map不允許兩個元素出現相同的鍵值pair 代碼 template <class T1,class T2> struct pair{typedef T1 first_type;typedef T2 second_type;T1 first; //publicT2 secon…

java api接口怎么寫_Java 如何設計 API 接口,實現統一格式返回?

來源&#xff1a;老顧聊技術前言接口交互返回格式控制層Controller美觀美化優雅優化實現方案前言在移動互聯網&#xff0c;分布式、微服務盛行的今天&#xff0c;現在項目絕大部分都采用的微服務框架&#xff0c;前后端分離方式&#xff0c;(題外話&#xff1a;前后端的工作職責…

java 輸出學生成績和成績等級

題目 從鍵盤讀入學生成績&#xff0c;找出最高分&#xff0c;并輸出學生成績等級。?成績>最高分-10 等級為’A’?成績>最高分-20 等級為’B’?成績>最高分-30 等級為’C’?其余 等級為’D’提示&#xff1a;先讀入學生人數&#xff0c;根據人數創建int數組&#…

STL源碼剖析 multiset 和 multimap

multiset和set完全相同&#xff0c;唯一的差別在于允許鍵值的重復&#xff0c;因此底層操作使用的是紅黑樹的insert_equal() 而不是insert_unique()multimap和map完全相同&#xff0c;唯一的差別在于允許鍵值的重復&#xff0c;因此底層操作使用的是紅黑樹的insert_equal() 而不…

java 二維數組

聲明和初始化 靜態初始化 // 靜態初始化&#xff1a; // 一維數組int[] arr1_1 {1, 2, 4};System.out.println(Arrays.toString(arr1_1)); // 二維數組int[][] arr1_2 {{1, 2}, {4, 5}, {9, 10}};for (int[] i :arr1_2) {System.out.print(Arrays.toS…

STL源碼剖析 hashtable

二叉搜索樹具有對數平均時間的表現&#xff0c;但是這個需要滿足的假設前提是輸入的數據需要具備隨機性hashtable 散列表這種結構在插入、刪除、搜尋等操作層面上也具有常數平均時間的表現。而且不需要依賴元素的隨機性&#xff0c;這種表現是以統計為基礎的 hashtable的概述 …