變量的賦值與計算都離不開表達(dá)式,表達(dá)式的運算依賴于變量、常量和運算符。
那么我們先說一說什么是表達(dá)式。
(一)表達(dá)式
Java表達(dá)式是變量、常量、運算符、方法調(diào)用的序列,它執(zhí)行指定的計算并返回某個確定的值。
表達(dá)式不會對程序產(chǎn)生實質(zhì)性的影響, 一般只是返回一個結(jié)果。
-
在Python中,如果在交互模式中只輸入一個表達(dá)式,解釋器會自動將表達(dá)式的結(jié)果輸出。如果是在Python文件中只輸入表達(dá)式,運行文件都不會有任何輸出的。
-
交互模式中只寫表達(dá)式。
-
Python文件中只寫表達(dá)式的語句會沒有任何輸出。
-
(二)運算符
運算符用于執(zhí)行程序代碼運算。
1、運算符的分類
Python的常用運算符分為5類:
- 算數(shù)運算符
- 賦值運算符
- 復(fù)合賦值運算符
- 比較運算符
- 邏輯運算符
2、算數(shù)運算符
Python中算數(shù)運算符如下:
運算符 | 描述 | 實例 |
---|---|---|
+ | 加 | 1 + 1 輸出結(jié)果為 2 |
- | 減 | 1-1 輸出結(jié)果為 0 |
* | 乘 | 2 * 2 輸出結(jié)果為 4 |
/ | 除 | 10 / 2 輸出結(jié)果為 5 |
// | 整除 | 9 // 4 輸出結(jié)果為2 |
% | 取余 | 9 % 4 輸出結(jié)果為 1,也叫取模 |
** | 指數(shù) | 2 ** 4 輸出結(jié)果為 16,即 2 * 2 * 2 * 2 |
() | 小括號 | 小括號用來提高運算優(yōu)先級,即 (1 + 2) * 3 輸出結(jié)果為 9 |
注意:
- 混合運算優(yōu)先級順序:
()
高于**
高于*
/
//
%
高于+
-
示例:
# 1、運算符:加、減、乘
# 所有運算中,只要有浮點數(shù)參加的運算,一定會得到一個浮點數(shù)
a = 10.5 + 5
print(f'a = {a}') # a = 15.5
# 2、運算符:除
# 除法不管得到什么數(shù),結(jié)果都是小數(shù)(浮點型),//(整除不會)
b = 4 / 2
print(f'b = {b}') # b = 2.0
# 3、運算符://(整除),只會保留整數(shù)位
# 運算結(jié)果只會得到一個整型,結(jié)果只保留整數(shù)部分。
c = 4 // 2
print(f'c = {c}') # c = 2
# 如果除數(shù)或被除數(shù)是小數(shù),則返回一個浮點數(shù)
c = 4.567 // 2
print(f'c = {c}') # c = 2.0
# 4、用變量d的值減去2,然后再賦值給d
d = 10
d = d - 2
print(f'd = d46fvso') # d = 8
"""
5、如果將字符串和數(shù)字相乘,
則會對字符串進(jìn)行復(fù)制操作,
將字符串重復(fù)指定次數(shù)
6、如果對字符進(jìn)行加法運算,
就是字符串的拼接
"""
e = 'hello' + ' ' + 'world'
print(e) # hello world
f = ('hello' + ' ') * 2
print(f) # hello hello
# 7、除0異常
g = 5 / 0
# 報出異常:ZeroDivisionError: division by zero
3、賦值運算符
運算符 | 描述 | 實例 |
---|---|---|
= | 賦值 | 將= 右側(cè)的結(jié)果賦值給等號左側(cè)的變量 |
- 單個變量賦值
num = 1
print(num)
- 多個變量賦值
num1, float1, str1 = 10, 0.5, 'hello world'
print(f"num1 = {num1}")
print(f"float1 = {float1}")
print(f"str1 = {str1}")
# 輸出結(jié)果如下:
# num1 = 10
# float1 = 0.5
# str1 = hello world
- 多變量賦相同值
a = b = 10
print(f"a = {a}")
print(f"b = {b}")
# 輸出結(jié)果如下:
# a = 10
# b = 10
4、復(fù)合賦值運算符
當(dāng)解釋器執(zhí)行到復(fù)合賦值運算符時,先計算算數(shù)運算符的表達(dá)式,再將算數(shù)運算符執(zhí)行后的結(jié)果賦值到等號左邊的變量。
復(fù)合賦值運算符如下:
運算符 | 描述 | 實例 |
---|---|---|
+= | 加法賦值運算符 | 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 |
示例:
# 輸出101 a = a + 1,最終a = 100 + 1
a = 100
a += 1
print(a) # 101
# 輸出6 b = b * 3,最終b = 2 * 3
b = 2
b *= 3
print(b)
# 輸出13, 先算運算符右側(cè)1 + 2 = 3, c += 3 , 推導(dǎo)出c = 10 + 3
c = 10
c += 1 + 2
print(c)
# 注意: 先算復(fù)合賦值運算符右面的表達(dá)式,再算復(fù)合賦值運算.
d = 100
d *= 3 + 4
print(d) # 700
# 3 + 4 = 7 * 100 = 700
在對浮點數(shù)做算術(shù)運算時,結(jié)果也會返回一個浮點數(shù)。
5、比較運算符
比較運算符也叫關(guān)系運算符,來比較兩個值之間的關(guān)系,總會返回一個布爾值, 如果關(guān)系成立,返回True,否則返回False,通常用來判斷。
比較運算符如下:
運算符 | 描述 | 實例 |
---|---|---|
== | 判斷相等。如果兩個操作數(shù)的結(jié)果相等,則條件結(jié)果為真(True),否則條件結(jié)果為假(False) | 如a=3,b=3,則(a == b) 為 True |
!= | 不等于 。如果兩個操作數(shù)的結(jié)果不相等,則條件為真(True),否則條件結(jié)果為假(False) | 如a=3,b=3,則(a == b) 為 True如a=1,b=3,則(a != b) 為 True |
> | 運算符左側(cè)操作數(shù)結(jié)果是否大于右側(cè)操作數(shù)結(jié)果,如果大于,則條件為真,否則為假 | 如a=7,b=3,則(a > b) 為 True |
< | 運算符左側(cè)操作數(shù)結(jié)果是否小于右側(cè)操作數(shù)結(jié)果,如果小于,則條件為真,否則為假 | 如a=7,b=3,則(a < b) 為 False |
>= | 運算符左側(cè)操作數(shù)結(jié)果是否大于等于右側(cè)操作數(shù)結(jié)果,如果大于,則條件為真,否則為假 | 如a=7,b=3,則(a < b) 為 False如a=3,b=3,則(a >= b) 為 True |
<= | 運算符左側(cè)操作數(shù)結(jié)果是否小于等于右側(cè)操作數(shù)結(jié)果,如果小于,則條件為真,否則為假 | 如a=3,b=3,則(a <= b) 為 True |
示例:
# 1、關(guān)系運算符基本使用
a = 7
b = 5
print(a == b) # False
print(a != b) # True
print(a < b) # False
print(a > b) # True
print(a <= b) # False
print(a >= b) # True
# 2、數(shù)字可以可布爾值比較,True=1,F(xiàn)alse=0
print(1 == True) # True
print(2 < True) # False
print(-1 < False) # True
# 3、數(shù)字和字符串之間不能進(jìn)行比較
print(2 > '1')
# TypeError: '>' not supported between instances of 'int' and 'str'
"""
# 4、字符串和字符串之間可以進(jìn)行比較
在Python中可以對兩個字符串進(jìn)行大于(等于)或小于(等于)的運算時,
實際上比較的是字符串對應(yīng)的Unicode編碼。
比較兩個字符串的Unicode編碼時,是逐位比較的。
利用該特性可以對字符串按照字母順序進(jìn)行排序,但是對于中文來說意義不是特別大。
注意:如果不希望比較兩個字符串的Unicode編碼,
則需要通過數(shù)據(jù)類型轉(zhuǎn)換
將字符串轉(zhuǎn)換為數(shù)值型然后再比較。
"""
# a(0061) 和 b(0062) 比較
print('a' > 'b') # False
# 比較兩個字符串的Unicode編碼時,是逐位比較的。
# 也就是第一位和第一位比,第二位和第二位比,
# 只有在第一位沒有比出結(jié)果的時候(相等),才比第二位。
print('ab' > 'bc') # 實際上就是a和b比較,結(jié)果False
print('ab' > 'b') # 同上一句結(jié)果
print('af' > 'ac') # True
# 沒有肯定小于有字符
print('a' > 'ac') # False
# 將字符串轉(zhuǎn)換成數(shù)值型在比較
print(int('5') > int('7')) # False
print(float('5.115') > float('4.64')) # True
"""
5、== 和 != 比較的是結(jié)果對象的值,而不是id。
對象包括id(地址)、type(類型)、value(值)
比較id用is 和 is not
is 比較兩個對象是否是同一個對象,比較的是對象的id。
is not 比較兩個對象是否不是同一個對象,比較的是對象的id。
這里有個印象就可以,以后說完可變對象,再詳細(xì)說明。
"""
print(1 == True) # True
print(id(1),id(True)) # 8791323868224 8791323365904
print(1 is True) # False
print(1 is not True) # True