運算符與分支結構 運算符 賦值運算符 用'='表示,左邊只能是變數。 算術運算符 +、-、*:加、減、乘 /:除法運算,結果是浮點數 //:除法運算,結果是整數 %:求餘 **:求冪 複合運算符 +=、-=、*=、/=、//=、%=、**= 示例:a += b等價於a = a + b 關係運算符 > ...
運算符
-
賦值運算符
-
用'='表示,左邊只能是變數。
-
-
算術運算符
-
+、-、*:加、減、乘
-
/:除法運算,結果是浮點數
-
//:除法運算,結果是整數
-
%:求餘
-
**:求冪
-
-
複合運算符
-
+=、-=、*=、/=、//=、%=、**=
-
示例:
a += b
等價於a = a + b
-
-
關係運算符
-
>、>=、<、<=、==、!=
-
表達式:由操作數和運算符構成的式子
-
關係表達式:由操作數和關係運算符構成的式子
-
關係表達式是有值的:符合數學邏輯值為真(True)、不符合數學邏輯值為假(False)
-
-
邏輯運算符
-
與(and):兩邊的表達式同時為真,結果才為真。
a = 20
# 通用寫法
# print(a>=10 and a<=100)
# 特有寫法
print(10 <= a <= 100)
b = 10
print(b%3 == 0 and b%5 == 0)-
或(or):兩邊的表達式一個為真,結果就為真。
year = int(input('請輸入一個年份:'))
print((year % 4 == 0 and year % 100 != 0) or (year % 400 == 0))-
非(not):用於取反表達式,真變假,假變真。
-
經常伴隨著隱式類型轉換
-
使用not是為了簡化書寫
-
-
-
成員運算符
-
in、not in:判斷一個值是否在另一個變數中
-
說明:通常用在字元串、列表、元組、集合、字典等成員的判斷
-
示例:
lt = [1, 2, 3]
print(8 in lt)
print(8 not in lt)
d = {'name': 'ergou', 'age': 18}
# 字典成員判斷的是鍵
print('name' in d) -
-
位運算符(瞭解)
-
&:按位與,對應的數據位同時為1,結果上對應的位才為1
-
|:按位或,對應的數據位一個為1,結果上對應的位就為1
-
^:按位異或,對應的數據位相同時結果上的位為0,不同時結果上位為1
-
~:按位取反,數據的每一位,0變1,1變0
-
<<:按位左移,左移一位相當於乘以2
-
》:按位右移,右移一位相當於除以2
-
-
優先順序與結合性
-
語法中沒有明確規定運算符的優先順序與結合性,即使明確說了你也不一定能記得住。
-
建議:使用時不用刻意記錄優先順序與結合性,當需要明確指定時添加括弧即可。
-
流程式控制制
-
說明:
-
按照程式的執行流程,程式可以分為三種結構:順序結構、分支結構、迴圈結構
-
順序結構:代碼按照從上到下的順序依次執行,沒有語法要求。
-
代碼層次:python中的代碼塊不是通過大括弧表示的,而是通過縮進來表示。
-
-
分支結構(if-else)
-
格式1:適合於生活中的條件執行問題
if 表達式:
語句塊執行流程:當程式執行到if語句時,首先判斷表達式的真假。若表達式的值為真,則指定縮進的語句塊;若表達式的值為假,則跳過語句塊執行後面的內容。
-
格式2:適合於解決生活非此即彼的問題
if 表達式:
語句塊1
else:
語句塊2執行流程:當程式執行到if-else語句時,首先判斷表達式的值真假。若表達式的值為真,則執行語句塊1;若表達式的值為假,則執行語句塊2.
-
格式3:適合於解決生活中多種選擇的問題
if 表達式1:
語句塊1
elif 表達式2:
語句塊2
elif 表達式n:
語句塊n
else:
語句塊-
elif的個數沒有限制
-
else可以省略
-
所有的語句塊最多只能執行一個
-
字元串格式化
-
示例:
name = '二狗'
like = '王大花'
age = 18
# 格式化
# %s:字元串
# %d:整數
# %f:浮點
# %c:字元
print('俺叫%s,暗戀%s,她今年%d歲' % (name, like, age))
# python特有的格式化方案,推薦使用
print('俺叫{},暗戀{},她今年{}歲'.format(name, like, age))
print('俺叫{2},暗戀{1},她今年{0}歲'.format(name, like, age))
print('俺叫{l},暗戀{n},她今年{a}歲'.format(n=name, l=like, a=age))
ASCII
-
說明:美國信息交換標準代碼,就是用一個數字代表一個字元的表示形式。
-
函數:
# 根據字元獲取ASCII碼
print(ord('A'))
# 根據ASCII碼的值獲取字元
print(chr(97))
列表操作
-
示例:
lt = [1, 2, 3, 4, 5]
print(lt[0])
print(lt[-1])
print(lt[1:3])
print(len(lt))
# 修改
lt[0] = 100
# 追加,在列表的末尾添加
# lt.append(200)
# 整體作為一個元素添加
# lt.append([200, 300])
# 將可迭代對象中的每一個元素依次添加到列表
lt.extend([200, 300])
# 在指定位置插入元素
lt.insert(2, 250)
# 刪除
# 根據下標刪除元素
del lt[0]
# 根據值進行刪除
lt.remove(250)
# 返回並刪除執行下標的元素,預設最後一個
last = lt.pop(3)
print(last)
lt = [1, 2, 3, 4, 5, 1]
# 根據元素,查找下標(第一個)
print(lt.index(1))
# 統計元素出現的次數
print(lt.count(1))
# 逆序
lt.reverse()
print(lt)
lt = [5, 8, 3, 1, 9]
# 排序,預設升序,可以通過reverse參數指定倒序排
lt.sort(reverse=True)
print(lt)
集合操作
-
示例
s = {'生輝', '學軒', '俊峰', '鵬基', '二狗'}
# 添加元素
s.add('曉富')
# 刪除
# s.remove('二狗')
# 刪除不存在的元素時會報KeyError錯
# s.remove('狗蛋')
# 有就刪除,沒有也不報錯
# s.discard('狗蛋')
# 返回並刪除
# print(s.pop())
# 清空元素
s.clear()
# print(s)
s1 = {'小馬', '小芳', '小敏'}
s2 = {'小杜', '小王', '小敏'}
# 並集,捕獲改變原集合
# print(s1.union(s2))
# 交集,不會改變原集合
# print(s1.intersection(s2))
# 交集,然後覆蓋原集合
# s1.intersection_update(s2)
# 差集,不會改變原集合
# print(s1.difference(s2))
# 差集,然後覆蓋原集合
# s1.difference_update(s2)
# print(s1)
# 判斷是否沒有交集
print(s1.isdisjoint(s2))
# 判斷是否是另一集合的子集
print(s1.issubset(s2))
# 判斷是否是另一集合的父集/超集
print(s1.issuperset(s2))
字典操作
-
示例
d = {'name':'ergou','age':18}
#獲取成員
print(d.get('name','預設'))
#修改元素
#元素存在直接更改
#d['name'] = '二狗'
#元素不存在則添加
#d['height'] = 180
#更新,存在的覆蓋,不存在的添加
#d.update({'name':'二狗','height': 180})
#刪除
#del d['age']
#返回後刪除
#print(d.pop('age'))
#清空
#d.clear()
print(d)