日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python基础(二)--数据类型,运算符与流程控制

發布時間:2024/7/5 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python基础(二)--数据类型,运算符与流程控制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

目錄

?

? ? ? ? ? ? ? ??Python基礎(二)--數據類型,運算符與流程控制

1?數據類型

1.1 Python中的數據類型

1.2 整數類型(int)

1.3 布爾類型

1.4 浮點類型

1.5 復數類型

1.6 類型轉換

2 運算符

2.1?算術運算符

2.2 布爾運算符

2.3 比較運算符

2.4 位運算符

2.5 賦值運算符

2.6 運算符優先級

3 流程控制

3.1 選擇結構

3.2 循環結構


? ? ? ? ? ? ? ??Python基礎(二)--數據類型,運算符與流程控制

1?數據類型

1.1 Python中的數據類型

在Python中,數據可以分為如下類型:

數值類型

整數類型:int

浮點類型:float

復數類型:complex

布爾類型:bool?
序列類型

列表:list

元組:tuple

字符串:str

字節:bytes

映射類型:dict?
集合類型:set?
其他內置類型?

注意:①變量本身嚴格來說是沒有類型的,其所關聯的對象類型,這與其他語言的差別較大(C,Java等)。因此,我們常習慣的成Python的類型為“鴨子類型”,這是一種動態類型的體現;②由于變量必須要關聯一個具體的對象,才能確定變量的值,所以在定義變量時,不能只給出變量的名字,必須同時要給出變量多關聯的對象;③Python2中還支持長整數類型(long),在Python3中取消。

1.2 整數類型(int)

我們數學上使用的整數,例如,3,-50等,這些都是整數類型。整數類型支持四種進制表示:①二進制(使用0b或0B前綴)②八進制(使用0o或0O前綴)③十進制(無前綴)④十六進制(使用0x或0X前綴,10?~ 15使用a ~ f或A?~ F表示)

# 二進制 x = 0b10111 print(x) # 八進制 x = 0o666 print(x) # 十進制 x = 6 print(x) # 十六進制 x = 0x1f66 print(x)

結果為:,以十進制的形式顯示

進制轉換:①bin其他進制轉換為二進制②oct其他進制轉換為八進制③int其他進制轉換為十進制④hex其他進制轉換為十六進制

x = 666 print(bin(x)) print(oct(x)) print(int(x)) print(hex(x))

結果為:

注意:返回的不是數值,是字符串

分割符_:當數值較大時(尤其是二進制),對程序的可讀性會造成影響,此時,我們可以在數值之間使用一個_進行分隔,從而提高程序的可讀性(Python3.6)。

number = 1234_5665_4321

1.3 布爾類型

布爾類型(bool)表示的是一種條件的判斷,具有兩個值:True與False。其中,True表示條件成立,即為“真”,而False表示條件不成立,即為“假”。

布爾類型是整數類型的子類型。實際上,True就是1,False就是0。因而,我們也可以使用布爾類型參與數學上的運算,與使用1與0參與運算的結果是一樣的。

1.4 浮點類型

浮點類型(float)就是數學上的小數類型。例如:6.0,-6.6等,都是浮點類型。在進制表示上,浮點類型僅支持十進制表示(這點不同于整數類型)。除了常規的表示方式外,浮點類型也可以使用數學上科學計數法的形式表示,例如:6.6e30

注意:①十進制的整數類型不能使用0開頭,但是,浮點類型可以以0開頭。②浮點類型具有兩個特殊值:NaN(Not?A Number)與Infinity(無窮大),其中無窮大又可分為正無窮(+Infinity)與負無窮(-Infinity)。我們可以通過float函數來獲得這些值。NaN有一個特征,就是自己不等于自己,因此,我們不能通過==來判斷一個數值是不是NaN。

import sys # 浮點類型的范圍與實現有關,通常使用程序中的double類型來實現 f = 6.6e666 print(f) print(sys.float_info) print(sys.float_info.max) print(sys.float_info.min)

