首頁 > 軟體

python變數資料型別和運運算元

2022-07-12 22:06:58

1 資料型別

不同型別的變數可以進行的運算是不同的,所以必須理解變數的型別,python中資料型別可以分為:

內建型別:

  • 數值型別:整型int,浮點型float,複數(complex) 3+5j
  • str:字串
  • bool:布林值【True,False】
  • None:空值,表示變數沒有確定的值
  • list:列表
  • tuple:元組
  • dict:字典
  • set:集合

自定義型別:

  • class :

1.1 基礎型別

數值型別:

  • 整型(int): python3中只有int一種,可以表示整數,例如:10,-5,10000
  • 浮點型(float): 表示帶小數點的實數,有兩種表示法:
    • 小數表示: 1.9 .23
    • 科學計數法: 用e來表示10的指數,1e2就代表了100,注意e前面必須有數值,e後面必須為整數
  • 複數(complex):表示數學上的無理數,形如:a+bj
  • 布林型(bool):表示事務的兩種狀態,男女、陰晴、亮暗等,它只有兩個值:True,False
  • None:表示空物件,一般用於判斷,不同於0和空字元
  • 字串(str):在python中,用引號(單引號、雙引號、三引號)表示字串

字串的表示:

# 用單引號表示: 'hello'
# 用雙引號表示:"我用python"
# 用3個單引號表示:可以表示多行文字,例如:
'''偉大

祖國
'''
# 用3個雙引號表示:可以表示多行文字,例如:
"""生死看淡,
不服就幹"""

  • 跳脫字元:有些特殊字元無法從鍵盤輸入,可以使用跳脫字元表示,另外,無論是單引號、雙引號還是三引號字串,其中引號是字串界定符,引號並不是字串的內容,那麼如何在單引號字串中表示一個單引號呢,這也可以使用跳脫字元表示。常見的跳脫字元

跳脫字元

描述

跳脫字元

描述

​'​

表示一個普通字元單引號

n

換行

​"​

表示一個普通字元雙引號

r

回車

​'''​

一個普通的三單引號

​\​

一個普通的字元

​"""​

一個普通的三雙引號

a

響鈴

t

tab鍵

b

回刪一個字元

  • 字串編碼:計算機只能識別二進位制,那麼字串如何儲存到計算機裡呢

計算機不能直接儲存字串,但我們可以將字元編碼,例如用65表示大寫字元A,66表示大寫字元B....等這種表示方式就是美國類的ASCII碼,只能表示127個字元,但對於美國人來說已經足夠了。一但能用整數表示字元,我們可以很方便的把整數用二進位制表示,那麼字串也就和容易儲存到計算機了。
但還有很多其他國家的語言是不能用ASCII表示的,所有ISO組織就推出了unicode碼,用來表示任何一種語言的字元,unicode碼也稱之為萬國碼,通用碼,可以表示任何一種語言的任何一個字元。unicdoe碼有多中表示方式,例如:utf-8、utf-16、utf-32等。一般使用較多的是utf-8,utf-8是一種變長的編碼,表示一個字元可能用一個位元組,也可能是三個位元組
中文常用編碼一般用GBK編碼,用2個位元組表示一個漢字

1.2 型別判斷

我們可以使用type和isinstance來測試和判斷資料型別

#type用法:
type(obj)
功能:返回obj的資料型別
引數:obj是你要測試變數或數值
範例:
age = 10
name = 'hello'
print(type(name),type(age))
#判斷變數是否是指定型別
if type(age) is int:
print('是')
else:
print('否')

#isinstance用法:
isinstance(obj,typename)
功能:判斷obj是否是指定型別,是返回True,否返回False
引數: objobj是你要判斷的變數或數值
typename是指定資料型別,可以是int,float,str等。也可是一個
型別的元組,例如:(int,float)
範例:
age = 10
name = 'hello'
print(isinstance(age,int))
print(isinstance(name,(str,int)) #只要name是str或int的一種就返回True

if isinstance(age,int):
print('是')
else:
print('否')

#type和isinstance的區別
type判斷基本型別是沒問題的,但無法判斷子類物件是父類別的一種
isinstance可以判斷子類物件是父類別的一種
class A:
pass
class B(A):
pass

objA = A()
objB = B()

#輸出否
if type(objB) is A:
print('是')
else:
print('否')
print(isinstance(objB,A)) #True

結論:優先使用isinstance

2. 運運算元和表示式

在數學上為了計算結果,我們會寫一些式子計算,例如:

30 + 5

這是數學中的計算式,python中為了計算也有類似的式子,叫表示式。在表示式中30和5稱作運算元,+稱之運運算元。表示式的目的在於計算結果。表示式構成:

  • 最基本的表示式就是一些數值,變數、函數,例如: 3, a(變數) print(‘hello’)
  • 由基本表示式加上適當的運運算元構成複雜的表示式: 3 + a

綜合上述,所謂表示式就是由運算元和運運算元組成䄦符合python語法的式子。要寫表示式首先要學習運運算元。關於運運算元要知道兩件事情

  • 計算順序 : 是從左向右算還是從右向左算
  • 優先順序 : 比如先乘除後加減

2.1 算術運運算元

a = 20
b = 10

運運算元

說明

範例

-

負號,取原數的相反數

a = 10 print(-a) #-10

+ - * /

加減乘除,同數學上一樣

a + b = 30 a - b = 10 a * b = 200 a / b = 2

%

模運算,即求 a整除以b的餘數

a % 10 = 0

//

整除

a // b = 2

**

對運運算元進行指數(冪)計算

a ** b 表示20的10次方

2.2 模運算說明

  • 模運算的符號取決於第二個運算元(右運算元)
  • 模運算的計算公式:r = a % b = a - n * b,其中n是小於a/b的最大整數
  • 整除(//)運算如果有一個運算元是浮點數,結果是浮點數
  • 用途:判斷奇偶、判斷是否能夠整除、最大公約數、水仙花數

2.3 數學函數

函數名

函數的說明

範例

abs

取絕對值

abs(-10)

pow(x,y)

x的y次方

pow(10,2)求10的平方

round(x,[n])

浮點數的4舍5入, n代表保留小數的位數

round(3.456)

max()

求給定引數的最大值

max(21,43,65,75,86,32,3,45)

min()

求給定引數的最小值

min(21,43,65,75,86,32,3,45)

math.ceil()

需要匯入import math庫 向上取整

math.ceil(18.1) #19

math.floor()

需要匯入import math庫 向下取整

math.floor(18.1) #18

math.sqrt

需要匯入import math庫 求平方根

math.sqrt(100)

​ ​python3.5.2中文幫助檔案​​

  

2.4 隨機函數

獲取亂數,需要引入random庫。

import random

函數名

函數說明

random.randrange(start,stop,step)

start 指定範圍的起始值 包含本身,預設是0;stop 指定範圍的結束值 不包含本身; step 步長,預設步長是1。該函數返回一個整數

random.randint(start,end)

返回[start end]之間的一個隨機整數,start必須小於end

random.random()

返回一個[0.0,1.0)之間的隨機小數

注意:

  • 優先順序: ** >正負號 > // % * / > + -
  • 從左向右算
  • 在冪運算和一元運運算元聯合計算時,從右向左算,例如: -1 ** 2 = -1

2.5 賦值運運算元

a = 5; b = 10; c = 20

運運算元

說明

範例

=

簡單賦值, 將b+c的結果賦給a

a = b +c #a=30

+=

a += b等價於 a = a +b

a = 15

-=

a -= b等價於 a = a - b

a = -5

*=

a *= b等價於 a = a * b

a = 50

/=

a /= b 等價於a = a / b

a = 0.5

%=

a %= b等價於a = a % b

a = 5

//=

a //= b等價於 a = a // b

a = 0

**=

a **= b等價於a = a ** b

 

注意:

  • 賦值運運算元左邊必須是變數
  • 從右向左算
  • 沒有賦值表示式
  • 所有賦值運運算元優先順序相同,賦值運運算元優先順序非常低,僅高於成員運運算元和身份運運算元、邏輯運運算元
  • 注意在複合賦值中
a = 2
b = 3
a *= b + 2 #等價於 a = a * (b + 2)
print(a) # a = 10

2.6 關係運算

關係運算就是比較運算,如果表示式成立,返回True,否則返回False。關係運算的結果是布林值。

運運算元

範例

說明

==

a == b

a和b值相等,結果是True,a和b值不相等結果為False

!=

a != b

a不等於b 結果為True,否則結果為True

>

a > b

a大於b結果為True,否則為False

>=

a >= b

a大於等於b結果為True,否則為False

<

a < b

a小於b結果為True,否則為False

<=

a <= b

a小於等於b結果為True,否則為False

注意

  • 優先順序: 比較運運算元優先順序相同
  • 從左向右算
  • 可以這樣算:​1 < a < 3​​ 等價於 a > 1 and a < 3

2.7 邏輯運算

邏輯運運算元可以用於構造複雜條件。邏輯運運算元包括:

  • 邏輯與 and 對應漢語的意思是“並且” 、 “同時”
  • 邏輯或 or 對應漢語意思為"或者"
  • 邏輯非 not 對應漢語意思為”相反“

在邏輯運算中,False、None、0、0.0、‘’(空字串)被看做假(False),其它的看做真(True)

2.7.1 邏輯與

a

b

a and b

任意值

b的值

任意值

a的值

  • 表示式 a and b的值為: 如果a為真,結果為b的值,否則結果是a的值

2.7.2 邏輯或

a

b

a or b

任意值

a的值

任意值

b的值

  • 表示式a or b的值為:如果a為真結果為a的值,否則結果是b的值

2.7.3 邏輯非

a

not a

False

True

小結:a為真則表示式為False,否則表示式為True

2.8 短路計算

  • 對於邏輯與表示式 a and b,如果a為假,則不計算b
  • 對於邏輯或表示式 a or b ,如果a為真,則不計算b

2.9 注意事項

  • 優先順序 not > and >or

2.10 身份運運算元

is: 判斷兩個識別符號是否參照自同一個實體【物件】,比較的是兩個物件的id是否一樣,如果相同為真,否則為假

is not:判斷兩個識別符號是不是參照自不同的實體【物件】如果兩個物件的id不同結果為真,否則為假

id()函數獲取實體的id(地址)

注意:is和==的區別

  • is用於判斷兩個變數參照實體是否為同一個【id】
  • ==用於判斷兩個變數的值是否相同,但id不一定相同

2.11 成員運運算元

主要應用在序列中

in:如果在指定的序列中找到指定的值,則返回True,否則返回False

not in:如果在指定的序列中未找到指定的值,則返回True,否則返回False

2.12 if-else表示式

表示式1 if 條件 else 表示式2,如果條件為真假結果是表示式1的值,否則結果是表示式2的值

到此這篇關於python變數資料型別和運運算元的文章就介紹到這了,更多相關python 運運算元內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com