1. 程式人生 > >【零基礎】Python3學習課後練習題(二十二)

【零基礎】Python3學習課後練習題(二十二)

本文是跟著魚C論壇小甲魚零基礎學習Python3的視訊學習的,課後題也是跟隨每一課所附屬的題目來做的,根據自己的理解和標準答案記錄的筆記。

第二十五課

測試題:

0.當你聽到小夥伴在討論“對映”、“雜湊”、“雜湊”或者“關係數列”的時候,事實上他們就是在討論什麼呢?

答:都是在說Python的字典。

1.嘗試一下將資料(‘F’:70, ‘C’:67, ‘h’:104, ‘i’:105, ‘s’:115)建立為一個字典並訪問鍵‘C’對應的值?

答:

#第一種方法
>>> zidian = {'F':70, 'C':67, 'h':104, 'i':105, 's':115}
>>> zidian
{'F': 70, 'C': 67, 'h': 104, 'i': 105, 's': 115}
>>> zidian['C']
67
#第二種方法
>>> zidian = dict((('F',70),('C',67),('h',104),('i',105),('s',115)))
>>> zidian['C']
67
#第三種方法
>>> zidian = dict(F = 70, C = 67, h = 104, i = 105, s = 115)
>>> zidian['C']
67
#第四種方法
>>> zidian = dict([('F',70),('C',67),('h',104),('i',105),('s',115)])
>>> zidian['C']
67
#第五種方法
>>> zidian = dict({'F':70,'C':67,'h':104,'i':105,'s':115})
>>> zidian['C']
67
#第六種方法
>>> zidian = dict(zip(['F', 'C', 'h', 'i', 's'], [70, 67, 104, 105, 115]))
>>> zidian['C']
67

2.用方括號(“[]”)括起來的資料我們叫列表,那麼用大括號(“{}”)括起來的資料我們就叫字典,對嗎?

答:不正確,用方括號括起來的資料可以變成列表,但是用大括號括起來的資料還要形成有對應物件的對映關係(即 鍵 與 值 )才能構成字典。

3.你如何理解有些事情字典做得到,但是“萬能的”列表卻難以實現?

答:列表本身的元素是隻有與其所在位置的索引值有對應關係的,而元素與元素之間是無法產生相互對映關係的,並且列表與列表之間要表達對映關係只能通過索引值進行索引之後再提取進行對應,這樣會變麻煩很多。所以字典的存在就彌補了這種繁瑣過程的缺陷,字典本身內在的元素就通過鍵(key)與值(value)之間進行了對映關係,所以在呼叫的時候能很快通過鍵取得值,省去了列表與列表先索引再對應的過程。

4.下邊這些程式碼,他們都在執行一樣的操作嗎?你看得出差別嗎?

>>> a = dict(one=1,two=2,three=3)
>>> b = {'one':1,'two':2,'three':3}
>>> c = dict(zip(['one','two','three'],[1,2,3]))
>>> d = dict([('two',2),('one',1),('three',3)])
>>> d = dict({'three':3,'one':1,'two':2})

答:是的,都是在執行創作一個相同元素物件的字典的操作,差別在於建立字典元素排布的順序不一樣。

>>> a = dict(one=1,two=2,three=3)
>>> b = {'one':1,'two':2,'three':3}
>>> c = dict(zip(['one','two','three'],[1,2,3]))
>>> d = dict([('two',2),('one',1),('three',3)])
>>> e = dict({'three':3,'one':1,'two':2})
>>> a
{'one': 1, 'two': 2, 'three': 3}
>>> b
{'one': 1, 'two': 2, 'three': 3}
>>> c
{'one': 1, 'two': 2, 'three': 3}
>>> d
{'two': 2, 'one': 1, 'three': 3}
>>> e
{'three': 3, 'one': 1, 'two': 2}

5.如圖,你可以推測出打了馬賽克部分的程式碼嗎?

答:馬賽克部分的程式碼是 data.split(',') ,作用是分別把data裡面的值分片賦給字典MyDict裡面的鍵。

動動手:

0.嘗試利用字典的特性編寫一個通訊錄程式吧,功能如圖:

答:

print("""|--- 歡迎進入Rony通訊錄程式 ---|
|---   輸入選項數字使用功能  ---|
|---    1:查詢聯絡人資料.   ---|
|---    2:加入新的聯絡人.   ---|
|---    3:刪除已有聯絡人.   ---|
|---    4:退出通訊錄程式.   ---|
""")
txl = {}
while True:
    srdm = int(input('請輸入通訊錄功能程式碼:'))
    if srdm == 1:
        xm = input('請輸入聯絡人姓名:')
        if xm in txl:
            print('為您查詢到了:'+ xm + ' 聯絡電話:' + txl[xm])
            continue
        else:
            print('查詢不到此聯絡人,為您返回初始介面。')
            continue
    if srdm == 2:
        xm = input('請輸入聯絡人姓名:')
        if xm in txl:
            print('您輸入的聯絡人已存在 -->'+ xm + ' 聯絡電話:' + txl[xm])
            pd = input('是否修改聯絡人資料?(YES/NO):')
            if pd == 'YES':
                dh = input('請輸入聯絡人新的電話:')
                txl[xm] = dh
                print('修改完成,為您返回初始介面。')
                continue
            else:
                print('為您返回初始介面。')
                continue
        else:
            dh = input('請輸入聯絡人電話:')
            txl[xm] = dh
            print('新增完成,為您返回初始介面。')
            continue
    if srdm == 3:
        xm = input('請輸入聯絡人姓名:')
        if xm in txl:
            print('請問是否刪除此聯絡人?'+ xm + ' 聯絡電話:' + txl[xm])
            pd = input('(YES/NO):')
            if pd == 'YES':
                del(txl[xm])
                print('刪除成功,為您返回初始介面。')
                continue
            else:
                print('為您返回初始介面。')
                continue
        else:
            print('沒有找到該聯絡人,為您返回初始介面。')
            continue
    if srdm == 4:
        break
    else:
        print('輸入有誤,為您返回初始介面。')
        continue