【Python系統學習02】數據類型與類型轉換

1、數據類型

  • 字符串
  • 整數
  • 浮點數
  • 【補充中...】html

    一、字符串 str

    字符串:英文string,簡寫str。
name = '小石頭:'
print(name,'2019', '12', '24')
# 小石頭: 2019 12 24

print("平安夜,祝你一輩子平安。Merry Christmas!")
# 平安夜,祝你一輩子平安。Merry Christmas!

以上,包裹在單引號和雙引號裏邊的內容,如‘小石頭’‘2019’這些就是字符串。python

換言之,但凡包裹在英文格式下的 單引號、雙引號或三引號 裏的內容,不論引號裏邊是英文、中文、甚至是數字、符號、火星文等,她都叫作字符串。git

  • 強調⚠️ 引號!引號!引號!!!

二、整數 int

整數:英文爲integer,簡寫作int。github

year = 2019
month = -12 # 能夠爲負數
day = -24 + 12  # 能夠作運算
print('Today is',year,month,day)
# Today is 2019 -12 -12

以上,20191224這三個都是整數。函數

沒有引號包裹的、沒有小數點的、整數數字,就是整數類型。工具

注意⚠️:一旦數字被引號包裹,他就是字符串類型。code

三、浮點數 float

浮點數: 英文名是float,與整數(int)和字符串(str)不一樣。htm

浮點數沒有簡寫。
不過很是好識別,它比整數多了一個小數點『. 』。ip

換言之,帶小數點的數字便是浮點數。字符串

好比下列代碼中的數字都是浮點數。

print(20.19)
# 20.19
print(-12.25) # 能夠爲負數
# -12.25 
print(520.1314 + 07.11) # 能夠作數學運算
# 527.2414

注意⚠️:一樣不能有引號包裹。

浮點數還有一個計算結果有精度偏差的問題。詳見下邊番外篇。

2、類型查詢

  • type()函數

    一、type()函數做用

    查詢、獲取數據的類型。

既然存在不一樣的類型,咱們就須要一個類型檢查工具,來告訴咱們這個數據到底是什麼類型。

二、type用法

只需把查詢的內容放在括號裏就行。

name = '俺是字符串'
value = 123
flr = 12.4
numberStr = '123'

# 以下使用type:
print(type(name))
# <class 'str'>
print(type(value))
# <class 'int'>
print(type(flr))
# <class 'float'>
print(type(numberStr))
# <class 'str'>  儘管是123數字,只要包裹在英文引號中就是字符串

如上打印結果,表明類型的樣式爲<class '類型'>。其中:

  • str表明字符串,全稱爲string

  • 整數的英文簡稱爲int,全稱爲integer

  • float就是浮點數類型

3、類型轉換

  • str()函數
  • int()函數
  • float()函數

所謂,道不一樣不相爲謀,不一樣類型的數據不能拼接在一塊兒。也不能一塊兒共事。爲了讓他們一塊兒共事,就有了類型轉換這麼一個「和稀泥」的操做:

python是類型嚴格的語言,不像JS那樣的若類型語言,會自動進行類型的隱式轉換。因此當不一樣類型的數據進行結合時,須要咱們手動強制進行類型轉換。

強類型語言裏,不一樣類型的數據之間須要進行類型轉換才能一塊兒「共事」。

好比,1+'1'這麼寫,在js中確定沒問題,由於會進行隱式類型轉換,把數字1變成字符串1,而後就變成了字符串拼接,最後的到11。

可是python不會進行隱式類型轉換,他發現你用數字1+字符串1,就會報語法錯誤。

所以當咱們把兩個不一樣類型的數據進行結合處理時,應該手動將其中一方的類型轉換統一成跟另外一方同樣的。

依舊以1+'1'爲例,進行手動類型轉換的方法示例:

a = 1
b = '1'
# print(a + b) 
# # 這麼寫報錯。改正以下:
print(a + int(b)) 
# 2,將字符串轉換爲int類型,進行加法運算
print(str(a) + b) 
# 11,將整數轉爲字符串類型,進行字符串拼接。

負責轉換數據類型的函數一共有3種:str()、 int()和float()。

一、str()函數

str()函數能將數據轉換成其字符串類型,無論這個數據是int類型仍是float類型,只要放到括號裏。這個數據就能成爲字符串類型。

1-一、整數/浮點數 - 轉爲字符串

運用:

# str()
who = '我'
age = 18
item = '歲'

print(who+str(age)+item)
# 我18歲

#經過str(age)一個步驟,能夠將整數類型的【18】轉化爲字符串類型的【'18'】,成功完成數據拼接。

以上是一種整數轉換爲字符串的方法。

1-二、第二種整數轉換爲字符串的方法 - 直接上引號

借用【引號】的幫助,直接將數字轉爲字符串:

# str()
who = '我'
age = 18
item = '歲'

print(who+'18'+item)
# 我18歲

缺陷:引號內咱們使用的是數字,而不是變量名age。這是由於,當咱們使用引號時,引號裏的東西,都會被強制轉換爲字符串格式。若是使用變量名age,這裏就會把age這個變量名轉換爲字符串,打印出「我age歲」

二、int()函數

將其餘數據轉換爲整數類型。當參數爲小數時,會作抹零、取整處理。不會進行四捨五入的哦!

使用方法同str()同樣,將你須要轉換的內容放在括號裏就行,像這樣:int(轉換的內容)。

# int
num1 = '1'
num2 = '8'
print(int(num1)+int(num2))
# 9

注意⚠️:只有符合整數規範的字符串類數據,才能被int()強制轉換:

  • 首先,整數形式的字符串好比'1'和'8',能夠被int()函數強制轉換。

  • 其次,文字形式,好比中文、火星文或者標點符號,不能夠被int()函數強制轉換

  • 最後,小數形式的字符串,因爲Python的語法規則,也不能直接使用int()函數強制轉換。比方說下列代碼,若是點擊運行,程序會報錯。
print(int('1.8'))

# ValueError: invalid literal for int() with base 10: '1.8'
# (值異常:浮點類型字符串沒法使用int()強制轉換)

雖然浮點形式的字符串,不能使用int()函數。但浮點數是能夠被int()函數強制轉換的

能夠先將字符串轉換爲浮點類型,再將浮點數轉換爲int類型。

print(int(float('1.8'))) # 1,先將字符串'1.8'轉換爲浮點數1.8,再直接對浮點數1.8取整的到數字1

三、float()函數

3-一、使用

將須要轉換的數據放在括號裏,像這樣:float(數據)。

3-二、規則

float()函數也能夠將整數和字符串轉換爲浮點類型。

但同時,若是括號裏面的數據是字符串類型,那這個數據必定得是數字形式。如'2.3','52.1'這樣,而不是'我是漢子'這樣的純文字

weight = 43.2
print(float(height))
# 43.2

4、數據類型的應用

  • 字符串拼接
  • 四則運算

一、四則運算

Python裏的整數、浮點數和數學意義的整數、小數是同樣的,它最重要的做用是與運算符號結合,進行數學計算。

二、Python中的運算符

運算符 含義 示例
+ 1 + 1
- 2 - 1
* 1 * 2
/ 4 / 2
% 取模 - 返回除法的餘數 5 % 2 獲得5除以2的餘數
** 冪 - 返回x的y次冪 2 ** 3 獲得2的3次方
// 取整除 - 返回商的整數部分 11 // 2 獲得11/2的商再取整

對上表中的運算符寫幾個例子運行一下:

# 運算符示例
print(20+19)
# 39
print(2020-1993)
# 27
print(20191231*20200101)
# 407864905514331
print(2020/10)
# 202.0
print(23%45)
# 23
print(2**3)
# 8
print(11//2)
# 5

三、運算優先級

和咱們平時的計算優先級是同樣的:

從左到右計算,括號裏的優先計算。

先乘除,後加減。

# 先口算,再運行,看你算的對不對。
print(1234*124+325235-1251)
print((6236-124)/125+326*23)

四、字符串拼接

這就和Javascript中的同樣了
很是簡單,就是利用字符串拼接符號【+】,將須要拼接的變量連在一塊兒就好了。

# 字符串拼接示例
a = '我'
b = '叫'
c = '小'
d = '石'
e = '頭'

print(a+b+c+d+e) # 我叫小石頭

切記⚠️:作字符串拼接也好、運算符表達式也好,+號或其餘符號兩邊的數據類型必須一致,不然會報錯TypeError(詳見第三篇錯誤類型合集B項錯誤記載)。

5、番外 - 浮點數計算精度問題

運算下邊的代碼:

print(0.55+0.3)
# 0.8500000000000001

發現打印結果並不顯而易見的0.85,而是0.8500000000000001。

爲何不是【0.85】,而尾巴多了一個【1】呢?這是由於,Python計算浮點數時,會先把0.55和0.3轉化成二進制數【注:二進制數由0和1表示,逢二進一】,以下:

# 進制轉換
0.55(十進制) = 0.1000110011001100110011001100110011001100110011001101(二進制)
0.3(十進制) = 0.0100110011001100110011001100110011001100110011001101(二進制)

而在這個轉化過程當中存在偏差,這樣,就形成了咱們與程序計算結果的差別。

而後,這倆二進制數經過二進制法則運算後,再經過複雜的計算公式,將二進制結果轉成十進制小數。

原網頁地址

2019.12.31

相關文章
相關標籤/搜索