爲了方便你的學習,減輕負重,我特意將基礎語法分成上下兩部分。希望你喜歡這種方式,如果不喜歡,你可以跟我說,反正我是不會改的,哈哈~~。
如果上部分,你還沒看的話,先去看《第4天 | 12天搞定Python,基礎語法(上)》。
python在處理數據時,不可避免的要進行數據類型之間的轉換,諸如整型和字符串之間的轉換。
4.5 類型轉換
轉換有隱式和顯式轉換,隱式也稱自動轉換,不用做處理。顯示轉換,也稱爲數據類型的強制類型轉換,通過內置函數實現。
1. 轉爲整型
通過內置函數int(x [,base]),可把x值轉爲整數。其中base是進制,默認是10進制。
# 浮點數轉爲整型,截斷小數點
f = 99.5
to = int(f)
print(to)
# 布爾轉爲整型
b = True
to = int(b)
print(to)
# 字符串轉爲整型
s = "520"
to = int(s)
print(to)
# 轉爲16進制
print(int(s, base=16))
輸出結果
99
1
520
1312
轉換是不是都會成功?--不一定,像字符串內容,比如“酷”,就沒辦法轉成整數。有時候扮酷,是需要付出代價的。
# 非數字內容
s = "酷"
# 轉換爲整數,報錯
to = int(s)
print(to)
輸出結果
to = int(s)
ValueError: invalid literal for int() with base 10: '酷'
既然有異常,那得處理。可在轉換前,通過isdigit()函數判斷字符串內容是否全是數字,是才轉換,不是的話,做其他處理。這裏提前劇透條件語句。
# 非數字內容
s = "酷"
if s.isdigit():
to = int(s)
print(to)
else:
print("做其他處理。")
輸出結果
做其他處理。
2. 轉爲浮點型
通過float(x),把x值轉爲浮點型。
# 整型轉爲浮點數
i = 99
to = float(i)
print(to)
# 字符串轉爲浮點數
s = "520.00"
to = float(s)
print(to)
輸出結果
99.0
520.0
字符串轉爲浮點數的過程中,也存在不成功的情況。可惜Python沒有直接的函數,可以判斷是否爲浮點數。最簡單直接的判斷方法,就是用捕捉異常的方法進行處理。
# 字符串內容
s = "13.10d"
try:
f = float(s)
print("真的是浮點型")
except ValueError:
print("不是浮點型")
輸出結果
不是浮點型
3. 轉爲布爾型
在Python裏,整型、浮點型、字符串都可以轉爲布爾類型。除了0爲False,其他的全爲True。其中字符串記得用eval()取得表達式,否則"0"返回的是True。因爲“0”不是0。
# 整型轉爲布爾
i = 0
to = bool(i)
print(to)
# 浮點數轉爲布爾
f = 99.2
to = bool(f)
print(to)
# 字符串轉爲布爾
s = "0"
to = bool(eval(s))
print(to)
輸出結果
False
True
False
4. 轉爲字符串
通過str(x)函數把x內容,轉爲字符串,x是指定對象,包括整型、浮點數、數組等等。
# 整型轉爲字符串
i = 102
to = str(i)
print(to)
# 浮點數轉爲字符串
f = 36.6
to = str(f)
print(to)
# 布爾轉爲字符串
b = 0
to = str(b)
print(to)
# 數組轉爲字符串
array = ["101", "102", "103", "106"]
to = str(array)
print(to)
好的,類型轉換到這就告一個段落了,下面,我們進入運算符。
4.6 運算符
一進入小學,咱們就與算術結下了不解之緣,從手算、心算到口算,越算越聰明,越聰明越算,沉迷在算術的世界。可是自從了計算機以後,連寫字都懶了,更別提算術了。
誰叫計算機除了可以進行加減乘除算術運算外,還可以進行左邊值與右邊值的比較運算,再者還可以通過and、or、not運算符進行的邏輯運算呢。
1. 算術運算
算術運算,就是通過+、-、*、%、//符號進行加減乘除、取餘和取模的運算,其中被除數不能爲0。
(1) 整數和整數相加減、相乘,結果是整數。除的時候,若出現小數,自動轉爲浮點數。
a = 12 # 整數
b = 20 # 浮點數
# 加法運算
c = a + b
print(c)
# 減法運算
c = a - b
print(c)
# 乘法運算
c = a * b
print(c)
# 除法運算,結果有小數
c = a / b
print(c)
輸出結果
32
-8
240
0.6
(2) 整數和浮點數運算,整數會自動升爲浮點數,這就是隱式轉換,而用轉換函數那些的稱作顯式轉換。
a = 20 # 整數
b = 20.25 # 浮點數
# 加法運算
c = a + b
print(c)
# 減法運算
c = a - b
print(c)
# 乘法運算
print(c)
# 除法運算
c = a / b
print(c)
輸出結果
40.25
-0.25
-0.25
0.9876543209876543
(3) 浮點數和浮點數進行運算時,結果會出現偏差。像20.65-16.25正確答案應爲:4.4,結果卻是:4.399999999999999 。
a = 20.65 # 浮點數
b = 16.25 # 浮點數
# 加法運算
c = a + b
print(c)
# 減法運算
c = a - b
print(c)
# 乘法運算
print(c)
# 除法運算
c = a / b
print(c)
輸出結果
36.9
4.399999999999999
4.399999999999999
1.2707692307692307
(4) 浮點數偏差問題,可以通過Decimal函數進行解決。
from decimal import Decimal
a = 20.65 # 浮點數
b = 16.25 # 浮點數
# 減法運算
c = Decimal(str(a)) - Decimal(str(b))
print(float(c))
輸出結果
4.4
(5) 取模取餘
通過%進行取餘運算,結果返回除法的餘數。通過//進行取模運算,結果返回商的整數部分。
a = 20
b = 16
# 取餘運算
c = a % b
print(c)
# 取模運算
c = a // b
print(c)
輸出結果
4
1
(6) 冪運算
通過**進行冪運算,結果返回x的y次冪,跟內置函數pow()相同作用。
x = 2
y = 5
# 冥運算
z = x ** y
print(z)
# 冥函數
z = pow(x, y)
print(z)
輸出結果
32
32
(7) 複合賦值
複合運算符是算術運算符和賦值運算符合在一起的一種運算符,主要作用方便改變變量的值,有+=、-= 、*=、/=、%=、//=、**= 這7種。a += b ,表示a = a + b。其他的也類似。
a = 10
b = 20
# 加法賦值運算
a += b
print(a)
# 乘法賦值運算
c = 2
d = 50
d *= c
print(d)
輸出結果
30
100
2. 比較運算
比較運算,就是通過比較運算符(<、<=、> 、>=、==、!=),對左右兩邊的對象進行比較,結果返回布爾值:True或False。
a = 10
b = 20
c = 10
# 小於 < 比較
print(a < b)
# 小於等於 <= 比較
print(a <= c)
# 大於 > 比較
print(a > b)
# 大於等於 >= 比較
print(a >= c)
# 等於 == 比較
print(a == b)
# 不等於 != 比較
print(a != b)
輸出結果
True
True
False
True
False
True
3. 比較函數
Python3.7內置了比較函數 operator.lt(a, b) 、operator.le(a, b) 、operator.eq(a, b) 、operator.ne(a, b) 、operator.ge(a, b) 、operator.gt(a, b),對應比較運算符,如operator.lt(a, b)對應小於<。 比較運算符一般跟條件語句搭配使用,而用operator.lt(a, b)這種函數,可以直接得到結果布爾True或False)結果。
import operator
a = 10
b = 20
print(operator.lt(a, b))
輸出結果
True
還有另一種表達形式:operator.__lt__(a, b) 、operator.__le__(a, b) 、operator.__eq__(a, b) 、operator.__ne__(a, b) 、operator.__ge__(a, b) ,含義是一樣的。
import operator
a = 10
b = 20
print(operator.__lt__(a, b))
輸出結果
True
4. 邏輯運算
邏輯運算,就是通過與(and)、或(or)、非(not)運算符進行的運算。and表示它的前後條件都成立時,返回True,否則返回False。or表示它的前後條件有一個爲True,便返回True,否則返回False。 Not的意思是取相反值,True的not是False,False的not是True。
a = 10
b = 20
c = 30
d = True
# and組合比較
result = a > b and a > c
print(result)
# or組合比較
result = a < b or a > c
print(result)
# not
result = not d
print(result)
輸出結果
False
True
False
好了,基礎語法到這就全部介紹完了。能學到這的朋友,爲自己鼓鼓掌,對着顯示器,說一句:瞧你那個傻樣,呵呵~~
一個當了10年技術總監的老傢伙,分享多年的編程經驗。想學編程的朋友,可關注今日頭條:老陳說編程。我將分享Python,前端(小程序)和App方面的編程知識。關注我,沒錯的。