1. 程式人生 > >02-python基礎知識-運算子與分支機構

02-python基礎知識-運算子與分支機構

運算子與分支結構

運算子

  • 賦值運算子

    • 用’='表示,左邊只能是變數。
  • 算術運算子

    • +、-、*:加、減、乘
    • /:除法,結果是浮點數
    • //:除法,結果是整數
    • %:求餘
    • **:求冪,也可以使用函式pow
  • 複合運算子

    • +=、-=、*=、…
    • 示例:a += b等價於a = a + b
  • 關係運算符

    • >、>=、<、<=、==、!=
    • 表示式:由運算子和運算元構成的式子
    • 關係表示式:由關係運算符和運算元構成的式子
    • 關係表示式式有值的:符合數學邏輯值為真(True),不符合數學邏輯值為假(False)
  • 邏輯運算子

    • 說明:邏輯運算就是用來合併或取反表示式的
    • 運算:與、或、非
    • 與(and):兩邊的表示式同時為真,結果才為真
    a = 200
    # 其他語法也通用的寫法
    print(a > 10 and a < 100)
    # python中特有的形式
    print(10 < a < 100)
    print(a%3 == 0 and a%5 == 0)
    
    • 或(or):兩邊的表示式一個為真,結果就為真
    y = int(input('請輸入一個年份:'))
    print((y%4==0 and y%100!=0) or (y%400==0))
    
    • 非(not):用於取反表示式,真變假,假變真
      • 使用not是為了簡化表示式的書寫
      • 經常伴隨著隱式型別轉換
  • 成員運算子

    • in、not in:判斷一個值是否在另一個裡面
    • 說明:經常用在字串、列表、元組、集合、字典等成員的判斷
    • 示例:
    lt = [1, 2, 3]
    print(8 not in lt)
    dt = {'name'
    :'xiaoli', 'age': 18} # 對於字典,判斷的是鍵 print('name' in dt)
  • 位運算子(瞭解)

    • &:按位與,對應的資料位同時為1,結果上對應的位才為1
    • |:按位或,對應的資料位一個為1,結果上對應的為就為1
    • ^:按位異或,對應的資料位相同是結果為0,不同時結果為1
    • ~:按位取反,資料的每一位0變1,1變0
    • <<:按位左移,左移一位相當於乘以2
    • >>:按位右移,右移一位相當於除2
  • 運算子的優先順序與結合性

    • 語法中沒有明確規定優先順序與結合性,即使是明確說明了你也記不住
    • 建議:使用時不用刻意記錄優先順序與結合性,當需要明確指定時新增括號即可

流程控制

  • 說明:

    • 按照程式碼的執行流程,程式可以分為三種結構:順序結構、分支結構、迴圈結構
    • 順序結構:程式碼按照從上到下的順序依次執行的結構,沒有語法要求
    • 程式碼層次:python中的程式碼層次不是通過大括號表示的,而是通過縮排體現的
  • 分支結構(if-elif-else)

    • 格式1:適合於解決生活中的條件執行問題
    if 表示式:
    	語句塊
    

    執行流程:當程式執行到if語句時,首先會判斷表示式的真假。若表示式的值為真,則執行後面縮排的語句塊;若表示式的值為假,則跳過語句塊,執行後面的內容。

    • 格式2:適合於解決生活中的非此即彼的問題
    if 表示式:
    	語句塊1
    else:
    	語句塊2
    

    執行流程:當程式執行到if-else語句時,首先會判斷表示式的真假。若表示式的值為真,則執行語句塊1;若表示式的值為假,則執行語句塊2.

    • 格式3:適合於解決生活中的多種選擇問題
    if 表示式1:
    	語句塊1
    elif 表示式2:
    	語句塊2
    ...
    else:
    	語句塊n
    
    1. elif的個數沒有限制
    2. else可以省略不寫
    3. 所有的互斥選擇語句塊最多隻能執行一個

相關型別操作

  • 字串切片

    s1 = "hello"
    s2 = "world"
    # 兩個字串拼接
    s3 = s1 + s2
    print(s3)
    
    # *可以重複字串次數
    s4 = "abc" * 3
    print(s4)
    
    # len函式統計字元長度
    print(len(s1))
    
    s = "abcdefg"
    # 從頭開始進行提取,下標從0開始
    print(s[0])
    # 蔥末未進行提取,下標從-1開始
    print(s[-1])
    # 切片
    # 格式:s[開始:結束:步進],左包含,右不包含
    print(s[1:3])
    # 指定步進值,預設為1
    print(s[::2])
    # 逆序提取
    print(s[::-1])
    
    
    # 字串格式化
    # %s:字串
    # %d:整型
    # %f:浮點
    # %c:字元
    name = "二狗"
    like = "大花"
    age = 18
    # print("俺叫%s,暗戀%s,她今年%d歲" % (name, like, age))
    print("俺叫"+name, "暗戀"+like, "她今年"+str(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))
    
    
  • 列表操作

    lt = [1, 2, 3, 4, 5]
    
    print(lt[0])
    print(lt[-1])
    print(len(lt))
    
    
    # 修改元素
    lt[0] = 100
    # 元素追加
    lt.append(200)
    # lt.append([300, 400])
    # 將可迭代物件的元素新增到列表中
    lt.extend([300, 400])
    # 插入元素
    lt.insert(2, 250)
    # 刪除元素
    # 根據索引號刪除
    del lt[0]
    # 根據值進行刪除,只會刪除第一個
    lt.remove(250)
    # 返回並刪除指定下標元素,預設是最後一個
    ele = lt.pop(2)
    # print(ele)
    # print(lt)
    
    lt = [1, 2, 3, 4, 5, 3]
    # 查詢元祖在列表中的索引號
    # 找到就會返回其索引號,第一個出現的位置
    # 若不在列表中會報錯
    print(lt.index(3))
    # 統計元素在列表中出現的次數
    print(lt.count(3))
    
    # 逆序
    lt.reverse()
    # 排序
    # reverse = True
    lt.sort(reverse=True)
    print(lt)
    
  • 元組操作

    # tp1 = (1, 2, 3)
    # tp1 = (1,)
    tp1 = 1, 2, 3
    tp2 = (4, 5, 6)
    # 可以直接拼接在一起
    # tp3 = tp1 + tp2
    # print(tp3, type(tp3))
    # 重複指定次數
    tp4 = tp1 * 3
    print(tp4)
    # 統計元素個數
    print(len(tp4))
    tp = (1, 2, 3, 4, 5, 6)
    # 切片操作
    print(tp[0], tp[-1])
    print(tp[1:-1])
    # 獲取指定元素的索引
    print(tp.index(3))
    # 統計元素出現的次數
    print(tp.count(3))
    # 最大值
    print(max(tp))
    # 最小值
    print(min(tp))
    
  • 集合操作

    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(s2.issuperset(s1))
    
  • 字典操作

    d = {'name': 'xiaoming', 'age': 20}
    
    # 獲取元素
    # 有就返回對應的值,沒有就報KeyError錯
    print(d['name'])
    # 有就返回對應的值,沒有就返回None,可以指定預設值
    print(d.get('namexxx', '預設值'))
    
    # 修改元素
    # 鍵存在則修改對應的值
    d['name'] = '二狗'
    # 鍵不存在則新增鍵值對
    d['height'] = 180
    
    # 更新:存在的鍵會覆蓋,不存在的鍵會新增
    d.update({'name': 'dahua', 'weight': 50})
    
    # 刪除元素
    # del d['weight']
    # 返回並刪除
    print(d.pop('weight'))
    
    # 清空元素
    d.clear()
    
    print(d)