摘要:但是在轉(zhuǎn)化中,浮點數(shù)轉(zhuǎn)化為二進制后,不會精確等于十進制的。一般情況下,只要簡單地將最終顯示的結(jié)果用四舍五入到所期望的十進制位數(shù),就會得到期望的最終結(jié)果。四舍五入內(nèi)建函數(shù)。在中的第二個數(shù),表示要保留的小數(shù)位數(shù),返回值是一個四舍五入之后的數(shù)值。
數(shù)字 基本類型
首先,進入Python交互模式中:
//整數(shù) >>> 3 3 //長整數(shù) >>> 33333333333333333333333333 33333333333333333333333333L //浮點數(shù) >>> 3.22222222222 3.22222222222 //負數(shù) >>> -234 -234 //十六進制數(shù) >>> 0xff 255 //八進制 >>> 010 8
在交互模式下:
如果輸入3,就顯示3,稱為整數(shù)
當輸入一個比較大的整數(shù)時,Python會自動會將這個大整數(shù)進行轉(zhuǎn)換,轉(zhuǎn)換的結(jié)果是一個“長整數(shù)”類型,為了表示它,會在其末尾顯示一個L。由于這個操作是Python自動完成的,所有在Python中沒有多帶帶將“長整數(shù)”作為一個類型。
如果輸入一個負數(shù),直接在數(shù)字前面加上符號即可
Python也支持二進制、八進制、十六進制數(shù)。
對象身份每個數(shù)字在Python都是一個對象,每個對象,在內(nèi)存中都有自己的一個地址,這就是它的身份,用內(nèi)建函數(shù)id()可以查看每個對象的內(nèi)存地址即身份。
>>> id(3) 39679608 >>> id(-3) 39679680 >>> id(2.33) 39712264 >>> id(3.0) 48962672 >>>
以上四個不同的數(shù)字是四個不同的對象,具有四個不同的內(nèi)存地址。特別要注意,在數(shù)學(xué)上,3和3.0是相等的,但在這里,它們是不同的對象。
對象類型如果要查找一個對象的類型,則使用type()這個內(nèi)建函數(shù)。
>>> type(3)變量>>> type(-3) >>> type(0.3) >>> type(222222222222222222222222222)
>>> x = 5 >>> x 5 >>> x = 6 >>> x 6 >>>
在Python中,對象有類型,變量無類型
當Python中寫入5、6時,計算機就自動在其內(nèi)存中某個地方建立了這兩個對象,這兩個對象的類型就是Int
上述代碼中的x就好比是個標簽,當x=5時,就是將x這個標簽拴在了5上,通過這個x,就找到了5,于是“>>>x"輸出的結(jié)果就是5。所以這個標簽x沒有類型之說,它不僅可以貼在整數(shù)類型的對象上,還可以貼在其他類型的對象上。
簡單的四則運算//加 >>> 3 + 5 8 //減 >>> 5 - 3 2 //乘 >>> 5 * 3 15 //整除 >>> 8 / 4 2 //模除 >>> 8 % 3 2 //混合運算 >>> 2 * 3 -4 2整數(shù)溢出問題
在一些高級編程語言中,整數(shù)溢出是必須正視的,但是,在Python里就無需擔心了,原因就是Python為我們解決了這個問題,它支持“無限精度”的整數(shù),所以,不用考慮整數(shù)溢出的問題,Int類型與任意精度的Long整數(shù)類型可以無縫轉(zhuǎn)換,超過Int范圍情況都將自動轉(zhuǎn)換成Long類型。
如下計算:
>>> 1234456678888914781548154815481 * 618468146815418458154815481548 763472134516343226654595368107241568115304361007546100244588L
你還可以在交互模式下計算2的1000次冪,計算方法是:
>>> 2 ** 1000 10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376L >>>除法 整數(shù)與整數(shù)相除
>>> 2 / 5 0 >>> 2.0 / 5 0.4 >>> 2 / 5.0 0.4 >>> 2.0 / 5.0 0.4
Python2.x中
整數(shù)除整數(shù),商是整數(shù)
整數(shù)除浮點數(shù)或浮點數(shù)除整數(shù),商是浮點數(shù)
整數(shù)與浮點數(shù)相除>>> 9.0 / 2 4.5 >>> 9 / 2.0 4.5 >>> 9.0 / 2.0 4.5 >>>
不管是除數(shù)或者被除數(shù),只要有一個數(shù)是浮點數(shù),結(jié)果就是浮點數(shù)。
然而,下面的計算可能會有點不好理解:
>>> 10.0 / 3 3.3333333333333335 >>> 0.1 + 0.2 0.30000000000000004 >>> 0.1 + 0.1 - 0.2 0.0 >>> 0.1 + 0.1 + 0.1 - 0.3 5.551115123125783e-17 >>> 0.1 + 0.1 + 0.1 - 0.2 0.10000000000000003 >>>
原因在于十進制和二進制的轉(zhuǎn)換上,計算機使用的是二進制進行計算,在上面的例子中,我們輸入的是十進制,就要把十進制轉(zhuǎn)換成二進制,然后在計算。但是在轉(zhuǎn)化中,浮點數(shù)轉(zhuǎn)化為二進制后,不會精確等于十進制的0.1。因為計算機存儲的位數(shù)是有限制的,所有就出現(xiàn)了上述現(xiàn)象。
一般情況下,只要簡單地將最終顯示的結(jié)果用“四舍五入”到所期望的十進制位數(shù),就會得到期望的最終結(jié)果。
對于需要非常精確的情況,可以使用decimal模塊,它實現(xiàn)的十進制運算適合高精度要求的應(yīng)用。另外fractions模塊支持另外一種形式的運算,它實現(xiàn)的運算基于有理數(shù)。最高要求則是使用有SciPy提供的Numerical Python包和其他用于數(shù)學(xué)和統(tǒng)計學(xué)的包。
引用模塊解決除法問題我們可以通過以下兩種形式引入模塊:
形式1:import module-name。import后面跟空格,然后是模塊名稱,例如 import os
形式2:from module1 import module11。module1是一個大模塊,里面還有子模塊module11,只想用module11,就這么寫。
如下是解決除法問題的模塊:
>>> from __future__ import division >>> 5 /2 2.5 >>> 9 / 2 4.5 >>> 9.0 / 2 4.5
引用了此模塊后,不管什么情況,都能夠得到浮點數(shù)的結(jié)果了。
余數(shù)模除,用%符號來取得兩個數(shù)相除的余數(shù)
>>> 5 % 2 1 >>> 9 % 4 1 >>>
內(nèi)建函數(shù)divmod()
>>> divmod(5,2) (2, 1) >>> divmod(9,4) (2, 1)
內(nèi)建函數(shù)divmod()返回的是兩個值,這兩個值在一個圓括號內(nèi),圓括號內(nèi)的數(shù)字第一個表示商,第二個表示余數(shù)。
四舍五入內(nèi)建函數(shù)round()。
>>> round(1.234567,2) 1.23 >>> round(1.234567,3) 1.235 >>> round(10.0 /3 ,4) 3.3333 >>>
在round()中的第二個數(shù),表示要保留的小數(shù)位數(shù),返回值是一個四舍五入之后的數(shù)值。
接下里看下面的特殊情況:
>>> round(0.12345,3) 0.123 #應(yīng)該是1.235 >>> round(2.235,2) 2.23 #應(yīng)該是2.24 >>>
這不是Python地Bug,歸根到底是浮點數(shù)中的十進制轉(zhuǎn)化為二進制引起的問題
常用數(shù)學(xué)函數(shù)和運算優(yōu)先級 math模塊math模塊是Python標準庫中的,所以不用安裝就可以直接安裝。使用方法是:
>>> import math
這樣就將math模塊引用進來了,下面就可以使用這個模塊提供的工具了,比如要得到圓周率:
>>> import math >>> math.pi 3.141592653589793 >>>
這個模塊都能做些什么事情呢?可以用下面的方法看到:
>>> dir(math) ["__doc__", "__name__", "__package__", "acos", "acosh", "asin", "asinh", "atan", "atan2", "atanh", "ceil", "copysign", "cos", "cosh", "degrees", "e", "erf", "erfc", "exp", "expm1", "fabs", "factorial", "floor", "fmod", "frexp", "fsum", "gamma", "hypot", "isinf", "isnan", "ldexp", "lgamma", "log", "log10", "log1p", "modf", "pi", "pow", "radians", "sin", "sinh", "sqrt", "tan", "tanh", "trunc"] >>>
dir(module)可以查看任何模塊所包含的工具。
help(function)可以用來查看每個函數(shù)的使用情況。
>>> help(math.pow) Help on built-in function pow in module math: pow(...) pow(x, y) Return x**y (x to the power of y). >>>
下面來看看一些基本函數(shù)的使用:
#開平方 >>> math.sqrt(9) 3.0 #絕對值 >>> math.fabs(-2) 2.0 #模除 >>> math.fmod(5,3) 2.0兩個函數(shù)
1.求絕對值
>>> abs(10) 10 >>> abs(-10) 10 >>> abs(-1.2) 1.2
2.四舍五入
>>> round(1.234) 1.0 >>> round(1.234,2) 1.23運算優(yōu)先級
運算規(guī)則表:
運算符 | 描述 |
---|---|
lamba | Lamba表達式 |
or | 布爾或 |
and | 布爾與 |
not x | 布爾非 |
in,not in | 成員測試 |
is,is not | 同一性測試 |
<,<=,>,>=,!=,== | 比較 |
豎線 | 按位或 |
^ | 按位異或 |
& | 按位與 |
<<,>> | 移位 |
+,- | 加減 法 |
*,/,% | 乘除、取余 |
+x,-x | 正負號 |
~x | 按位翻轉(zhuǎn) |
** | 指數(shù) |
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/38182.html
摘要:另外還有一種數(shù)據(jù)類型叫做布爾類型。布爾類型布爾類型是計算機中最基本的類型,它是計算機二進制世界的體現(xiàn),一切都是和。中的布爾類型只有兩種值和。 計算機的本質(zhì)就是計算,在其內(nèi)部是0和1的比特位的變化,對外表現(xiàn)就是數(shù)據(jù)的變化。那么,計算機都能處理什么數(shù)據(jù)呢?本質(zhì)上,數(shù)據(jù)都是以字節(jié)(Byte)存儲的,表現(xiàn)上看,它們就是整數(shù)、浮點數(shù)和字符串等。Python的基本數(shù)據(jù)類型也不外乎于此。 整數(shù)和浮點...
摘要:基礎(chǔ)之輸入輸出與高階賦值學(xué)習目標輸入輸出與注釋獲取用戶輸入格式化輸出基本方法格式化函數(shù)注釋高階賦值語句賦值運算符并行賦值序列解包鏈式賦值學(xué)習目標是簡潔易學(xué)面向?qū)ο蟮木幊陶Z言。 ...
摘要:以下這些項目,你拿來學(xué)習學(xué)習練練手。當你每個步驟都能做到很優(yōu)秀的時候,你應(yīng)該考慮如何組合這四個步驟,使你的爬蟲達到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學(xué)習不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲的設(shè)計方案,比如說。 (一)如何學(xué)習Python 學(xué)習Python大致可以分為以下幾個階段: 1.剛上手的時候肯定是先過一遍Python最基本的知識,比如說:變量、數(shù)據(jù)結(jié)構(gòu)、語法...
摘要:這種數(shù)據(jù)結(jié)構(gòu)包含以下幾種常見的操作向關(guān)聯(lián)數(shù)組添加鍵值對從關(guān)聯(lián)數(shù)組內(nèi)刪除鍵值對修改關(guān)聯(lián)數(shù)組內(nèi)的鍵值對根據(jù)已知的鍵尋找值字典問題是設(shè)計一種能夠具備關(guān)聯(lián)數(shù)組特性的數(shù)據(jù)結(jié)構(gòu)。 定義 Python中有一個叫作dictionary的對象類型,翻譯過來就是字典,用dict表示。 創(chuàng)建字典 創(chuàng)建空的字典 >>> mydict = {} >>> mydict {} >>> type(mydict) >...
閱讀 1266·2021-11-24 09:39
閱讀 1516·2021-09-07 09:59
閱讀 3479·2019-08-30 15:54
閱讀 2474·2019-08-30 11:00
閱讀 2669·2019-08-29 15:06
閱讀 2159·2019-08-26 13:52
閱讀 427·2019-08-26 13:24
閱讀 2489·2019-08-26 12:20