數字 20 例

接下來我會嚴格按照 我的施工計劃,往下推進這個開源項目( 目前 4300+ star ),鏈接爲:

https://github.com/jackzhenguo/python-small-examples

作爲開篇,再簡要總結下Python語言:

Python語言1989年由 Guido van Rossum 編寫,Python可以應用在衆多的領域中:數據分析、組建集成、網絡服務、圖像處理、數值計算和科學計算等領域。

Python應用的知名公司有:Youtube、Dropbox、BT、知乎、豆瓣、谷歌、百度、騰訊、汽車之家等。

Python可以做的工作有:自動化運維、測試、機器學習、深度學習、數據分析、爬蟲、Web等

我們通常使用C語言實現的編譯器,使用最爲廣泛, CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),然後運行在Python虛擬機上。

施工從談論數字開始

  • 整數

    • Python2 有取值範圍,溢出後自動轉爲長整型

    • Python3 中爲長整型,無位數限制 理論上內存有多大,位數可能就有多大

  • 長整數

    • Python2 中單獨對應 Long 類型

    • Python3 中不再有Long ,直接對應 int

  • 浮點數

    • 帶小數的數字

    • 如果不帶數字,可能有 e 和 E

  • 複數

    • 高數中複數

    • 結構爲:1+2j

數字

下面是常用的數字相關的操作:

1 / 返回浮點數

即便兩個整數,/ 操作也會返回浮點數

In [1]: 8/5
Out[1]: 1.6

2 // 得到整數部分

使用 //快速得到兩數相除的整數部分,並且返回整型,此操作符容易忽略,但確實很實用。

In [2]: 8//5
Out[2]: 1

In [3]: a = 8//5
In [4]: type(a)
Out[4]: int

3 % 得到餘數

%得到兩數相除的餘數:

In [6]: 8%5
Out[6]: 3

4 ** 計算乘方

** 計算幾次方

In [7]: 2**3
Out[7]: 8

5 交互模式下的_

在交互模式下,上一次打印出來的表達式被賦值給變量 _

In [8]: 2*3.02+1
Out[8]: 7.04

In [9]: 1+_
Out[9]: 8.04

6  十轉二

將十進制轉換爲二進制:

>>> bin(10)
'0b1010'

7 十轉八

十進制轉換爲八進制:

>>> oct(9)
'0o11'

8 十轉十六

十進制轉換爲十六進制:

>>> hex(15)
'0xf'

9 轉爲浮點類型

整數或數值型字符串轉換爲浮點數

>>> float(3)
3.0

如果不能轉化爲浮點數,則會報ValueError:

>>> float('a')
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    float('a')
ValueError: could not convert string to float: 'a'

10  轉爲整型

int(x, base =10)

x 可能爲字符串或數值,將 x 轉換爲整數。

如果參數是字符串,那麼它可能包含符號和小數點。如果超出普通整數的表示範圍,一個長整數被返回。

>>> int('12',16)
18

11 商和餘數

分別取商和餘數

>>> divmod(10,3)
(3, 1)

12 冪和餘同時做

pow 三個參數都給出表示先冪運算再取餘:

>>> pow(3, 2, 4)
1

13 四捨五入

四捨五入,第二個參數代表小數點後保留幾位:

>>> round(10.045, 2)
10.04
>>> round(10.046, 2)
10.05

14  計算表達式

計算字符串型表達式的值

>>> s = "1 + 3 +5"
>>> eval(s)
9
>>> eval('[1,3,5]*3')
[1, 3, 5, 1, 3, 5, 1, 3, 5]

真假布爾值本質上也是用數字表示,所以也歸併到數字這個討論小節中。

15 真假

以下四種情況都爲假:

>>> bool(0)
False
>>> bool(False)
False
>>> bool(None)
False
>>> bool([])
False

以下這些情況爲真:

>>> bool([False])
True
>>> bool([0,0,0])
True

16 all 判斷元素是否都爲真

所有元素都爲真返回 True,否則返回False

#有0,所以不是所有元素都爲真
>>> all([1,0,3,6])
False
#所有元素都爲真
>>> all([1,2,3])
True

17 any 判斷是否至少有一個元素爲真

至少有一個元素爲真返回True,否則返回False

# 沒有一個元素爲真
>>> any([0,0,0,[]])
False
# 至少一個元素爲真
>>> any([0,0,1])
True

18 鏈式比較

Python 支持下面這種鏈式比較,非常方便:

>>> i = 3
>>> 1 < i < 3
False
>>> 1 < i <=3
True

19 交換元素

Python 除了支持上面的鏈式比較外,還支持一種更加方便的操作:直接解包賦值。

如下所示,1,3 解包後分別賦值給a, b ,利用此原理一行代碼實現兩個數字的直接交換。

a, b = 1, 3
a, b = b, a  # 交換a,b

如果明白此原理,下面的賦值就會迎刃而解:

a,b = 1, 3
a, b = b+1, a-1
print(a,b) # 結果是多少?

有的朋友會有疑問:是 b+1 賦值給 a 後,a-1再賦值給 b ?

如果明白了上面的原理:等號右面完成壓包,左側再解包,就會立即得出答案:肯定不是。

下面這行代碼:

a, b = b+1, a-1

等價於:

c = b+1, a-1 # 壓包
a, b = c # 解包

答案是:a=4, b=0

壓包和解包還有更加複雜的用法,放到後面進階部分總結。

20  鏈式操作

下面這個例子使用 operator 模塊中 add, sub 函數,根據操作符+,-,生成對應的函數,然後直接調用。有種設計模式中最頻繁使用的對象工廠模式的意思。

>>> from operator import (add, sub)
>>> def add_or_sub(a, b, oper):
 return (add if oper == '+' else sub)(a, b)
>>> add_or_sub(1, 2, '-')
-1

以上就是數字這一小節的總結。

按照我的施工計劃,數字小節施工完成,獲得一枚紅旗。


如果你喜歡這個開源項目,歡迎點擊在看支持我一下,這對我持續向前保持動力來說很重要。

歡迎關注這個庫的官方公衆號:Python小例子:

長按二維碼

關注Python小例子

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章