一、運(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)用一:獲取一個數(shù)的個位數(shù)
print(234 % 10) # 4
- 應(yīng)用二:判斷一個數(shù)的奇偶性色洞,讓這個對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開平方
print(8 ** (1/3))
age = 18
print(age + 10) # 注意 :運(yùn)算符的運(yùn)算對象不一定非是數(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的使用
變量三要素:類型(變量中存儲的數(shù)據(jù)的類型)荠察,值(變量中存儲的數(shù)據(jù))置蜀,地址(變量中真正存儲的內(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)行效果:
- 用變量賦值另一個變量時盯荤,是將變量中存儲的數(shù)據(jù)地址賦給另一個變量。
- 特殊情況:數(shù)字和字符串焕盟,只要用過就不會重復(fù)開辟空間存放秋秤,因此地址一致,故滿足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)算對象和運(yùn)算結(jié)果返回值都是布爾值脚翘。
- 值1 and 值2 只有兩個都為true,返回結(jié)果才為true,否則就是false,相當(dāng)于生活邏輯中的“并且”
true and true -> true
true and false -> false
false and false -> false
false and true -> true - 當(dāng)要求多個條件同時滿足時灼卢,就使用邏輯與運(yùn)算。
- 短路操作:第一個條件是False堰怨,就不會去判斷第二個條件,直接讓整個或運(yùn)算的結(jié)果是False
練習(xí):如果考試成績大于90分和平時表現(xiàn)成績大于等于95分就能獲得獎學(xué)金
grade = 90
score = 95
print("是否能拿獎學(xué)金", grade > 90 and score >= 95)
運(yùn)行效果:
b.值1 or 值2 ->只有兩個都是false才為false,否則就是true,相當(dāng)于生活邏輯中的“或者”
true or true -> true
true or false -> true
false or false -> false
false or true -> true
- 應(yīng)用:要求多個條件只要有一個滿足,就使用邏輯或運(yùn)算:
- 短路操作:第一個條件是true蛇摸,就不會去判斷第二個條件,直接讓整個或運(yùn)算的結(jié)果是True
練習(xí):如果考試低于60分备图,或者上課不聽講就降班
grade = 70
is_not_in_class = False # True代表不在班級,F(xiàn)alse代表在班級
print('是否降班:', grade < 60 or is_not_in_class)
運(yùn)行效果:
c. 邏輯非運(yùn)算:not 值1->運(yùn)算對象和結(jié)果都是布爾值赶袄,對結(jié)果進(jìn)行否定揽涮,或者取反。
not True -> False
not False -> True
練習(xí):年齡不小于十歲
age = 20
print(not age < 10)
d.賦值運(yùn)算符:
=饿肺, +=蒋困, -=, *=敬辣, /=, //=, %=, **=
所有的賦值運(yùn)算符要求賦值符號的左邊必須是變量雪标,右邊必須是有結(jié)果的零院。
- a. 變量 = 結(jié)果 --> 將結(jié)果賦值給變量
num1 = 100
num2 = num1 # 變量賦值給變量,賦的是變量中存儲的地址
- b.+=村刨, -=告抄, *=, /=, //=, %=, **=
復(fù)合賦值運(yùn)算符要求賦值符號的左邊除了是變量以為嵌牺,還藥物這個變量已經(jīng)賦過值打洼。
變量 += 數(shù)字 --> 變量 = 變量 +數(shù)字(將變量原來的值加上指定的數(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)先級
數(shù)學(xué)運(yùn)算符 > 比較運(yùn)算符 > 邏輯運(yùn)算符 > 賦值運(yùn)算符,
優(yōu)先級高的先算,優(yōu)先級低的后算逆粹,但如果有(),先算()里面的
數(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.字符串
通過''或者“”括起來的字符集(文本)就是字符串设哗。
str1 = '123'
str2 = 'abc123'
2.字符串類型(str)
str是python自己提供的一種容器型數(shù)據(jù)類型,一個字符串中可以保存多個字符两蟀。
字符:python中只有字符的概念沒有字符類型网梢,
如果在puthon中要表示一個字符,用長度為1的字符串來表示赂毯。
字符串不可變但有序:不可變指的是字符的值和字符串的長度不可變战虏,
有序指的是在一個字符串中,每個字符在字符串中的位置是確定的党涕。
字符串"abc"和"bac"是不一樣的
3.字符串中的字符:
- a.普通字符:
包含一般的字母烦感,數(shù)字,符號膛堤,和其他文字手趣。例如:'a','G','1','0','+','^','?','好'
b.轉(zhuǎn)義字符:通過在一些特定的字符前加,來表示特殊的功能或意義,這樣的字符就是轉(zhuǎn)義字符肥荔。
\n - 換行
' - 表示一個單引號
" - 表示一個雙引號
\ - 表示一個反斜杠
\t - 表示一個Tab鍵
注意:沒有組織轉(zhuǎn)義的時候绿渣,一個轉(zhuǎn)義字符的長度是一朝群。
可以在字符串的前面加r/R,來阻止轉(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ī)在存儲數(shù)據(jù)時只能存數(shù)字?jǐn)?shù)據(jù)谭期,而且存的是數(shù)字的二進(jìn)制補(bǔ)碼
10 --> 轉(zhuǎn)換成二進(jìn)制 --> 存補(bǔ)碼(求) - 字符的編碼就是為了將字符存儲到計(jì)算機(jī)中,給每個字符對應(yīng)的一個固定數(shù)字吧凉,這個數(shù)字就是這個字符的編碼隧出。
- 目前計(jì)算機(jī)采用的編碼方式有兩種,分別是ASCII碼表和Unicode碼表阀捅。
- Python中采用的是Unicode編碼胀瞪,實(shí)際上Unicode碼表就是對ASCII碼表(就128個字符)的擴(kuò)充。
- ASCII碼是采用一個字節(jié)對字符進(jìn)行編碼饲鄙。
- Unicode碼包含ASCII碼凄诞,采用兩個字節(jié)對字符進(jìn)行編碼,包含了世界上所有的語言和符號忍级,又稱萬國碼帆谍。
- 小寫字母的編碼范圍為a-z(97-122),大寫字母編碼范圍為A-Z(65-90)
- 中文的編碼范圍:(0x4E00-0x9FA5)
- 字符編碼相關(guān)函數(shù):
a.chr(編碼值) - 獲取編碼對應(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。
#寫代碼獲取輸入數(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)
#寫出判斷一個數(shù)是否能同時被3和7整除的條件語句
num2 = 21
print(num2 % 3 == 0 and num2 % 7 == 0)
#寫出判斷一個數(shù)是否能夠被3或者7整除朴肺,但是不能同時被3和7整除的表達(dá)式
num3 = 21
print((num3 % 3 == 0 or num3 % 7 ==0 ) and (not num3 % 3 ==0 and num3 % 7 == 0))
# 今天上課講了1500秒的課窖剑,編程計(jì)算今天上課時間是多少小時,多少分鐘戈稿,多少秒
tim = 1500
print(tim // (60**2),'小時')
print(tim % (60 ** 2) // 60,'分鐘')
print(tim % (60 ** 2) % 60,'秒')
"""
定義兩個變量保存一個人的身高和體重西土,編程實(shí)現(xiàn)判斷這個人的身材是否完美!
公式:體重(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é)果: