運算符: 數(shù)學運算符切平、比較運算符、邏輯運算符桑包、賦值運算绽昼、(位運算)
1. 數(shù)學運算符: +,-,,/,//,%,*
2. 比較運算符: >(大于), <(小于), ==(等于), !=(不等于), >=(大于等于), <=(小于等于)
所有的比較運算符的運算結(jié)果都是布爾值
print(100 > 10) # True
print(100 < 10) # False
print(100 == 10) # False
print(100 != 10) # True
print(100 >= 10) # True
print(100 >= 100) # True
python中支持數(shù)學中表示范圍的寫法
num = 1000
print(1<=num<=100) # False
print(1<num<100)
result = 200 > 100
print(result)
3.邏輯運算符: and(邏輯與運算), or(邏輯或運算), not(邏輯非運算)
所有邏輯運算符的運算對象都是布爾值,結(jié)果也是布爾值
1)邏輯與運算: 兩個都是True結(jié)果才是True, 只要有一個是False結(jié)果就是False
Ture and Ture --> True
True and False --> False
False and True --> False
False and False --> False
當要求多個條件同時滿足的時候派草,就將多個條件用and連接搀缠;相當于生活中的并且
練習: 獲取獎學金的條件是:操評分不小于95分并且績點不小于4.0
score = 98
grade = 4.5
print('是否能拿獎學金:', score >= 95 and grade >= 4.0)
# 練習: 判斷age對應(yīng)的人是否屬于兒童(年齡大于等于3小于等于12)
age = 10
print('是否是兒童:', 3 <= age <= 12)
print('是否是兒童:', age >= 3 and age <= 12)
2)邏輯或運算: 兩個都是False結(jié)果才是False, 只要有一個是True結(jié)果就是True
True or Ture --> True
Ture or False --> True
False or True --> True
False or False --> False
當要求多個條件中只要有一個條件滿足的時候,就將多個條件用or連接近迁; 相當于生活中的或者
練習: 獲取獎學金的條件是:操評分大于95分或者績點大于4.5
score = 98
grade = 3.5
print('是否能拿獎學金:', score > 95 or grade > 4.5)
# 練習: 獲取獎學金的條件是:a.操評分大于95但是績點不低于2.0 b.績點大于4.5艺普,操評分不低于80
# a和b有一個條件滿足就可以拿獎學金
# a. score > 95 and grade >= 2.0
# b. grade > 4.5 and score >= 80
score = 98
grade = 1.5
print('是否能拿獎學金:', (score > 95 and grade >= 2.0) or (grade > 4.5 and score >= 80))
3)短路操作
條件1 and 條件2 -> 如果條件1的結(jié)果是False, 那么系統(tǒng)不會去判斷條件2的結(jié)果,整個語句的結(jié)果直接變成False
條件1 or 條件2 -> 如果條件1的結(jié)果是True,那么系統(tǒng)不會去判斷條件2的結(jié)果,整個語句的結(jié)果直接變成True
num1 = 10
def func1():
global num1
num1 += 10
return True
# func1()
True or func1()
print(num1)
4) 邏輯非運算: 布爾值取反歧譬,True變False, False變True
not True -> False
not False -> True
對某個條件進行否定的時候使用
年齡不大于18
age = 18
print(age <= 18)
print(not age > 18)
4. 賦值運算符: =, +=, -=, *=, /=, //=, %=, **=
所有的賦值運算符的左邊必須是變量岸浑; 復(fù)合賦值運算符的左邊要求除了是變量以外,這個變量還必須是已經(jīng)聲明過的變量
賦值符號的右邊可以是數(shù)據(jù)瑰步、已經(jīng)聲明過的變量矢洲、運算表達式
name = '胡二'
sum1 = 10 + 23
age1 = age
變量 += 數(shù)據(jù) -> 將變量中保存的值加上指定的數(shù)據(jù),將結(jié)果重新保存到變量中
num2 = 10
num2 += 2 # num2 = num2 + 2
print(num2)
num2 *= 2 # num2 = num2 * 2
print(num2)
num2 /= 2
print(num2)
5. 運算符的優(yōu)先級
數(shù)學運算 > 比較運算符 > 邏輯運算符(not > and > or) > 賦值運算符(最低)
先算優(yōu)先級高的缩焦,再算優(yōu)先級低的读虏。有括號先算括號里面的
num3 = 10 + 2 > 9 and 3 * 2 < 4
# num3 = 10 + 2 > 9 and 6 < 4
# num3 = 12 > 9 and 6 < 4
# num3 = True and False
# num3 = False
print(num3)
1.什么時候需要if條件語句
程序中某些代碼不是一定會執(zhí)行,而是在滿足某些條件的時候才執(zhí)行就可以使用if條件語句
2.if結(jié)構(gòu)
1) 語法
if 條件語句:
代碼塊
其他語句
2) 說明
if - 關(guān)鍵字袁滥,固定寫法
條件語句 - 結(jié)果是布爾的表達式; 本質(zhì)可以是除了賦值語句以外的任何語句盖桥,
例如:數(shù)據(jù),已經(jīng)聲明過的變量,運算表達式
: - 固定寫法, (一般有冒號的地方,后邊都會產(chǎn)生縮進)
代碼塊 - 和if保持一個縮進的一條或者多條語句题翻;滿足條件才會執(zhí)行
3)執(zhí)行過程
先判斷條件語句是否為True(如果條件語句不是布爾值揩徊,先轉(zhuǎn)換成布爾再判斷),
如果為True就執(zhí)行代碼塊中的語句, 否則不行執(zhí)行,直接執(zhí)行后面的其他語句
"""
if False:
print('語句1')
print('語句2')
print('語句23')
print('語句22')
print('語句3')
if 10+20:
print('語句4')
練習: 如果num是偶數(shù)藐握,就打印偶數(shù),否則不打印
num = 15
if num % 2 == 0:
print('偶數(shù)')
3.if-else結(jié)構(gòu)
滿足某個條件執(zhí)行一個操作垃喊,不滿足這個條件執(zhí)行另外的操作
"""
1) 語法
if 條件語句:
代碼塊1
else:
代碼塊2
2) 說明
if - 關(guān)鍵字猾普,固定寫法
條件語句 - 可以是數(shù)據(jù)、聲明過的變量本谜、不包含賦值符號的運算表達式
: - 固定寫法
代碼塊1 - 和if保持一個縮進的一條或者多條語句
else - 關(guān)鍵字初家,固定寫法
代碼塊2 - 和else保持一個縮進的一條或者多條語句
3) 執(zhí)行過程
先判斷條件語句是否為True(如果不是布爾值,轉(zhuǎn)換成布爾再判斷),
如果為True,執(zhí)行代碼塊1乌助,否則執(zhí)行代碼塊2
"""
if False:
print('滿足條件')
else:
print('不滿足條件')
練習: 如果num是偶數(shù)溜在,就打印偶數(shù),否則奇數(shù)
num = 19
if num % 2 == 0:
print('是偶數(shù)')
else:
print('奇數(shù)')
4. if-elif-else
"""
- 語法
if 條件語句1:
代碼塊1
elif 條件語句2:
代碼塊2
elif 條件語句3:
代碼塊3
...
else:
代碼塊4
其他語句
2)執(zhí)行過程
先判斷條件語句1是否為True,
如果為True就執(zhí)行代碼塊1他托,然后整個if-elif-else結(jié)構(gòu)結(jié)束掖肋,直接執(zhí)行其他語句,
否則就去判斷條件語句2是否為True,
如果為True就執(zhí)行代碼塊2,然后整個if-elif-else結(jié)構(gòu)結(jié)束赏参,直接執(zhí)行其他語句,
如果不為True就判斷條件語句3是否為True... 以此類推
如果前面所有的條件語句都不為True,就執(zhí)行else中的語句
"""
"""
0-3 幼兒
4-12 兒童
13-17 少年
18-28 青年
29-49 壯年
50-69 中年
70以上 老年
age = 2
if age <= 3:
print('幼兒')
elif age < 13: # age > 3
print('兒童')
elif age < 18:
print('少年')
elif age < 29:
print('青年')
elif age < 50:
print('壯年')
elif age < 70:
print('中年')
else:
print('老年')
5. if嵌套
可以在任何if結(jié)構(gòu)中根據(jù)需要再寫其他的if結(jié)構(gòu)
練習: 如果一個數(shù)是偶數(shù)就打印偶數(shù)志笼,否則打印奇數(shù)。如果這個數(shù)能被4整除把篓,打印是4的倍數(shù);
如果個數(shù)是3纫溃,打印最后一位數(shù)是3
num = 12
if num % 2 == 0:
print('偶數(shù)')
if num % 4 == 0:
print('4的倍數(shù)')
print('===========')
else:
print('奇數(shù)')
if num % 10 == 3:
print('最后一位數(shù)是3')
else:
print('最后一位數(shù)不是3的奇數(shù)')
if-else
if num % 4 == 0:
print('4的倍數(shù)')
練習: 判斷一個三位數(shù)是否是水仙花數(shù)(個位的3次方+十位的3次方+百位的3次方剛好等于這個數(shù)本身)
153 == 13 + 53 + 3**3 = 1+125+27
num = 371
ge = num % 10
shi = num // 10 % 10
bai = num // 100
if ge**3 + shi**3 + bai**3 == num:
print(num, '是水仙花數(shù)')
else:
print(num, '不是水仙花數(shù)')
python和數(shù)字相關(guān)的類型: int、float韧掩、bool紊浩、complex
1. int(整型): 包含所有的整數(shù), 例如: 20, -30
python中可以通過十進制、二進制坊谁、八進制和十六進制的形式對整數(shù)進行表示
"""
- 十進制數(shù)
基數(shù): 0,1,2,3,4,5,6,7,8,9
進位: 逢10進1
位權(quán): 123(10) = 1102 + 2101 + 310**0 (10的多少次方)
19, 89, 123, 466, 900
*表示方法: 直接寫,不需要要加前綴; 89, 1823, 9012
- 二進制數(shù)
基數(shù): 0,1
進位: 逢2進1
位權(quán): 101(2) = 122 + 021 + 12**0 (2的多少次方)
*表示方法: 在二進制數(shù)前加前綴0b/0B
11100101, 100101, 1000101111, 11, 001, 100, 101
八進制
基數(shù): 0,1,2,3,4,5,6,7
進位: 逢8進1
位權(quán): 56(8) = 581+68*0 = 46 (8的多少次方)
*表示方法: 在八進制數(shù)前加前綴0o/0O十六進制
基數(shù): 0,1,2,3,4,5,6,7,8,9,a/A(10),b/B(11),c/C(12),d/D(13),e/E(14),f/F(15)
進位: 逢16進1
位權(quán): 1af(16) = 1162 + 10161 + 15+16*0 (16的多少次方)
*表示方法: 在十六進制數(shù)前加前綴0x/0X
num = 110
print(num+10)
num2 = 0B101 # 101(2) = 1**2**2 + 0*2**1 + 1*2**0 == 5
print(num2)
num3 = 0o23 # 23(8) = 2*8**1 + 3*8**0 = 19
print(num3)
num4 = 0x1a2 # 1a2(16) = 1*16**2 + 10*16**1 + 2*16**0 = 418
print(num4)
print(10)
print(0b1010) # 0b1010 == 10
print(0o12) # 0o12 == 10
print(0xa) # 0xa = 10
print(314 * 10)
print(314 * 0b1010)
5)*進制轉(zhuǎn)換
轉(zhuǎn)換成二進制: bin(其他進制整數(shù))
轉(zhuǎn)換成八進制: oct(其他進制整數(shù))
轉(zhuǎn)換成十六進制: hex(其他進制整數(shù))
print(bin(100))
print(oct(100)) # 0o144 = 64+32+4
print(hex(100))
num5 = 0xa23
2.float(浮點數(shù)): 包含所有的小數(shù), 12.5, -0.12
python支持科學計數(shù)法
1200 == 1.2e3 0.001 == 1e-3
print(1.2e3, 1e-3)
3.bool(布爾): 只有True和False兩個值
True本質(zhì)就是數(shù)字1费彼,F(xiàn)alse本質(zhì)是數(shù)字0
print(True+1)
print(False+1)
4.complex(復(fù)數(shù)): 包含所有帶有虛部的數(shù)
實部+虛部(數(shù)字后加j)
num1 = 10+2j
print(num1, type(num1))
num2 = 2 - 3j
print(num1 + num2)
print(num1 * num2)
5.type函數(shù)
type(數(shù)據(jù)) -> 獲取數(shù)據(jù)對應(yīng)的類型
6.類型轉(zhuǎn)換
類型名(數(shù)據(jù)) -> 將數(shù)據(jù)轉(zhuǎn)換成指定類型,返回轉(zhuǎn)換后的結(jié)果
int(數(shù)據(jù)): 將數(shù)據(jù)轉(zhuǎn)換成整型; 字符串去掉引號后,本身就是一個整數(shù)呜袁,才能轉(zhuǎn)換成整型
float(數(shù)據(jù)): 將數(shù)據(jù)轉(zhuǎn)換成浮點型; 去掉引號后敌买,本身就是一個數(shù)字,就能轉(zhuǎn)換成浮點數(shù)
bool(數(shù)據(jù)): 數(shù)字轉(zhuǎn)換成布爾時阶界,除了0其他都會轉(zhuǎn)換成True; 除了空串會轉(zhuǎn)換成False,其他都是True
注意: 類型名不能作為變量名
num = 12.5
new_num = int(12.99)
print(type(new_num), new_num)
num2 = float(100)
print(type(num2), num2)
print(bool(10 + 2j))
print(int('-10'))
print(float('1234'))
print(bool(''))