結果為:

# float類型的特殊值 print(float("NaN")) print(float("Infinity")) n = float("NaN") # NaN是特殊的值,不等于任何值,包括自身 print(n == n) # 因為NaN不等于任何值,所以不能用==進行判斷,而是使用math提供的函數isnan進行判斷,如果參數是nan,則返回true,否則返回False import math print(math.isnan(n))

結果為:

浮點類型的不精確性:

在使用浮點類型時,我們需要留意,浮點類型在計算機中僅是近似的存儲,浮點類型是不精確的。因此,我們要避免進行如下的操作:①避免數量級相差很大的浮點值之間進行運算②避免進行等量的比較。

# 避免數量級相差很大的兩個浮點數進行計算 f1 = 6e20 f2 = 6 print(f1 + f2) # 避免進行等量的判斷 f1 = 0.1 f2 = 0.2 print(f1 + f2) print(f1 + f2 == 0.3)

考慮到浮點類型的不精確性,因此,如果我們需要進行精確計算時,我們可以使用decimal模塊中的Decimal類來實現,該類提供精確的浮點計算。此外,我們也可以指定Decimal的計算精度,即計算結果最多保留的有效數字位數,默認為28位有效數字。

但是Decimal要慎用,因為非常消耗性能

# Decimal類型進行精確的浮點計算 import decimal x = decimal.Decimal(0.1) y = decimal.Decimal(0.2) print(x) print(y) # Decimal計算,默認有28位有效數字 # 獲取decimal計算上下文環境后,即可設置有效位數 context = decimal.getcontext() context.prec = 10 x = decimal.Decimal(0.1) y = decimal.Decimal(0.2) print(x + y)

1.5 復數類型

復數類型(complex)類似于數學上的復數。含有虛部(使用j或J后綴)的數值為復數類型。例如:3 + 5j,-2 - 3j(數學中虛部后綴為i)。復數分為實部與虛部兩個部分,我們可以通過real與imag屬性分別獲取復數的實部與虛部的值。

x = 6 + 8j print(x.real) print(x.imag)

1.6 類型轉換

(1)獲取數據類型

我們可以通過type函數獲取變量的類型,準確的講,應該是變量所關聯的對象的類型。

a = 6 b = 6.6 c = 6 + 8j # int,float,complex可以進行混合運算,結果類型為參與運算的數據類型中較高的一個:int<float<complex print(type(a + b)) print(type(a + c)) print(type(b + c))

(2)類型轉換函數

Python中為我們提供了如下的轉換函數:

①int(value):將數值類型或字符串轉換為整數(int)類型。如果沒有參數,返回0

②float(value):將數值類型或字符串轉換為浮點(float)類型。如果沒有參數,返回0

③complex(real,imag):根據實部與虛部(可選)創建一個復數。如果沒有參數,返回0j

④bool(value):參數為真值時,返回True,否則返回False

a = 6 b = 6.6 c = True d = 6 + 8j # float類型轉換為int類型時,去掉小數點后面的內容,取整數部分,int,float轉換成complex時,虛部為0 print(int(b)) print(complex(a)) print(complex(b)) # 注意:復數類型就不能夠通過int或float轉換為整數或浮點類型。 # print(int(d)) 這是不合法的# 在Python中任何類型都能轉換成bool類型。True就是1,False就是0 print(bool(0),bool(6),bool(6.6),bool(6+6j)) print(int(True),int(False),float(True),float(False),complex(True),complex(False))

其他:①int函數還可以提供第二個參數,指定解析轉換時,使用的進制。此時,第一個參數需要是字符串類型(或字節等類型),不能是數值類型。例如:int(“600”, 16),則會根據16進制來解析600。如果沒有指定第二個參數,則默認為十進制。

2 運算符

運算符,即具有特殊計算規則的符號。運算符涉及到的,參與運算的數據,稱為操作數。不同的運算符,涉及的操作數也不相同。由運算符與操作數結合起來的計算式,稱為“表達式”。

運算符可分為:算術運算符;布爾運算符;比較運算符;位運算符;賦值運算符

2.1?算術運算符

用來進行類似數學上的加減乘除運算

符號

說明

x +?y

加法運算,返回x與y的和。

x – y

減法運算,返回x與y的差。

x *?y

乘法運算,返回x與y的積。

x /?y

除法運算,返回x與y的商(浮點類型)。

x //?y

除法運算,返回x與y的商(向下取整)。

x %?y

取模運算,返回x模y的結果。

x **?y

乘方運算,返回x的y次方。

+x

正號,x的值不會改變,該符號可以省略。

-x

負號,取x的相反數。

在除法運算時,除數不能為0,否則會產生錯誤(ZeroDivisionError)。

取模運算(“Module Operation”)和取余運算(“Complementation ”)兩個概念有重疊的部分但又不完全一致。主要的區別在于對負整數進行除法運算時操作不同。

取余與取模的差別:取余向0取整(余數符號與被除數相同),取模向下取整(余數符號與除數相同)。

被除數 -?除數 * 商 = 余數,被除數 = 除數 * 商 + 余數

# 正數的取余運算與取模運算結果一樣 print(7 % 4) # 負數的取模運算: # 被除數為-7,除數為4,商為-1.75,向下取整為-2(取模),向0取整為-1(取余) # 根據公式:被除數 - 除數 * 商 = 余數 得 -7 - 4*(-2)=1 print(-7 % 4)

2.2 布爾運算符

布爾運算符也稱邏輯運算符

符號

說明

x and y

如果x為True,返回y,否則返回x。

x or?y

如果x為True,返回x,否則返回y。

not?x

如果x為True,返回False,否則返回True。

x與y可以是任意類型,因為在Python中,任意類型都可以轉換為布爾類型。

# and連接兩個表達書,表示并且。兩個表達式都為True,整個表達式才為True print(6 == 8 and 6 ==6) # or連接兩個表達式,表示或。兩個表達式中有一個為True,整個表達式為True print(6 == 8 or 6 ==6) # not表示對條件的否定。True-》False。False-》True print(not True)

注意:and與的表達式未必一定是bool類型,可以是任意類型,因為任何類型都可以轉換成bool類型

# and,如果如果第一個表達式為False,第二個表達式不是True或False,則返回第一個表達式;如果第一個表達式為True,則返回第二個表達式 # or,與and相反,如果第一個表達式為True,返回第一個表達式,否則返回第二個表達式 print(6 and "a") print(6 or "a") #and與or的短路操作,當and的第一個表達式為False,或者or的第一個表達式為True,此時就可以確定整個表達式的值,第二個表達式會直接跳過,不會執行 print(0 and print("不執行"))

2.3 比較運算符

比較運算符執行的是比較運算,如果表達式成立,返回True,否則返回False。

符號

說明

x >?y

如果x大于y,返回True,否則返回False。

x >= y

如果x大于等于y,返回True,否則返回False。

x <?y

如果x小于y,返回True,否則返回False。

x <=?y

如果x小于等于y,返回True,否則返回False。

x ==?y

如果x等于y,返回True,否則返回False。

x !=?y

如果x不等于y,返回True,否則返回False。

x is?y

如果x與y是同一個對象,返回True,否則返回False。

x is not y

如果x與y是不同的對象,返回True,否則返回False。

在Python語言中,比較運算符支持鏈式比較,在java語言中是不支持的。x < y < z相當于x < y and y < z,不同之處僅在于,后者中y只會計算一次。鏈式比較與拆分成and或or連接的表達式一樣,也會進行短路操作。

is與==,is not與!=的區別在于,==與!=比較的是對象內部的值是否相等,而is與is not比較的是兩個對象是否為同一個對象。

?

2.4 位運算符

位運算符提供的是對位(bit)進行的操作。位運算符的操作數要求是整數類型(布爾類型)。位運算符如下表所示

符號

說明

x & y

x與y按位與運算,如果兩個位都是1,結果為1,否則結果為0(有0則結果為0)。

x | y

x與y按位或運算,如果兩個位都是0,結果為0,否則結果為1(有1則結果為1)。

x ^?y

x與y按位異或運算,如果兩個位相同,則結果為0,如果兩個位不同,則結果為1(有1則為1,但又不同時為1)。

x <<?y

將x向左移動y位,右側以0進行填充。y不能為負值,否則會產生ValueError。

x >>?y

將x向右移動y位,左側以符號位進行填充。y不能為負值,否則會產生ValueError。

~x

對x進行按位取反,即1變為0,0變為1。

注意:布爾類型作為整數類型的子類型,也可以參與位運算,但是,最好不要這樣,因為布爾類型的作用是進行邏輯上的判斷,而不是當成數值1與0參與數學運算。

?

2.5 賦值運算符

賦值運算符包括簡單賦值運算符與復合賦值運算符。

符號

說明

x = y

簡單賦值運算。即x關聯y所關聯的對象。

x op=?y

復合賦值運算。op可以是任意二元算術運算符與二元位運算符。

x?op= y相當于x?= x op y。例如x?+= y相當于x?= x + y。

?

2.6 運算符優先級

同一行的運算符具有相同的優先級從高到低進行排列。如下:

運算符優先級

. ???() ???[]

**

+(正號) ???-(負號) ???~

* ???/ ???// ???%

+ ???-

<< ???>>

&

^

|

in ???not in ???is ???is not ???< ???<= ???> ???>= ???== ???!=

not

and

or

