輸入輸出和運(yùn)算符
一、輸入和輸出
1.1 輸出
`print()`函數(shù)用來向終端輸出數(shù)據(jù)(其實(shí)也可以向文件輸出數(shù)據(jù),,后面再講)
-
可以傳遞多個(gè)參數(shù),,則輸出的時(shí)候 python 會(huì)把多個(gè)參數(shù)的值用空格隔開。
print("hell", "world", "你好")
-
print() 函數(shù)默認(rèn)會(huì)在末尾自動(dòng)添加一個(gè) \n ,。如果不想換行則可以傳遞一個(gè)參數(shù) end=""
print("hell", "world", "你好", end="")
print("哈哈哈")
1.2 輸入
input() 可以獲取用戶在鍵盤的輸入,,輸入的數(shù)據(jù)都會(huì)成為字符串。
name = input() # 把從鍵盤輸入的數(shù)據(jù)存儲(chǔ)到變量 name 中
print("你的名字是:", name)
如果在用戶輸入前給用戶一個(gè)提示語,,可以在 input 中傳入?yún)?shù),,則 python 會(huì)把傳入的參數(shù)先使用 print() 函數(shù)輸出,然后再等待用戶輸入數(shù)據(jù),。
name = input("請(qǐng)輸入你的姓名:")
print("你的名字是:", name)
二、運(yùn)算符和表達(dá)式
2.1 表達(dá)式
我們前面編寫的大多數(shù)代碼都包含了表達(dá)式(Expressions )。 比如 2 + 3 就是一個(gè)表達(dá)式,。
表達(dá)式可以可以進(jìn)一步拆分為運(yùn)算符(Operators)和操作數(shù)(Operands)
例如:
表達(dá)式:2 + 3 * 4
其中:
? +,、* 就是運(yùn)算符
? 2、3,、4 就是操作數(shù)
python 提供了各種各樣的運(yùn)算符,。
任何的數(shù)據(jù)類型都可以作為操作數(shù)。
2.2 運(yùn)算符
2.2.1 算術(shù)運(yùn)算符
加法:+
當(dāng) + 的兩端都是數(shù)字時(shí),,則就是數(shù)學(xué)中的加法運(yùn)算,。
當(dāng) + 兩端都是字符串時(shí),則就是把兩端的字符串連接起來,。
注意:
- 布爾值
True 可以作為數(shù)字 1 來使用,, False 可以作為數(shù)字 0 ,所以他們可以和數(shù)字相加。(學(xué)完面向?qū)ο竽憔褪乔宄? 其實(shí)bool 繼承自int )
- python 不允許字符串和數(shù)字相加
add1 = 3 + 4
print(add1) # 7
add2 = 3 + True
print(add2) # 4
add3 = 3 + False
print(add3) # 3
add4 = True * 0
print(add4) # 0
# add5 = "a" + 3 # 錯(cuò)誤,!不允許字符串和數(shù)字相加
減法:-
減法只能用于操作數(shù)字,。
乘法:*
得到兩個(gè)數(shù)的乘積。如果有一個(gè)是字符串一個(gè)是整數(shù),,則得到的重復(fù)整數(shù)次的字符串,。
result1 = 3 * 4.1
print(result1)
result2 = 2 * "Hello "
print(result2)
result3 = "world " * 3
print(result3)
冪:**
x ** y 返回 x 的 y 次方 x^y
除法:/
/ 就是指的數(shù)學(xué)上的除法(也叫真除法),總能得到浮點(diǎn)數(shù)的值,。和其他語言差別較大,。
result1 = 10 / 2
print(result1)
result2 = 10 / 3
print(result2)
result3 = -11.3 / 3
print(result3)
整除(經(jīng)典除法)://
整除一般用來操作兩個(gè)整數(shù)。(雖然也可以操作浮點(diǎn)數(shù),,但是沒人這么做)
result1 = 10 // 2
print(result1)
result2 = 10 // 3
print(result2)
result3 = -10 // 3
print(result3)
result4 = 10 // -3
print(result4)
取余(取模):%
返回除法運(yùn)算后的余數(shù),。一般用于整數(shù)取模。浮點(diǎn)數(shù)也可以用
result1 = 10 % 2
print(result1)
result2 = 10 % -3 # 余數(shù)的符號(hào)與除數(shù)的符號(hào)相同,。
print(result2)
result3 = -10 % 3
print(result3)
result4 = -2.4 % 2 # 取模一般用于整數(shù)運(yùn)算,。浮點(diǎn)數(shù)意義不大
print(result4)
2.2.2 賦值運(yùn)算符
= 賦值運(yùn)算符最常見的。
還有一種叫做復(fù)合賦值運(yùn)算符的,。
+=
a = 3
a += 2 # 等價(jià)于 a = a + 2
print(a) # 5
算術(shù)運(yùn)算符都有對(duì)應(yīng)的復(fù)合賦值運(yùn)算符,。
2.2.3 比較運(yùn)算符
比較兩個(gè)操作數(shù)大小關(guān)系。
- 如果是兩個(gè)數(shù)字則比較他們數(shù)學(xué)上的大小,。
- 如果是兩個(gè)字符串比較,,則是比較的他們在碼表中的順序。先比較第一個(gè)字母,,如果相等再比較第二個(gè)...
- 如果有布爾值參與比較,,則
True 做 1 來用,False 做 0 來用,。
- 數(shù)字和字符串不能進(jìn)行比較,!
- 比較運(yùn)算符計(jì)算的結(jié)果一定是布爾值,。
比較運(yùn)算符包括以下運(yùn)算符:
> 、< ,、>=,、<=、==,、!=
其中: == 判斷兩個(gè)操作數(shù)是否相等,、!= 用來判斷兩個(gè)操作數(shù)是否不等。
r1 = 3 > 2
print(r1) # True
r2 = "ab" > "b1"
print(r2) # False
r3 = True > False
print(r3) # True
r4 = 1 == True
print(r4) # True
注意:
python 中的比較運(yùn)算符與其他語言最大的一個(gè)不同點(diǎn)是,,python 中的比較運(yùn)算符可以組成鏈接,。只有每個(gè)運(yùn)算符計(jì)算的結(jié)果都是 True ,最終的結(jié)果才會(huì)為 True ,。否則就是 False
r1 = 5 > 4 > 3
print(r1) # True 因?yàn)?5 大于 4是 True,,并且 4 大于 3 是 True
r2 = 5 > 4 == (2 + 1)
print(r2) # False 因?yàn)?5 大于 4 是 True,但是 4 == 2 + 1 是 False
2.2.4 邏輯運(yùn)算符
python 共支持 3 種邏輯運(yùn)算符,。
and,、or、not (與,,或,,非)
邏輯非:not
r1 = not True
print(r1) # False
r2 = not False
print(r2) # True
注意:
- 對(duì)
not 來說,結(jié)果總是 True 或 False ,,但是操作數(shù)可以是任意類型的,。
- 內(nèi)容為空的數(shù)據(jù),會(huì)作為
False 來對(duì)待,,所以 not 之后會(huì)成為 True
r1 = not True
print(r1) # False
r2 = not False
print(r2) # True
print(not 1) # False
print(not 0) # True
print(not "") # True
print(not []) # True
print(not ()) # True
print(not {}) # True
邏輯與:and
有一個(gè)是 False 結(jié)果就是 False
由于任何類型都可以參與運(yùn)算,,所以更加準(zhǔn)確的規(guī)則應(yīng)該是:
? 如果第一個(gè)是 False 或者相當(dāng)于 False ,則結(jié)果就是第一個(gè)數(shù)據(jù),否則最終的結(jié)果就應(yīng)該是第二個(gè)數(shù)據(jù),。
print(False and True) # False
print(False and False) # Fasle
print(0 and True) # 0
print([] and False) # []
print([1] and 20) # 20
print("a" and [])
and 具有短路的效果,,也就是說,如果第一個(gè)表達(dá)式是 False 或者相當(dāng)于 False , 則不會(huì)再去判斷第二個(gè)表達(dá)式,。
print(True and print("abc"))
print(False and print("bcd")) # 由于第一個(gè)表達(dá)式是 False,所以不會(huì)計(jì)算第二個(gè)表達(dá)式的值
備注:是 False 的7種數(shù)據(jù)
False,、None,、0、"",、[],、()、{}
邏輯或:or
有一個(gè)是 True 結(jié)果就是 True
由于任何類型都可以參與運(yùn)算,,所以更加準(zhǔn)確的規(guī)則應(yīng)該是:
? 如果第一個(gè)是 True 或者相當(dāng)于 True ,則結(jié)果就是第一個(gè)數(shù)據(jù),,否則最終的結(jié)果就應(yīng)該是第二個(gè)數(shù)據(jù),。
print(True or False)
print(False or True)
print(False or False)
print(1 or False)
print("" or 100)
print([] or (2,))
or 也具有短路的效果,也就是說,,如果第一個(gè)表達(dá)式是 True 或者相當(dāng)于 True , 則不會(huì)再去判斷第二個(gè)表達(dá)式,。
三,、運(yùn)算符的優(yōu)先級(jí)
lambda |
Lambda expression |
if – else |
Conditional expression |
or |
Boolean OR |
and |
Boolean AND |
not x |
Boolean NOT |
in , not in , is , is not , < , <= , > , >= , != , == |
Comparisons, including membership tests and identity tests |
| |
Bitwise OR |
^ |
Bitwise XOR |
& |
Bitwise AND |
<< , >> |
Shifts |
+ , - |
Addition and subtraction |
* , @ , / , // , % |
Multiplication, matrix multiplication division, remainder [5] |
+x , -x , ~x |
Positive, negative, bitwise NOT |
** |
Exponentiation [6] |
await x |
Await expression |
x[index] , x[index:index] , x(arguments...) , x.attribute |
Subscription, slicing, call, attribute reference |
(expressions...) , [expressions...] , {key: value...} , {expressions...} |
Binding or tuple display, list display, dictionary display, set display |
優(yōu)先級(jí)是從上往下越來越高,。
實(shí)際使用的時(shí)候,對(duì)于不是很明確的地方,,建議添加圓括號(hào)(() )來更改優(yōu)先級(jí),。從而可讀性更強(qiáng)。
比如:雖然你知道 * 的優(yōu)先級(jí)高于 + ,但是 代碼1 明顯要好于代碼 2
代碼1:
2 + (3 * 4)
代碼2:
2 + 3 * 4
但是括號(hào)的使用也不要濫用,。比如下面的就有點(diǎn)濫用了,。最外面的完全不需要。
(2 + (3 * 4))
2.2.7 與數(shù)字類型相關(guān)的幾個(gè)內(nèi)置函數(shù)
abs(x) 返回 x 的絕對(duì)值
參數(shù) x 必須是整數(shù)或浮點(diǎn)數(shù)
int(x) 把 x 轉(zhuǎn)換為整數(shù)
x 可以說浮點(diǎn)數(shù)和整數(shù),。如果傳入的是字符串,,則字符串中的字符必須是整數(shù)
float(x) 把 x 轉(zhuǎn)換為 float
x 可以是浮點(diǎn)數(shù)、整數(shù),、字符串,。
pow(x, y) 等價(jià)于 x ** y
print(abs(-20))
print(int(20.3))
print(int("40"))
print(float("20.4"))
|