python語言與其他程式語言一樣,也支援四則運算(加、減、乘、除),以及圓括號運算子。在python語言中,數字分為整數和浮點數。整數就是無小數部分的數,浮點數就是有小數部分的數。例如,下面的**是標準的四則運算表示式。
2 + 44 * 5 + 205.3 / 7(30 + 2) * 12如果要計算兩個數的除法,不管分子和分母是整數還是浮點數,使用除法運算子(/)的計算結果都是浮點數。例如1/2的計算結果是0.5,2/2的計算結果是1.0。要想讓python直譯器執行整除操作,可以使用整除運算子,也就是兩個斜槓(//)。使用整除運算子後,1 // 2的計算結果是0,2 // 2的結果是1。
整除運算子不僅能對整數執行整除操作,也能對浮點數執行整除操作,在執行整除操作時,分子分母只要有乙個是浮點數,那麼計算結果就是浮點數。例如,1.0 // 2的計算結果是0.0,2.0 // 2的結果是1.0。
除了四則運算符外,python還提供了兩個特殊的運算子:%(取餘運算子)和**(冪運算子)。取餘運算子用於對整數和浮點數執行取餘操作。例如,5 % 2的計算結果是1,而5.0 % 2的計算結果是1.0。從這一點可以看出,%和//類似,只要分子分母有乙個是浮點數,計算結果就是浮點數。
冪運算子用於計算乙個數值的冪次方。例如,2 ** 3的計算結果是8,3.2 ** 2的計算結果是10.24。
到現在為止,一共介紹了8個運算子,它們是圓括號((…))加(+)、減(-)、乘(*)、除(/)、整除(//)、取餘(%)和冪運算子(**)。其中減號(-)也可以用於負號(一元運算子),所以現在涉及到9個運算子。既然涉及到這麼多運算子,那麼就有乙個優先順序的問題,也就是說,同乙個表示式中包含有多個不同的運算子,需要先計算優先順序高的運算子,如果優先順序相同個,那麼就按從左向右的順序執行。
這9個運算子的優先順序順序如下圖所示。越靠前優先順序越高,同一行的運算子的優先順序相同。
下面的**演示了python語言中運算子的使用方法,在編寫python**時,應該注意運算子的優先順序問題。
print(2 + 4) # 運算結果:6print(126 - 654) # 運算結果:-528print(6 + 20 * 4) # 運算結果:86print((20 + 54) * 30) # 運算結果:2220print(1/2) # 運算結果:0.5print(1//2) # 運算結果:0print(3/2) # 運算結果:1.5print(3//2) # 運算結果:1print(4**3) # 運算結果:64print(3 + 5 * -3 ** 4 - (-5)**2) # 運算結果:-427# 用變數運算元值x = 30對於有符號32位整數來說,可表示的最大值是2147483647(2^31 -1),可表示的最小值是-2147483648(-2^31),如果超過這個範圍,有符號32位整數就會溢位。不過在python語言中,可以處理非常大的整數,並不受位數限制。例如,下面表示式的輸出結果就超出了32位整數的範圍。y = 50
k = 10.2print(x + y * k) # 運算結果:540.0
print(2 ** 35) # 輸出2的35次冪,輸出結果是34359738368讓我們再換個更大的數,看看會不會溢位。
print(2**630 * 100000) # 2的630次冪再乘10萬上面這行**的輸出結果如下:
很顯然,python語言仍然可以正確處理2**630 * 100000的計算結果。因此,在python語言中使用數字不需要擔心溢位,因為python語言可以處理非常大的數字,這也是為什麼很多人使用python語言進行科學計算和資料分析的主要原因之一。
python語言可以表示二進位制、八進位制和十六進製制數。表示這3個進製的數,必須以0開頭,然後分別跟著表示不同進製的字母。表示二進位制的字母是b,表示八進位制的字母是o(這是英文本母中小寫的o,不要和數字0搞混了),表示十六進製制的字母是x。因此,二進位制數的正確寫法是0b110011,八進位制數的正確寫法是0o56432,十六進製制數的正確寫法是0xf765a。
除了這3種進製外,前面章節一直使用的是十進位制。因此,python語言一共可以表示4種進製:二進位制、八進位制、十進位制和十六進製制。python語言提供了一些函式用於在這4種進製數之間進行轉換。
如果是從其他進製轉換到十進位制,需要使用int函式,該函式有兩個引數,含義如下:
• 第1個引數:字串型別,表示待轉換的二進位制、八進位制或十六進製制數。引數值只需要指定帶轉換的數即可,不需要使用字首,如二進位制直接指定11011,不需要指定0b11011。
• 第2個引數:數值型別,表示第1個引數值的進製,例如,如果要將二進位制轉換為十進位制,第2個引數值就是2。
int函式返回乙個數值型別,表示轉換後的十進位制數。
下面的**將二進位制數110011轉換為十進位制數,並輸出返回結果。
print(int("110011",2)) // 輸出結果:51如果要從十進位制轉換到其他進製,需要分別使用bin、oct和hex函式。bin函式用於將十進位制數轉換為二進位制數;oct函式用於將十進位制數轉換為八進位制數,hex函式用於將十進位制數轉換十六進製制數。這3個函式都接收乙個引數,就是待轉換的十進位制數。不過要注意,這3個函式的引數值也可以是二進位制數、八進位制數和十六進製制數,也就是說,這3個函式可以在二進位制、八進位制、十進位制和十六進製制之間互轉。chache
下面的**將十進位制數54321轉換為十六進製制數,並輸出轉換結果。
print(hex(54321)) # 輸出結果:0xd431下面的**演示了python語言中二進位制、八進位制、十進位制和十六進製制數之間的轉換。
print(0b110011) # 輸出二進位制數print(0o123) # 輸出八進位制數print(0xf15) # 輸出十六進製制數print(bin(12)) # 十進位制轉二進位制,輸出結果:0b1100print(int("10110",2)) # 二進位制轉十進位制,輸出結果:22print(int("0xf35ae",16)) # 十六進製制轉十進位制,輸出結果:996782print(hex(54321)) # 十進位制轉十六進製制,輸出結果:0xd431print(bin(0xf012e)) # 十六進製制轉二進位制,輸出結果:0b11110000000100101110print(hex(0b1101101)) # 二進位制轉十六進製制,輸出結果:0x6dprint(oct(1234)) # 十進位制轉八進位制,輸出結果:0o2322print(int("76532", 8)) # 八進位制轉十進位制,輸出結果:32090程式執行結果如下圖所示。
在輸出數字時,有時需要對其進行格式化。例如,在輸出12.34時,只希望保留小數點後1位數字,也就是12.3,或整數字按6位輸出,不足前面補0,也就是000012.34。python語言中提供了format函式用於對數字進行格式化。format函式有兩個引數,含義如下:
• 第1個引數:要格式化的數字。
• 第2個引數:格式字串。
format函式的返回值就是數字格式化後的字串。
下面的**演示了format函式在格式化數字方面的應用。
x = 1234.56789# 小數點後保留兩位數,輸出結果:'1234.57'print(format(x, '0.2f'))程式執行結果如下圖所示。# 數字在12個字元長度的區域內右對齊,並保留小數點後1位數字,# 輸出結果:' 1234.6' print(format(x, '>12.1f'))
# 數字在12個字元長度的區域內左對齊,並保留小數點後3位數字,緊接著輸出20,# 輸出結果:'1234.568 20'print(format(x, '<12.3f'), 20)# 數字在12個字元長度的區域內右對齊,並保留小數點後1位數字,數字前面補0,# 輸出結果:'0000001234.6'print(format(x, '0>12.1f'))# 數字在12個字元長度的區域內左對齊,並保留小數點後1位數字,數字後面補0,# 輸出結果:'1234.6000000'print(format(x, '0<12.1f'))# 數字在12個字元長度的區域內中心對齊,並保留小數點後2位數字,緊接著輸出3,# 輸出結果:' 1234.57 3'print(format(x, '^12.2f'),3)# 每千位用逗號(,)分隔,輸出結果:1,234.56789print(format(x, ','))# 每千位用逗號(,)分隔,並保留小數點後2位數字,輸出結果:1,234.57print(format(x, ',.2f'))# 用科學計數法形式輸出數字,輸出結果:1.234568e+03print(format(x, 'e'))# 用科學計數法形式輸出數字,尾數保留小數點後2位數字,輸出結果:1.23e+03print(format(x, '0.2e'))
從菜鳥到高手知識2
第一周 入門 第二週 學習常見黑客和滲透工具的使用 注意 這裡絕對不是說的那些什麼抓雞啊 遠控啊一些無腦軟體,你覺得你用了那些軟體後有什麼?一絲虛榮心?還是成就感?不,你在別人大牛的眼裡什麼都不是,你還拿著別人玩爛了的東西到處一頓亂掃,所以你需要系統的學習,就算你說你時間不夠,但是常見的工具還是要知...
C語言程式設計,從菜鳥到高手
it行業,應屆畢業生不能順利地找到理想工作的原因在於,沒有程式設計的實戰經驗,即使是計算機科班出身的也會有相當的困惑!就是說,即使你不是計算機科班出身,通過自己的積極努力,照樣可以提高自己的程式設計技能,找到稱心如意的工作。成為高手,必須經歷的幾個歷程 一 研讀c語言程式設計教程,特別是經典教程 推...
如何從菜鳥成長為高手
如何從菜鳥成長為高手!這的確是乙個很難回答的問題,但我總結出了答案 不斷學習 積極學習 不斷思考 積極思考。肯定會有人問為什麼是這麼簡單的16個字。請往下看 首先,什麼樣的人叫菜鳥?本意上是指對電腦知識懂的很的人,現在已經逐漸引申為對某一方面懂的少的人了。其實 菜鳥 一詞沒有乙個明確的定義和界限,誰...