一、運(yùn)算符
python 支持:數(shù)學(xué)運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符、(位運(yùn)算符)
1.數(shù)學(xué)運(yùn)算符:
"+ "(加),"-"(減) ," * "(乘), /(除),//(整除),%(取余), " ** "(冪運(yùn)算),
a. 其中 + 、-、*、/ 和數(shù)學(xué)中的加減乘除一模一樣
print(10 + 20)
print(12.6 + 5)
print(100 - 110)
print(2 * 3)
print(5 / 2)
b. // (整除),數(shù)字1 //數(shù)字2 --> 數(shù)字1除以 數(shù)字2,結(jié)果只取整數(shù)部分
print(5 // 2) # 2
print(6.3 // 3) # 2.0
- 練習(xí),獲取234中百位上的數(shù) 2
print(234 // 100)
c. 取余:求余數(shù)
print(5 % 2) # 求五除以二的余數(shù)
print(10 % 4)
- 應(yīng)用一:獲取一個(gè)數(shù)的個(gè)位數(shù)
print(234 % 10) # 4 - 應(yīng)用二:判斷一個(gè)數(shù)的奇偶性,讓這個(gè)對(duì)2取余,然后看結(jié)果是0(偶數(shù))還是1(奇數(shù))
d. **(冪運(yùn)算),x ** y --->運(yùn)算符的 x 的 y 次方
print(2 ** 3)
print(10 ** 4)
print(16 ** 0.5) # x ** 0.5 == x ** (1/2)==x開(kāi)平方
print(8 ** (1/3))
age = 18
print(age + 10) # 注意 :運(yùn)算符的運(yùn)算對(duì)象不一定非是數(shù)據(jù),也可以是存數(shù)據(jù)的變量
2. 比較運(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))
運(yùn)行效果:

==判定的是值是否相等,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)
運(yùn)行效果:

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

3. 邏輯運(yùn)算符:
a. 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)
運(yùn)行效果:

b.值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)行效果:

c. 邏輯非運(yùn)算:not 值1->運(yùn)算對(duì)象和結(jié)果都是布爾值,對(duì)結(jié)果進(jìn)行否定,或者取反。
not True -> False
not False -> True
練習(xí):年齡不小于十歲
age = 20
print(not age < 10)
d.賦值運(yùn)算符:
=, +=, -=, *=, /=, //=, %=, **=
所有的賦值運(yùn)算符要求賦值符號(hào)的左邊必須是變量,右邊必須是有結(jié)果的。
- a. 變量 = 結(jié)果 --> 將結(jié)果賦值給變量
num1 = 100
num2 = num1 # 變量賦值給變量,賦的是變量中存儲(chǔ)的地址
- b.+=, -=, *=, /=, //=, %=, **=
復(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
4. 復(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)算.
二、 數(shù)字類型
python的數(shù)字類型:int bool complex float
1.整型(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)
運(yùn)行效果:

print('十進(jìn)制',123)
print('二進(jìn)制',bin(123))
print('八進(jìn)制',oct(123))
print('十六進(jìn)制',hex(123))
print(0b0111)
print(0b0111 + 2)
運(yùn)行效果:

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

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

3.復(fù)數(shù)(complex):
實(shí)部 + 虛部j,j前面必須有數(shù)字,不能省略。
三、字符串
1.字符串
通過(guò)''或者“”括起來(lái)的字符集(文本)就是字符串。
str1 = '123'
str2 = 'abc123'
2.字符串類型(str)
str是python自己提供的一種容器型數(shù)據(jù)類型,一個(gè)字符串中可以保存多個(gè)字符。
字符:python中只有字符的概念沒(méi)有字符類型,
如果在puthon中要表示一個(gè)字符,用長(zhǎng)度為1的字符串來(lái)表示。
字符串不可變但有序:不可變指的是字符的值和字符串的長(zhǎng)度不可變,
有序指的是在一個(gè)字符串中,每個(gè)字符在字符串中的位置是確定的。
字符串"abc"和"bac"是不一樣的
3.字符串中的字符:
- a.普通字符:
包含一般的字母,數(shù)字,符號(hào),和其他文字。例如:'a','G','1','0','+','^','?','好'
b.轉(zhuǎn)義字符:通過(guò)在一些特定的字符前加,來(lái)表示特殊的功能或意義,這樣的字符就是轉(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)
運(yùn)行效果:

3.編碼字符
- 在字符串中以"\u1234" +四位十六進(jìn)制編碼值;例如"\u1234"
4.字符編碼:
- 計(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('雷')))
運(yùn)行效果:

課后作業(yè)
下面定義變量正確的是( a d)
a. a = b = c = 10
b. a,c = 10
c. in = 20
d. num = 10; t = 20n = 6784,以下能夠獲取到7 的方法有( c d )
a. n / 1000 % 100
b. n % 1000 / 100
c. n // 100 % 10
d. n // 10 % 100 // 10
9.以下表達(dá)式 10 / 4 + 23 // 4 * 2 - 30的計(jì)算結(jié)果是:2.5+10-30= -17.5。
#寫(xiě)代碼獲取輸入數(shù)字12345中的每一位上的數(shù)字
num1 = 12345
print('第一位數(shù):',num1 // 10000)
print('第二位數(shù):',num1 % 10000 // 1000)
print('第三位數(shù):',num1 % 1000 // 100)
print('第四位數(shù):',num1 % 100 // 10)
print('第五位數(shù):',num1 % 10)
#寫(xiě)出判斷一個(gè)數(shù)是否能同時(shí)被3和7整除的條件語(yǔ)句
num2 = 21
print(num2 % 3 == 0 and num2 % 7 == 0)
#寫(xiě)出判斷一個(gè)數(shù)是否能夠被3或者7整除,但是不能同時(shí)被3和7整除的表達(dá)式
num3 = 21
print((num3 % 3 == 0 or num3 % 7 ==0 ) and (not num3 % 3 ==0 and num3 % 7 == 0))
# 今天上課講了1500秒的課,編程計(jì)算今天上課時(shí)間是多少小時(shí),多少分鐘,多少秒
tim = 1500
print(tim // (60**2),'小時(shí)')
print(tim % (60 ** 2) // 60,'分鐘')
print(tim % (60 ** 2) % 60,'秒')
"""
定義兩個(gè)變量保存一個(gè)人的身高和體重,編程實(shí)現(xiàn)判斷這個(gè)人的身材是否完美!
公式:體重(kg)除以身高(m)的平方的值在18.5~24.9之間屬于正常(輸出True)
"""
height = 1.76
body_weight = 70
print(18.5 <= body_weight / height ** 2 <= 24.9)
運(yùn)行結(jié)果:
