1. 程式人生 > 其它 >5. 基本資料型別、運算子

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這兩次變數賦值的變數名都指向同一個記憶體地址。