小甲鱼python的课后题好难_小甲鱼《零基础学习Python》课后笔记(二十六):字典——当索引不好用时2...
測試題
0.Python的字典是否支持一鍵(Key)多值(Value)?
不支持。對相同的鍵賦值會覆蓋原來的值。>>> dict2 = {1:'one',1:'two',3:'three'}
>>> dict2
{1: 'two', 3: 'three'}
1.在字典中,如果試圖為一個不存在的鍵(Key)賦值會怎樣?
會創建一個新的鍵值對。>>> dict1 = {1:'one',2:'two',3:'three'}
>>> dict1
{1: 'one', 2: 'two', 3: 'three'}
>>> dict1[4] = ('four')
>>> dict1
{1: 'one', 2: 'two', 3: 'three', 4: 'four'}
2.成員資格符(in和not in)可以檢測一個元素是否在序列中,當然也可以用來檢查一個鍵(Key)是否在字典中。那么請問哪種的檢查效率更高些?為什么?
字典的效率要更高一些。因為字典的原理是使用哈希算法存儲,不需要使用查找算法進行匹配,時間復雜度是O(1)。
3.Python對鍵(Key)和值(Value)有沒有類型限制?
Python對鍵有要求,要求是可哈希(Hash)的對象,不能是可變類型(包括變量,列表,字典本身等)
對于值就沒有任何限制,可以是Python里的任何類型。
4.請目測下邊代碼執行后,字典dict1的內容是什么?dict1.fromkeys((1,2,3),('one', 'two', 'three'))
dict1.fromkeys((1,3), '數字')
dict1的內容不變,保持原來的內容。>>> dict1 = {}
>>> dict1.fromkeys((1,2,3),('one', 'two', 'three'))
{1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}
>>> dict1.fromkeys((1,3), '數字')
{1: '數字', 3: '數字'}
>>> dict1
{}
要注意fromkeys()方法是返回一個新創建的字典。>>> dict2 = dict1.fromkeys((1,2,3),('one', 'two', 'three'))
>>> dict2
{1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}
>>> dict2 = dict1.fromkeys((1,3), '數字')
>>> dict2
{1: '數字', 3: '數字'}
>>> dict1
{}
5.如果你需要將字典dict1 = {1: ‘one’,2: ‘two’,3: ‘three’}拷貝到dict2,你應該怎么做? 使用copy()方法。不要使用賦值等號。>>> dict1 = {1:'one',2: 'two',3: 'three'}
>>> dict2 = dict1.copy()
>>> dict3 = dict1
>>> dict1
{1: 'one', 2: 'two', 3: 'three'}
>>> dict2
{1: 'one', 2: 'two', 3: 'three'}
>>> dict3
{1: 'one', 2: 'two', 3: 'three'}
>>> dict3[4] = 'four'
>>> dict1
{1: 'one', 2: 'two', 3: 'three', 4: 'four'}
>>> dict2
{1: 'one', 2: 'two', 3: 'three'}
>>> dict3
{1: 'one', 2: 'two', 3: 'three', 4: 'four'}
>>> dict2[4] = 'five'
>>> dict1
{1: 'one', 2: 'two', 3: 'three', 4: 'four'}
>>> dict2
{1: 'one', 2: 'two', 3: 'three', 4: 'five'}
>>> dict3
{1: 'one', 2: 'two', 3: 'three', 4: 'four'}
賦值等號是把一個字典指向內存地址而已,所以改變dict3也就是操作和dict1一樣的內存。
動動手
0.嘗試編寫一個用戶登錄程序(這次嘗試將功能封裝成函數),程序實現如圖:def Log_On():
'用戶登錄程序'
dict1 = {}
while True:
print('|---新建用戶:N/n---|')
print('|---登錄賬號:E/e---|')
print('|---推出程序:Q/q---|')
number =input('|---請輸入指令代碼:')
if (number == 'N') or (number == 'n'):
key = input('請輸入用戶名:')
for x in range(4):
if key in dict1:
key = input('此用戶名已被使用,請重新輸入:')
value = input('請輸入密碼:')
dict1[key] = value
print('注冊成功,趕緊試試登錄吧^_^')
break
else:
value = input('請輸入密碼:', )
dict1[key] = value
print('注冊成功,趕緊試試登錄吧^_^')
break
continue
elif (number == 'E') or (number == 'e'):
key = input('請輸入用戶名:')
if key in dict1:
for x in range(3):
value = input('請輸入密碼:')
if dict1[key] == value:
print('歡迎進入WOLF系統,點擊右上角的X結束程序!')
break
else:
if x < 2:
print('出錯提示:密碼錯誤,請您重新登錄!')
continue
else:
break
continue
else:
for x in range(3):
key = input('你輸入的用戶名不存在,請重新輸入:')
if key in dict1:
value = input('請輸入密碼:')
print('歡迎進入WOLF系統,點擊右上角的X結束程序!')
break
else:
if x < 2:
print('不存在此用戶名,請檢查書寫,重新輸入:')
continue
continue
elif (number == 'Q') or (number == 'q'):
break
else:
print('輸入錯誤!')
continue
Log_On()
總結
以上是生活随笔為你收集整理的小甲鱼python的课后题好难_小甲鱼《零基础学习Python》课后笔记(二十六):字典——当索引不好用时2...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python爬取学校题库_pyhton
- 下一篇: 为什么攒不下钱了 这三个阶段的人最烧钱