5. 基本資料型別、運算子
資料型別之字典dict
引出:需要用一個變數記錄多個不同屬性的值,比如人的年齡、身高、體重,但是列表是使用索引對應值的,而索引不能明確的表示值的含義,這就需要用到字典型別。
定義:在{ }內用逗號分隔開多個元素,每一個元素都是key:value的形式;
其中value是真實的資料,類似於變數的值,可以是任意型別;
key是對value描述性質的資訊,必須是不可變型別,通常為字串。
程式碼:
info = {'name': 'Messi', 'age': 35, 'club': 'psg', 'num': 30} # 字典取值的方法 print(info['name']) print(info['club']) Messi psg
字典的元素中含有列表的取值方法:
# 取出Messi任職的第二傢俱樂部的值 info = {'name': 'Messi', 'age': 35, 'club': ['fcb', 'psg'], 'num': 30} print(info['club'][1]) psg
資料型別之集合set
# 該資料型別功能很單一,並且後續使用頻率較低
定義:在{ }內用逗號分隔開多個元素 # 區別於字典,不是k:value鍵值對
特點:1. 每個元素必須是不可變型別
2. 集合內沒有重複的元素
3. 集合內元素無序
s = {1, 2, 3, 4, 5} # 集合的作用:去重 s2 = {1, 1, 1, 1, 2} print(s2) {1, 2}
如果{ }定義空的資料,那麼預設是字典
a = {} print(type(a)) <class 'dict'>
資料型別之元組tuple
概念:元組與列表類似,也可以存多個任意型別的元素,不同之處在於元組的元素不能修改
特點:元組一般儲存只能檢視不能改的資料
定義方式:小括號記憶體多個任意資料型別的元素,元素之間用逗號分隔
t = (1, 2, 3, 4)
資料型別之布林值bool
True、False
作用:用來記錄真假這兩種狀態
布林值用來描述事物的對錯,True就是可行,False就是不可行
定義:約定俗成的方法,針對布林值的變數名,一般採用is開頭
is_right = True
is_delete = False
is_alive = True
"""
在python中所有的資料進行邏輯判斷的時候都會轉成布林值
布林值預設為False的資料:0 None 空字串 空列表 空字典
其它情況布林值都是True
"""
與使用者互動
1. 輸入input
在python3中,input功能會等待使用者的輸入,使用者輸入任何內容,都存成字串型別,然後賦值給等號左邊的變數名
2. 輸出print
# 輸出一個值 print(1111) # 輸出多個值,用逗號隔開 print(111, 222, 333, 444)
# 輸出的另外一種編寫方式:先寫需要列印的內容,接句點號,再寫print,按Tab鍵
3. 格式化輸出
定義:把一段字串裡面的某些內容替換之後再輸出,就是格式化輸出
如何進行格式化輸出:
%s佔位符:可以接收任意型別的值
%d佔位符:只能接收數字
# %d的用法 print('%08d' % 111) # 不夠的部分用0填充 00000111 print('%08d' % 2) # 不夠的部分用0填充 00000002 print('%08d' % 666666666666) # 超過的部分照常列印 666666666666
# 練習2:使用者輸入姓名、年齡、工作、愛好 ,然後列印成以下格式 ------------ info of Tony ----------- Name : Tony Age : 22 Sex : male Job : Teacher ------------- end -----------------
運算子
1.算術運算子:
乘 *
除 / # 結果帶小數
整除 // # 只保留整數部分
取餘 %
>>> 10/3 3.3333333333333335 >>> 10//3 3 >>> 10%3 1
2.比較運算子:
> >= < <= == !=
3.賦值運算子
增量賦值: x += 100 # x = x + 100 x -= 100 # x = x - 100 x *= 100 # x = x * 100 x /= 100 # x = x / 100
鏈式賦值: x = 100 y = x z = x 用鏈式賦值簡化之後的程式碼: x = y = z = 100
交叉賦值: m = 111 n = 222 # 需求:m與n的值互換 m, n = n, m print(m, n) 222 111
解壓賦值: player = ['梅西', 'C羅', '姆巴佩', '林加德'] p1, p2, p3, p4 = player print(p1, p2, p3, p4) """ 1.正常情況下,變數名要與列表中元素的個數相等 2.也可以打破個數限制,如以下例子所示 """ l2 = [11, 22, 33, 44, 55, 66] a, b, *_ = l2 # 取開頭的兩個值 print(a, b, _) a, *_, b = l2 # 取首尾的兩個值 print(a, _, b) """ 約定俗成的規律:單獨的下劃線作為變數名,代表該變數名用不到,但是要符合語法 """
4.邏輯運算子
and (與運算) 連線多個條件,必須都是True,結果才是True 2 > 1 and 1 != 1 and True and 3 > 2 or (或運算) 連線多個條件,只要有一個為True, 結果就是True 2 > 1 or 1 != 1 or True or 3 > 2
not(非運算) 取反 True變為False,False變為True
5.成員運算子、身份運算子
判斷元素在不在某個群體內
成員運算子: 判斷元素在不在某個群體內 l2 = ['阿根廷', '足球巨星', '里奧', '梅西'] print('梅西' in l2) True print('里奧' not in l2) False
身份運算子:
== 判斷兩個資料的值是否一致
a = 111222333
b = 111222333
print(a == b)
True
is 判斷兩個資料的記憶體地址是否一致
在原生的python直譯器中,有小整數池的概念,從python直譯器啟動那一刻開始,就會在記憶體中事先申請好一系列記憶體空間存放常用的整數,範圍是[ -5 ,256 ]
因此在直譯器中,a = 111222333 和 b = 111222333這兩次變數賦值需要申請兩次記憶體空間,所以a和b的記憶體地址不同;
而pycharm中做了優化,可以使得a = 111222333和 b = 111222333這兩次變數賦值的變數名都指向同一個記憶體地址。