天天看點

上手python之運算符和字元串格式化

運算符

算術(數學)運算符

運算符 描述 執行個體
+ 兩個對象相加 a + b 輸出結果 30
- 得到負數或是一個數減去另一個數 a - b 輸出結果 -10
* 兩個數相乘或是傳回一個被重複若幹次的字元串 a * b 輸出結果 200
/ b / a 輸出結果 2
// 取整除 傳回商的整數部分 9//2 輸出結果 4 , 9.0//2.0 輸出結果 4.0
% 取餘 傳回除法的餘數 b % a 輸出結果 0
** 指數 a**b 為10的20次方, 輸出結果 100000000000000000000

算術運算符的示範 

加減乘除和求平方,我們在前面已經使用過啦。

現在在帶上:整除以及求餘數,一起試一試吧。

上手python之運算符和字元串格式化

指派運算符 

運算符 描述 執行個體
= 指派運算符 把 = 号右邊的結果 賦給 左邊的變量,如 num = 1 + 2 * 3,結果num的值為7

複合指派運算符 

運算符 描述 執行個體
+= 加法指派運算符 c += a 等效于 c = c + a
-= 減法指派運算符 c -= a 等效于 c = c - a
*= 乘法指派運算符 c *= a 等效于 c = c * a
/= 除法指派運算符 c /= a 等效于 c = c / a
%= 取模指派運算符 c %= a 等效于 c = c % a
**= 幂指派運算符 c **= a 等效于 c = c ** a
//= 取整除指派運算符 c //= a 等效于 c = c // a

字元串擴充 

字元串的三種定義方式

字元串在Python中有多種定義形式:

單引号定義法

雙引号定義法

三引号定義法

三引号定義法,和多行注釋的寫法一樣,同樣支援換行操作。 使用變量接收它,它就是字元串 不使用變量接收它,就可以作為多行注釋使用。

字元串的引号嵌套 

思考:如果我想要定義的字元串本身,是包含:單引号、雙引号自身呢?如何寫?

上手python之運算符和字元串格式化

單引号定義法,可以内含雙引号

雙引号定義法,可以内含單引号

可以使用轉移字元(\)來将引号解除效用,變成普通字元串 

字元串拼接

如果我們有兩個字元串(文本)字面量,可以将其拼接成一個字元串,通過+号即可完成

a="123"
b="456"
print(a+b)      

不過一般,單純的2個字元串字面量進行拼接顯得很呆,一般,字面量和變量或變量和變量之間會使用拼接

字元串格式化

我們會發現,這個拼接字元串也不好用啊 變量過多,拼接起來實在是太麻煩了

字元串無法和數字或其它類型完成拼接。

是以,有沒有其它方式,即友善又支援拼接其它類型呢?

這個方式,就是字元串的格式化

我們可以通過如下文法,完成字元串和變量的快速拼接。

上手python之運算符和字元串格式化

其中的,%s

%  表示:我要占位

s   表示:将變量變成字元串放入占位的地方

是以,綜合起來的意思就是:我先占個位置,等一會有個變量過來,我把它變成字元串放到占位的位置 

那,數字類型呢?可以不可以占位? 那必須可以,我們來嘗試如下代碼:

上手python之運算符和字元串格式化
多個變量占位 變量要用括号括起來 并按照占位的順序填入 
上手python之運算符和字元串格式化

數字也能用%s占位嗎? 可以的哦,這裡是将數字 轉換成了 字元串哦 也就是數字57,變成了字元串"57"被放入占位的地方 

數字類型,也太沒有地位了吧,竟然要被轉成字元串拼接。

有沒有體面一點的方式,讓數字以其原本的面貌拼接進去呢?

安排。 Python中,其實支援非常多的資料類型占位 最常用的是如下三類 

格式符号 轉化
%s 将内容轉換成字元串,放入占位位置
%d 将内容轉換成整數,放入占位位置
%f 将内容轉換成浮點型,放入占位位置

如下代碼,完成字元串、整數、浮點數,三種不同類型變量的占位 

上手python之運算符和字元串格式化

格式化的精度控制 

如下代碼,完成字元串、整數、浮點數,三種不同類型變量的占位

上手python之運算符和字元串格式化

細心的同學可能會發現: 浮點數19.99,變成了19.990000輸出 這裡我們就要講解一下,字元串格式化之“數字精度控制” 

我們可以使用輔助符号"m.n"來控制資料的寬度和精度

m,控制寬度,要求是數字(很少使用),設定的寬度小于數字自身,不生效 .

n,控制小數點精度,要求是數字,會進行小數的四舍五入

示例: %5d:表示将整數的寬度控制在5位,如數字11,被設定為5d,就會變成:[空格][空格][空格]11,用三個空格補足寬度。

%5.2f:表示将寬度控制為5,将小數點精度設定為2       小數點和小數部分也算入寬度計算。如,對11.345設定了%7.2f 後,結果是:[空格][空格]11.35。2個空格補足寬度,小數部分限制2位精度後,四舍五入為 .35

%.2f:表示不限制寬度,隻設定小數點精度為2,如11.345設定%.2f後,結果是11.35

上手python之運算符和字元串格式化

字元串格式化方式2 

目前通過%符号占位已經很友善了,還能進行精度控制。 可是追求效率和優雅的Python,是否有更加優雅的方式解決問題呢?

那當然:有 通過文法:f"内容{變量}"的格式來快速格式化 看如下代碼

上手python之運算符和字元串格式化
這種寫法不做精度控制
也不理會類型
适用于快速格式化字元串      

對表達式進行格式化 

剛剛的示範,都是基于變量的。

可是,我想更加優雅些,少寫點代碼,直接對“表達式”進行格式化是否可行呢?

那麼,我們先了解一下什麼是表達式。

表達式:一條具有明确執行結果的代碼語句 如: 1 + 1、5 * 2,就是表達式

,因為有具體的結果,結果是一個數字 又或者,常見的變量定義: name = “張三”     age = 11 + 11 等号右側的都是表達式呢,因為它們有具體的結果,結果指派給了等号左側的變量。

那麼,對于字元串格式化,能否直接格式化一個表達式呢? 可以,上代碼: