1. python支持的運(yùn)算符:
數(shù)學(xué)運(yùn)算符,比較運(yùn)算符,邏輯運(yùn)算符,賦值運(yùn)算符(位運(yùn)算符)。
數(shù)學(xué)運(yùn)算符:
+(加號(hào)),-(減號(hào)),* (乘號(hào)),/(除號(hào)),//(整除),%(取余),*** (冪運(yùn)算)
- 加減乘除(+ - * /)與我們小學(xué)學(xué)的運(yùn)算規(guī)則一模一樣
- //整除,數(shù)字1 // 數(shù)字2,讓數(shù)字一除以數(shù)據(jù)二,結(jié)果只取整數(shù)部分,對(duì)除數(shù)和被除數(shù)沒(méi)有要求,只要是數(shù)字就行。
print(12+3)
print(19-1)
print(12*2)
print(23/4)
print(45//7)

例子:獲取234中的2獲取出來(lái):
print(234//100)
- 取余:求余數(shù)
print(5 % 2) # 求五除以二的余數(shù)
print(10 % 4)
# 獲取個(gè)位數(shù):
print(234 % 10)

注:判斷一個(gè)數(shù)的奇偶性:讓這個(gè)數(shù)對(duì)2取余,看余為0或者為1,為1則為奇數(shù),為0則為偶數(shù)。
- 冪運(yùn)算 x ** y,求x的y次方,也可以用小數(shù)開(kāi)方。
print(2 ** 3)
print(10 ** 4)
print(16 ** 0.5) # 16開(kāi)平方
print(8 ** (1/3)) # 8開(kāi)立方
age = 18
print(age + 10)
# 運(yùn)算符的運(yùn)算對(duì)象不一定是數(shù)據(jù),也可以是存數(shù)據(jù)的變量

比較運(yùn)算符:
比較運(yùn)算符包括:>(大于),<(小于), ==(等于), !=(不等于), >=(大于等于), <=(小于等于)。
注:所有比較運(yùn)算符的結(jié)果都是布爾值。
print(10 > 20)
print(10 < 20)
print(10 == 20)
print(10 == 10)
print(10 != 10)
print(10 >= 10)
print(10 <= 20)
age = 18
print(age >= 18)

補(bǔ)充:is的使用
變量三要素:類型(變量中存儲(chǔ)的數(shù)據(jù)的類型),值(變量中存儲(chǔ)的數(shù)據(jù)),地址(變量中真正存儲(chǔ)的內(nèi)容:數(shù)據(jù)的地址)。
- 類型 - type(變量)。
- 值 - 直接使用變量,就是使用值。
- 地址 - id(變量)。
num = 100
print(type(num), num, id(num))

注意:==判定的是值是否相等,is判定的地址是否相等。
list1 = [1, 2]
list2 = [1, 2]
list3 = list1
print(list1, list2)
print(id(list1), id(list2))
print(list == list, list1 is list2)
print(list1 == list3, list1 is list3)

用變量賦值另一個(gè)變量時(shí),是將變量中存儲(chǔ)的數(shù)據(jù)地址賦給另一個(gè)變量。
特殊情況:數(shù)字和字符串,只要用過(guò)就不會(huì)重復(fù)開(kāi)辟空間存放,因此地址一致,故也會(huì)滿足is。
num1 = 100
num2 = 100
print(id(num1), id(num2))

邏輯運(yùn)算符:
and(邏輯與運(yùn)算), or(邏輯或運(yùn)算), not(邏輯非運(yùn)算)
邏輯運(yùn)算符的運(yùn)算對(duì)象和運(yùn)算結(jié)果返回值都是布爾值。
- 值1 and 值2 只有兩個(gè)都為true,返回結(jié)果才為true,否則就是false,相當(dāng)于生活邏輯中的“并且”。
true and true -> true
true and false -> false
false and false -> false
false and true -> true
- 當(dāng)要求多個(gè)條件同時(shí)滿足時(shí),就使用邏輯與運(yùn)算。
- 短路操作:第一個(gè)條件是False,就不會(huì)去判斷第二個(gè)條件,直接讓整個(gè)或運(yùn)算的結(jié)果是False。
練習(xí):如果考試成績(jī)大于90分和平時(shí)表現(xiàn)成績(jī)大于等于95分就能獲得獎(jiǎng)學(xué)金。
grade = 90
score = 95
print("是否能拿獎(jiǎng)學(xué)金", grade > 90 and score >= 95)

- 值1 or 值2 ->只有兩個(gè)都是false才為false,否則就是true,相當(dāng)于生活邏輯中的“或者”
true or true -> true
true or false -> true
false or false -> false
false or true -> true
- 應(yīng)用:要求多個(gè)條件只要有一個(gè)滿足,就使用邏輯或運(yùn)算。
- 短路操作:第一個(gè)條件是true,就不會(huì)去判斷第二個(gè)條件,直接讓整個(gè)或運(yùn)算的結(jié)果是True。
練習(xí):如果考試低于60分,或者上課不聽(tīng)講就降班
grade = 70
is_not_in_class = False # True代表不在班級(jí),F(xiàn)alse代表在班級(jí)
print('是否降班:', grade < 60 or is_not_in_class)

- 邏輯非運(yùn)算:not 值1->運(yùn)算對(duì)象和結(jié)果都是布爾值,對(duì)結(jié)果進(jìn)行否定,或者取反。
"""
not True -> False
not False -> True
"""
# 年齡不小于十歲
age = 20
print(not age < 10)

賦值運(yùn)算符:
賦值運(yùn)算符包含:=, +=, -=, *=, /=, //=, %=, **= 。
所有的賦值運(yùn)算符要求賦值符號(hào)的左邊必須是變量,右邊必須是有結(jié)果的。
- 變量 = 結(jié)果 --> 將結(jié)果賦值給變量
num1 = 100
num2 = num1 # 變量賦值給變量,賦的是變量中存儲(chǔ)的地址 - +=, -=, *=, /=, //=, %=, **=
復(fù)合賦值運(yùn)算符要求賦值符號(hào)的左邊除了是變量以為,還藥物這個(gè)變量已經(jīng)賦過(guò)值。
變量 += 數(shù)字 --> 變量 = 變量 +數(shù)字(將變量原來(lái)的值加上指定的數(shù)字以后將新值再重新賦值給變量)
num3 = 3
num3 += 10 # num3 = num3 +10 = 3 + 10
print(num3) # 13
num3 -= 3 # num3 = num3 - 3 = 13 - 3
print(num3) # 10

- 復(fù)合運(yùn)算:運(yùn)算符的優(yōu)先級(jí)
數(shù)學(xué)運(yùn)算符 > 比較運(yùn)算符 > 邏輯運(yùn)算符 > 賦值運(yùn)算符,
優(yōu)先級(jí)高的先算,優(yōu)先級(jí)低的后算,但如果有(),先算()里面的。
數(shù)學(xué)運(yùn)算符中: ** > * / % // > + -
練習(xí):
print(19 + 20 > 6**2 + 4 or 10 + 3 < 3 * 3)
# 布爾值True == 1 ,False == 0,可參與運(yùn)算.
print(19 + 20 > (6**2 + 4 > 10 or 10 + 3 < 3 * 3))

2. python的數(shù)字類型:
python的數(shù)字類型包括:int bool complex float。
- 整型:int 包含所有的整數(shù),支持十進(jìn)制,二進(jìn)制,八進(jìn)制和十六進(jìn)制。
num4 = 23
num = 0b100011 # 0b + 二進(jìn)制數(shù)
num5 = 0o7654321 # 0o + 八進(jìn)制數(shù)
num6 = 0xaf9456 # 0x +十六進(jìn)制數(shù)
print(num4,num5,num6,num)
print('十進(jìn)制',123)
print('二進(jìn)制',bin(123))
print('八進(jìn)制',oct(123))
print('十六進(jìn)制',hex(123))
print(0b0111)
print(0b0111 + 2)

- 浮點(diǎn)型: float 包含所有的小數(shù),支持科學(xué)計(jì)數(shù)法。
num7 = 12.5
num2 = 3e2 # 代表3乘以10的二次方
print(num2)
num3 = 1.25e2
print(num3)

- 布爾(bool):
值只有True和False兩種,True == 1, False == 0.True還是表示真,肯定,F(xiàn)lase還是表示假,否定。
sun = True + 10
print(sun)
print(True == 1, False == 0)

- 復(fù)數(shù)(complex):
實(shí)部 + 虛部j,j前面必須有數(shù)字,不能省略。
3.字符串
- 通過(guò)''或者“”括起來(lái)的字符集(文本)就是字符串。例如:
str1 = '123'
str2 = 'abc123' - 字符串類型(str)
str是python自己提供的一種容器型數(shù)據(jù)類型,一個(gè)字符串中可以保存多個(gè)字符。
字符:python中只有字符的概念沒(méi)有字符類型,
如果在puthon中要表示一個(gè)字符,用長(zhǎng)度為1的字符串來(lái)表示。
字符串不可變但有序:不可變指的是字符的值和字符串的長(zhǎng)度不可變,
有序指的是在一個(gè)字符串中,每個(gè)字符在字符串中的位置是確定的。
字符串"abc"和"bac"是不一樣的 - 字符串中的字符:
a. 普通字符:
包含一般的字母,數(shù)字,符號(hào),和其他文字。例如:'a','G','1','0','+','^','?','好'
b. 轉(zhuǎn)義字符:通過(guò)在一些特定的字符前加,來(lái)表示特殊的功能或意義,這樣的字符就是轉(zhuǎn)義字符。
轉(zhuǎn)義字符有:
\n - 換行
' - 表示一個(gè)單引號(hào)
" - 表示一個(gè)雙引號(hào)
\ - 表示一個(gè)反斜杠
\t - 表示一個(gè)Tab鍵
注意:沒(méi)有組織轉(zhuǎn)義的時(shí)候,一個(gè)轉(zhuǎn)義字符的長(zhǎng)度是一。
可以在字符串的前面加r/R,來(lái)阻止轉(zhuǎn)義(阻止字符串中所有的字符轉(zhuǎn)義)。
data = 100
data1 = '100'
data2 = 'agj好123'
str4 = '23\n45'
str5 = '123\'we'
str6 = "123\"w'qw"
str7 = "\\hello \\npython"
str8 = "\terer"
str9 = R"\t姓名:小白\n\t年齡:18"
str10 = "啊哈,你,需要我的幫助\u4E00\u9FA5"
print(str4)
print(str5)
print(str6)
print(str7)
print(str8)
print(str9)
print(str10)

c. 編碼字符
在字符串中以"\u1234" +四位十六進(jìn)制編碼值;例如"\u1234"。
d. 字符編碼:
計(jì)算機(jī)在存儲(chǔ)數(shù)據(jù)時(shí)只能存數(shù)字?jǐn)?shù)據(jù),而且存的是數(shù)字的二進(jìn)制補(bǔ)碼。
例如:
10 --> 轉(zhuǎn)換成二進(jìn)制 --> 存補(bǔ)碼(求)
字符的編碼就是為了將字符存儲(chǔ)到計(jì)算機(jī)中,給每個(gè)字符對(duì)應(yīng)的一個(gè)固定數(shù)字,這個(gè)數(shù)字就是這個(gè)字符的編碼。
目前計(jì)算機(jī)采用的編碼方式有兩種,分別是ASCII碼表和Unicode碼表。
Python中采用的是Unicode編碼,實(shí)際上Unicode碼表就是對(duì)ASCII碼表(就128個(gè)字符)的擴(kuò)充。
ASCII碼是采用一個(gè)字節(jié)對(duì)字符進(jìn)行編碼。
Unicode碼包含ASCII碼,采用兩個(gè)字節(jié)對(duì)字符進(jìn)行編碼,包含了世界上所有的語(yǔ)言和符號(hào),又稱萬(wàn)國(guó)碼。
小寫(xiě)字母的編碼范圍為a-z(97-122),大寫(xiě)字母編碼范圍為A-Z(65-90)
中文的編碼范圍:(0x4E00-0x9FA5)。
字符編碼相關(guān)函數(shù):
a.chr(編碼值) - 獲取編碼對(duì)應(yīng)字符。
b.ord(字符)- =獲取字符的編碼值(以十進(jìn)制形式返回)。
a -> 97
print(chr(0x0180))
print(hex(ord('李')),hex(ord('源')))