= ???op=(+ - * / // % ** >> << & ^ |)

當我們在使用表達式,無法確定優先級時,我們可以使用小括號()來調整表達式的結合性,小括號()的優先級是最高的。

?

3 流程控制

流程:即程序執行的過程。程序的三種結構:順序結構(按部就班,自頂而下的去執行的);選擇結構;循環結構

3.1 選擇結構

(1)if

縮進的語法:縮進大小隨意,但是要保持一致。按照慣例,使用4個空格。

if 表達式:

? ? if語句體

如果表達式為True,或者可以轉換為True則執行語句體,否則不執行

age = 20 if age >18:print("成年了") print("沒有縮進,不是if的語句體")

(2)if-else

提供兩條分支。

age = 16 if age >18:print("成年了") else:print("未成年")

(3)if-elif

可以實現多分支判斷,if-else只能實現兩分支判斷

if 表達式:

? ? 語句體

elif 表達式:

? ? 語句體

更多的elif 表達式:

? ? 語句體

# 注意:多分支選擇條件有包含關系,需要將范圍小的放在前面,范圍大的放在后面 number = int(input("輸入數字")) if number > 90:print("A") elif number > 80:print("B") elif number > 70:print("C") elif number > 60:print("D")

(4)if-elif-else

if 表達式:

? ? 語句體

elif 表達式:

? ? 語句體

...

else:

? ? 語句體

# 注意:多分支選擇條件有包含關系,需要將范圍小的放在前面,范圍大的放在后面 number = int(input("輸入數字")) if number > 90:print("A") elif number > 80:print("B") elif number > 70:print("C") elif number > 60:print("D") else:print("E")

(5)if-else的簡化

類似于其他語言中的三元運算符。格式為:

? ? 表達式1 if 條件表達式 else 表達式2

其中,條件表達式執行條件判斷,如果條件表達式的值為True,則返回表達式1的值,否則返回表達式2的值。

number = int(input("輸入數字")) print("小" if 1<= number <3 else ("大" if 3<= number<6 else "輸入有誤"))

(6)if嵌套

if是嵌套使用的,用來多層選擇分支的判斷。

gender = "男" age = 20 if gender == "男":print("男性")if age >= 18:print("做苦力")else:print("玩耍") else:print("女性")if age >= 18:print("做飯")else:print("玩耍")

(7)斷言

斷言:判斷某些語句是否正確。通過斷言,我們可以為應用程序加入調試信息,從而檢測程序關鍵點位置的準確性。

斷言使用assert關鍵字,語法格式為:

? ? assert 表達式? ? ? ? 或? ? ? ? ??assert 表達式,錯誤信息

在執行斷言語句時,會對表達式1進行求值,如果該值轉換為布爾類型后為False,則會產生錯誤信息。其中,第二種形式的錯誤信息是可選的,如果給出錯誤信息,則會在表達式為False的時候,輸出我們指定的錯誤信息。

斷言有什么用處呢?我們可以自行通過if語句,使用raise拋出異常來實現啊。其實斷言底層其實就是通過if語句判斷與異常來實現的。

斷言是通過__debug__來控制的,如果該變量為True,則會開啟斷言,進行判斷,一旦斷言表達式為False,就會產生異常。如果該變量為False,則不會開啟斷言,就算斷言表達式為False,也不會產生異常(因為根本沒有執行)。__debug__是Python中的內置常量值,該常量值默認為True,如果在運行Python時,命令行指定了-O選項,則該常量值為False。因此,我們可以方便的開啟與關閉斷言(通過-O選項)。這比使用if語句要靈活,因為使用if語句,程序會無條件的判斷,無法進行控制。

password1 = input("請輸入密碼") password2 = input("請再次輸入密碼") # 設下斷言,當兩次密碼一致才進行后續的操作 assert password1 == password2 print("繼續執行")

3.2 循環結構

循環就是重復性的執行一件相同或相似的事情

(1)while

while 表達式:

? ? 循環體

如果表達式為true則重復執行語句體

x = 0 y = 10 sum = 0 while x <= 10:sum += xx += 1 print(sum)

(2)for

for 變量 in 可迭代對象:

? ? 循環體

對可迭代對象的每個值,依次賦值給變量,然后執行一次循環體

# range函數,能夠產生一個區間的整數值,是一個可迭代對象 # range(end) 產生0-end區間的整數值,包括0,不包括end # range(start,end) 產生start-end區間的整數值,包括start,不包括end # range(start,end,step) 產生start-end區間的整數值,包括start,不包括end,step指定步長,默認為1 for x in range(2,10,2):print(x,end=" ")

(3)循環嵌套

循環嵌套,是指外層循環的內部,還有內層循環,即內層循環作為外層循環的循環體。當循環嵌套時,外層循環每執行一次,內層循環都會完整的執行一輪。如果外層循環會執行m次,內層循環會執行n次,則總共會執行m * n次。

for i in range(1,5):for j in range(1,i+1):print("*",end= "")print()

(4)break與else

break只能在循環中使用。else可以跟隨在for或while循環之后,當循環正常執行完畢,會執行else語句,如果循環非正常執行完畢,而是通過break跳出循環,則else語句塊不會得到執行。else語句是可選的。

# break用于提前完成任務,結束循環 for i in range(1,10):if i == 5:print("i為5")break # for 與 while循環可以加上一個可選的else,如果循環沒有因為break提前結束,則執行else語句體,否則不執行 num = 6 for i in range(1,10):if i == num:print("存在num")break else:print("不存在num")

(5)continue

continue只能用在循環語句中。用來結束本次循環,開啟下一次循環,對后續的循環沒有影響

注意:break與continue基本只會用在選擇判斷中。無條件的break與continue雖然語法上沒有錯誤,但從實際的角度來說是沒有意義的。

# continue用來表示當前循環已經不滿足條件時,可以使用continue提前結束本次循環,開啟對下一個值進行判讀。 for i in range(1,10):if i == 5:continueprint(i,end=" ")

?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Python基础(二)--数据类型,运算符与流程控制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。