1. 程式人生 > 其它 >2022.3.4筆記總結

2022.3.4筆記總結

2022.3.4筆記總結

  • 資料型別之字典dict
  • 資料型別之集合set
  • 資料型別之元組tuple
  • 資料型別之bool值
  • 與使用者互動
  • 格式化輸出
  • 運算子

資料型別之字典dict

​ 我們都學了列表,列表是可以讓一個變數儲存多個數據,

​ info = ['jason', 18, 'read', 19, 888, 110, 'matao']

​ 不難看出,雖然列表能夠儲存多個數據,但是我們並不知道這個資料是什麼意思,因此字典就應運而生。

字典:

​ 能夠比較精確的儲存資訊或者資料,字典的內容用大括號{}括住,它的元素是以 Key:Value 的形式儲存的,Key一般都是字串,Value可以當作變數的值,具體形式如下 :

info = {'name': 'jason', 'age': 18, 'hobby': 'basketball'}
print(info)  # 結果為:{'name': 'jason', 'age': 18, 'hobby': 'basketball'}

​ 注意!字典裡面的資料都是無序的,因此不能使用索引取值,但是可以通過冒號前面的Key取Value的值。

info ={'name': 'jason', 'age': '18', 'hobby': 'basketball'}
print(info('name'))
jason  # 執行結果

​ 那麼字典是否可以像列表一樣巢狀呢,答案是可以的

addr = {'美國': '紐約', '地球': ['韓國', '日本', {'中國':'上海', '印度': '爆炸'}, '泰國']}

​ 但是這樣又如何取值的,我們可以回憶列表的取值方式,結合列表和字典的取值方式,同樣用中括號如下

# 假如我們需要取'上海'這個值
print(addr['地球'][2]['中國'])
上海  # 結果
# 因為上海的外層有三層中/大括號,所以我們只需要用三個中括號即可找出'上海'這個值

​ 其實無論字典的內容有多長多複雜都可以通過拆解的方式進行分割從而找到所需要的值,如下。

addr = {'美國': '紐約', 
            '地球': ['韓國', '日本', 
                   {'中國':'上海', '印度': '爆炸'}, 
                       '泰國']}
# 這樣看起來是不是就一目瞭然了呢

資料型別之集合set

集合:

​ 用大括號括起來,內部存放多個元素,用逗號隔開,但是不是k:v鍵值對,舉例如下:

s = {1, 2, 3, 4, 5}

​ 注意:如果大括號定義空的資料如 a = {},則這個資料型別預設為字典。

資料型別之元組tuple

元組:

​ 跟列表幾乎一致,只不過是用小括號括起來,內部存放多個元素,元素之間用逗號隔開,可以是任意資料型別。

​ 另外,由於元組一般儲存一些不可變的內容,因此元組又叫不可變的列表,如下:

t = (1, 2, 3, 4, 5, 'jason', 2.5)

元組的取值方式也是和列表一樣的,

t1 = (1, 2, 3, 4, 5, 'jason', 2.5)
print(t[5])
jason  # 執行結果

資料型別之布林值bool

布林值bool:

​ 用來描述事物的對錯,是否可行,主要用於邏輯判斷,只有兩種狀態

​ True

​ False

​ 注意:

  • 在python中所有資料在進行邏輯判斷的時候都會轉成布林值。
  • 布林值預設為False的資料:0, None, 空字串, 空列表, 空字典...其他情況均為True

命名規範:

​ 針對諾布林值的變數名,一般採用is開頭,如下

is_right = True
is_left = False
is_die = True

與使用者互動

輸入:

username = input('請輸入您的姓名:')

​ 注意:input獲取到的使用者輸入都會轉成字串型別

輸出:

print(username)
print(username, hobby, age)  # print可以列印多個數據

編寫方式:

  • 直接寫print(內容)
  • 先寫內容,然後使用句點+point

格式化輸出

​ 按照我的理解就是,先使用帶有某種格式的語句,裡面需要替換的資料用佔位符%s和%d代替,如下:

s = '%s同學你好,經過層層篩選,您通過了我們公司的面試,請於%s前往公司辦理入職手續,地址:%s'

print(s % ('馬雲', '1月1日', '上海市浦東新區周浦鎮澄天偉業' ))

馬雲同學你好,經過層層篩選,您通過了我們公司的面試,請於1月1日前往公司辦理入職手續,地址:上海市浦東新區周浦鎮澄天偉業  # 執行結果

​ 可以看出來,通過使用%s,我們可以替換相應的資料,那麼結合與使用者互動的知識,如何寫出一個程式來讓使用者輸入然後替換相應的值呢?如下:

username = input('請輸入你的名字:')
age = input('請輸入你的年齡:')
print('我的名字是%s,我今年%s歲。' % (username, age))

請輸入你的名字:馬雲
請輸入你的年齡:18
我的名字是馬雲,我今年18歲。  # 執行結果

%s和%d的區別

​ %s可以給任意資料佔位

​ %d只能給數字佔位

%d使用例如'%08d',代表從0到8的8位數,如下:

print('%08d' % 110)
00000110  # 執行結果,固定8位數
print('%09d' % 119)
000000119  # 執行結果,固定8位數
print('%07d' % 123456789)
123456789  # 執行結果,固定7位數,超出幾位就是幾位

運算子與賦值方式

簡單數學運算

乘(*) 除(/) 整除(//) 取餘(%) 等於(==)

增量賦值

+=, -=, *=, /=

  • x += 100 (x = x + 100)
  • x -= 100 (x = x - 100)
  • x *= 100 (x = x * 100)
  • x /= 100 (x = x / 100)

鏈式賦值

x = 1

y = x

z = y

簡化: x = y = z

交叉賦值

m = 1

n = 2

思考:如何讓m與n的值調換一下呢?

# 方式1:使用第三方變數
tem = m
m = n
n = tem
print(m, n)
2 1  # 執行結果
# 方式2:交叉賦值
m, n = n, m
print(m, n)
2 1  # 執行結果

解壓賦值

​ 建立一個列表name_list:

name_list = ['馬雲', '馬化騰', '任正非']
name1, name2, name3, = name_list
print(name1, name2, name3)
馬雲 馬化騰 任正非  # 執行結果

​ 由此可見解壓賦值可以批量賦值給列表裡面的多個數據,但是注意:

  • 解壓賦值左邊變數名和右邊值個數要相等
  • 但是通過*(星號)可以打破限制,例如下:
t = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a, b, *_ = t
print(a, b)
1 2  # 執行結果

a, *_, b = t
print(a, b)
1 10  # 執行結果

​ 由此可見*+任意字元可以代表多個數據,一般我們不用的資料用_表示。

邏輯運算子

​ and (與)

  • 用來連線多個條件,必須所有條件為True,結果才為True

​ or (或)

  • 用來連線多個條件,只要有一個條件滿足,結果都為True

​ not (非)

  • 將條件反轉,True為False,False為True

​ and,or,not,在一起使用的時候其實是有優先順序的,但是我們不需要記,因為我們可以人為地將它們分類,強制規定好順序,例如:

(3<4 and 2<1) or ((5 == 6 and 1 == 1) or '馬雲' == '馬雲')

​ 這樣在執行地時候就可以按照括號裡面的先執行,在執行括號外面的了,就像數學(1+1)*5=10一樣。

成員運算

​ 成員運算是判斷個體在不在群體內

​ in

​ not in

m = ['jason', '馬雲', 'tony']
print('馬雲' in m)
print('tony' not in m)
True  # 結果為True
False  # 結果為False

​ 由此可見,這是一個判斷的命令,所以最後轉成了bool值,通過布林值能夠確定資料在不在m裡面。

身份運算

​ is:判斷兩個資料的記憶體地址是否一致

​ ==:判斷兩個資料的值是否相等

由於身份運算也是個判斷句式,因此結果也是輸出一個bool值,如下

m = 1
n = 1
print(m is n)  # 結果為True
print(m == n)  # 結果為True

好了今天的內容就到此結束了,有很多新的名詞以及知識點,需要我們去熟悉,通過敲程式碼不斷實踐才能刻在腦子裡,加油!!!