字典做業及默寫

關於set集合做業: 寫一個彩票開獎(36選7)
##題意理解:從1-36中隨機產生7個不重複的數字做爲開獎數字
from random import randintpython

randint(1,36)) #返回1-36之間的一個隨機數,包括36

git

 

1,有以下變量(tu是個元祖),請實現要求的功能  服務器

tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])app

    a. 講述元祖的特性dom

    b. 請問tu變量中的第一個元素 "alex" 是否可被修改?this

    c. 請問tu變量中的"k2"對應的值是什麼類型?是否能夠被修改?若是能夠,請在其中添加一個元素 "Seven"spa

  d. 請問tu變量中的"k3"對應的值是什麼類型?是否能夠被修改?若是能夠,請在其中添加一個元素 "Seven"code

 

2, 字典dic,dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}blog

  a.請循環輸出全部的key索引

  b.請循環輸出全部的value

    c. 請循環輸出全部的key和value

  d. 請在字典中添加一個鍵值對,"k4": "v4",輸出添加後的字典

  e. 請在修改字典中 "k1" 對應的值爲 "alex",輸出修改後的字典

  f. 請在k3對應的值中追加一個元素 44,輸出修改後的字典

  g. 請在k3對應的值的第 1 個位置插入個元素 18,輸出修改後的字典

 

3,av_catalog = {
    "歐美":{
        "www.youporn.com": ["不少免費的,世界最大的","質量通常"],
        "www.pornhub.com": ["不少免費的,也很大","質量比yourporn高點"],
        "letmedothistoyou.com": ["可能是自拍,高質量圖片不少","資源很少,更新慢"],
        "x-art.com":["質量很高,真的很高","所有收費,屌絲請繞過"]
    },
    "日韓":{
        "tokyo-hot":["質量怎樣不清楚,我的已經不喜歡日韓範了","verygood"]
    },
    "大陸":{
        "1024":["所有免費,真好,好人一輩子平安","服務器在國外,慢"]
    }
}

    a,給此 ["不少免費的,世界最大的","質量通常"]列表第二個位置插入一個  元素:'量很大'。
    b,將此 ["質量很高,真的很高","所有收費,屌絲請繞過"]列表的 "所有收費,屌絲請繞過" 刪除。
    c,在 ["質量很高,真的很高","所有收費,屌絲請繞過"]列表中添加"金老闆最喜歡這個"。
    d,將此["質量怎樣不清楚,我的已經不喜歡日韓範了","verygood"]列表的 "verygood"所有變成大寫。

  e,給'大陸' 對應的字典添加一個鍵值對 '1048' :['一天就封了']

    f,刪除此"letmedothistoyou.com": ["可能是自拍,高質量圖片不少","資源很少,更新慢"]鍵值對。

    g,給此["所有免費,真好,好人一輩子平安","服務器在國外,慢"]列表的第一個元素,加上一句話:'能夠爬下來'

 

四、有字符串 "k:1|k1:2|k2:3|k3:4" 處理成字典 {'k':1,'k1':2....}  (升級題)

 

五、元素分類

有以下值li= [11,22,33,44,55,66,77,88,99,90],將全部大於 66 的值保存至字典的第一個key中,將小於 66 的值保存至第二個key的值中。

即: {'k1': 大於66的全部值列表, 'k2': 小於66的全部值列表}

 

六、輸出商品列表,用戶輸入序號,顯示用戶選中的商品(升級題)   

商品列表:

 goods = [{"name": "電腦", "price": 1999},
         {"name": "鼠標", "price": 10},
         {"name": "遊艇", "price": 20},
         {"name": "美女", "price": 998}, ]

 

要求:

1:頁面顯示 序號 + 商品名稱 + 商品價格,如:

       1 電腦 1999

       2 鼠標 10

      …

2:用戶輸入選擇的商品序號,而後打印商品名稱及商品價格

3:若是用戶輸入的商品序號有誤,則提示輸入有誤,並從新輸入。

4:用戶輸入Q或者q,退出程序。

 

 

明日默寫內容。

 

1)字典的增刪改查。

2)過濾敏感字符代碼的默寫。

 

li = ["蒼老師","東京熱","武藤蘭","波多野結衣"]

comment = input('請輸入評論>>>')
for i in li:
    if i in comment:
        comment = comment.replace(i,'*'*len(i))
print(comment)

 

#!/Users/liangyufeng/venv/bin/python3
# _*_ coding:utf-8 _*_

##課上留的做業
# 關於set集合做業: 寫一個彩票開獎(36選7)
##題意理解:從1-36中隨機產生7個不重複的數字做爲開獎數字
from random import randint
nums = set()
#下面是相同的思想,不一樣的代碼堆砌方式
#方法1
while True:
    nums.add(randint(1,36)) #返回1-10之間的一個隨機數,包括10
    if len(nums) == 7:
        break
print(nums)
#方法2
while len(nums) != 7:  # 或者<7
    nums.add(randint(1,36))
print(nums)

#老師講的,其實仍是同樣的思想
while len(nums) < 7:  # 或者<7
    nums.add(randint(1, 36))
print(nums)

'''
for 和 while 的使用場合:
for : 肯定循環範圍或次數的用for. str, list, dic, tuple, set
while: 不肯定循環次數的用 while.(while 能夠無限循環,而 for 必定要給個循環的邊界)

'''

# day5做業及默寫
#
# 1,有以下變量(tu是個元祖),請實現要求的功能
#
tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])
#     a. 講述元祖的特性

        # 元組最大的特性就是元組的不可變: 指的是對內部元素的指向不變,若是內部的元素是可變的數據類型,則照樣是可變的,這個和元組的不可變沒有衝突.

#     b. 請問tu變量中的第一個元素 "alex" 是否可被修改?不能夠
#     c. 請問tu變量中的"k2"對應的值是什麼類型?是否能夠被修改?若是能夠,請在其中添加一個元素 "Seven"
tu[1][2]['k2'].append("Seven")#列表,能夠修改
# d. 請問tu變量中的"k3"對應的值是什麼類型?是否能夠被修改?若是能夠,請在其中添加一個元素 "Seven"
# 元組,不能夠修改


# 2, 字典dic,
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
# a.請循環輸出全部的key
for k in dic:
    print(k)
# b.請循環輸出全部的value
for v in dic.values():
    print(v)
# c. 請循環輸出全部的key和value
for k,v in dic.items():
    print(k,v)
# d. 請在字典中添加一個鍵值對,"k4": "v4",輸出添加後的字典
dic["k4"] = "v4"
# e. 請在修改字典中 "k1" 對應的值爲 "alex",輸出修改後的字典
dic["k1"] = "alex"

# f. 請在k3對應的值中追加一個元素 44,輸出修改後的字典
dic["k3"].append(44)
print(dic)
# g. 請在k3對應的值的第 1 個位置插入個元素 18,輸出修改後的字典
dic["k3"].insert(1,18)
print(dic)


# 3,
av_catalog = {
    "歐美":{
        "www.youporn.com": ["不少免費的,世界最大的","質量通常"],
        "www.pornhub.com": ["不少免費的,也很大","質量比yourporn高點"],
        "letmedothistoyou.com": ["可能是自拍,高質量圖片不少","資源很少,更新慢"],
        "x-art.com":["質量很高,真的很高","所有收費,屌絲請繞過"]
    },
    "日韓":{
        "tokyo-hot":["質量怎樣不清楚,我的已經不喜歡日韓範了","verygood"]
    },
    "大陸":{
        "1024":["所有免費,真好,好人一輩子平安","服務器在國外,慢"]
    }
}
#
# a,給此 ["不少免費的,世界最大的","質量通常"]列表第二個位置插入一個  元素:'量很大'。
av_catalog["歐美"]["www.youporn.com"].insert(2,'量很大')
# b,將此 ["質量很高,真的很高","所有收費,屌絲請繞過"]列表的 "所有收費,屌絲請繞過" 刪除。
av_catalog["歐美"]["x-art.com"].remove("所有收費,屌絲請繞過")
av_catalog["歐美"]["x-art.com"].pop(1)
# c,在此 ["質量很高,真的很高","所有收費,屌絲請繞過"]列表中添加"金老闆最喜歡這個"。
av_catalog["歐美"]["x-art.com"].append("金老闆最喜歡這個")
# d,將此["質量怎樣不清楚,我的已經不喜歡日韓範了","verygood"]列表的 "verygood"所有變成大寫。
av_catalog["日韓"]["tokyo-hot"][1] = av_catalog["日韓"]["tokyo-hot"][1].upper()#字符串不可變,改完以後要塞回去##這裏千萬不要忘記
# e,給'大陸' 對應的字典添加一個鍵值對 '1048' :['一天就封了']
av_catalog["大陸"]["1048"] = ['一天就封了']
# f,刪除此"letmedothistoyou.com": ["可能是自拍,高質量圖片不少","資源很少,更新慢"]鍵值對。
av_catalog["歐美"].pop("letmedothistoyou.com")
del av_catalog["歐美"]["letmedothistoyou.com"]
# g,給此["所有免費,真好,好人一輩子平安","服務器在國外,慢"]列表的第一個元素,加上一句話:'能夠爬下來'
av_catalog["大陸"]["1024"].insert(0,'能夠爬下來')##老師是做爲 insert這樣講的,可是我以爲這裏有歧義,這裏的表述是對第一個元素,而不是對第一個位置


##須要記憶
# 四、有字符串 "k:1|k1:2|k2:3|k3:4" 處理成字典 {'k':1,'k1':2....}  (升級題)
dic = {}
s = "k:1|k1:2|k2:3|k3:4"
for el in s.split('|'):  #['k:1','k1:2','k2:3,'k3:4']
    k, v = el.split(':') #解構   k,v = el[0],el[-1]
    dic[k] = int(v)
print(dic)

#老師的更詳細
s = 'k:1|k1:2|k2:3|k3:4'
lst = s.split('|')
# print(lst)  #['k:1', 'k1:2', 'k2:3', 'k3:4']
dic = {}
for item in lst:
    # print(item) # k:1  k1:2 k2:3 k3:4
    k,v = item.split(':') #['k','1']
    dic[k] = int(v)
print(dic)


##要理解記憶
# 五、元素分類
# 有以下值li= [11,22,33,44,55,66,77,88,99,90],將全部大於 66 的值保存至字典的第一個key中,將小於 66 的值保存至第二個key的值中。
# 即: {'k1': 大於66的全部值列表, 'k2': 小於66的全部值列表}
li= [11,22,33,44,55,66,77,88,99,90]
# 方法一
dic = {'k1': [], 'k2': []} # 這裏直接定義了字典中的全部鍵值對,有一個缺點是若是題目要將值分到更多的鍵值對中要寫不少,很麻煩,無論是本身開始就定義好仍是以後本身手加新的鍵值對
for i in li:
    if i > 66:
        dic['k1'].append(i)
    elif i < 66:
        dic['k2'].append(i)
print(dic)
#
#方法二 利用字典的 get 方法,當鍵不存在時候返回None,是False
dic = {}
for item in li:
    if item > 66:
        if dic.get('key1'):  # key1 存在直接添加元素
            dic['key1'].append(item)
        else:
            dic['key1'] = [item]  # key1不存在建立並添加元素(實際上是建立一個帶元素的列表)
    elif item < 66:
            if dic.get('key2'):  # key2 存在直接添加元素
                dic['key2'].append(item)
            else:
                dic['key2'] = [item]  # key2不存在建立並添加元素

# 方法三 這個方法要記憶 利用 setdefault 方法的查詢和添加功能
dic = {}
for item in li:
    if item > 66:
        #首先判斷 key1是否存在.一開始是不存在的,根據 key1將[]添加到字典中,而後執行查詢操做返回[],再執行 append()
        #第二次走到這裏,直接根據 key1查詢出列表,就執行 append()
        dic.setdefault('key1', []).append(item)
    elif item < 66:
        dic.setdefault('key2', []).append(item)

print(dic)


# 六、輸出商品列表,用戶輸入序號,顯示用戶選中的商品(升級題)
# 商品列表:
# goods = [{"name": "電腦", "price": 1999},
#      {"name": "鼠標", "price": 10},
#      {"name": "遊艇", "price": 20},
#      {"name": "美女", "price": 998}, ]

# 要求:
# 1:頁面顯示 序號 + 商品名稱 + 商品價格,如:
#           1 電腦 1999
#                2 鼠標 10
#
# 2:用戶輸入選擇的商品序號,而後打印商品名稱及商品價格
# 3:若是用戶輸入的商品序號有誤,則提示輸入有誤,並從新輸入。
# 4:用戶輸入Q或者q,退出程序。

#我寫的
goods = [{"name": "電腦", "price": 1999},
     {"name": "鼠標", "price": 10},
     {"name": "遊艇", "price": 20},
     {"name": "美女", "price": 998}, ]
while 1:
    for i in range(len(goods)):
        print('%s %s %s'%(i+1,goods[i]['name'],goods[i]['price']))
    num = input('請輸入要選擇的商品序號(Q退出程序):').strip()
    if num.isdigit():
        num = int(num)
        if num < len(goods):
            print('%s %s'%(goods[num-1]['name'],goods[num-1]['price']))
        else:
            print('商品序號有誤,請從新輸入')
    elif num.upper() == 'Q':
        break
    else:
        print('輸入有誤,請從新輸入')

#老師講解的,想法沒差,就看代碼的具體實現
goods = [{"name": "電腦", "price": 1999},
         {"name": "鼠標", "price": 10},
         {"name": "遊艇", "price": 20},
         {"name": "美女", "price": 998}]

for i in range(len(goods)):
    good = goods[i]  # {"name": "電腦", "price": 1999}
    print(i+1, good['name'], good['price'])


while 1:
    content = input('請輸入你要選擇的商品的序號:')
    if content.upper() == "Q":
        print("結束購物")
        break
    # 判斷若是輸入的不是數字 或者超過了商品的序號範圍
    if not content.isdigit() or int(content) > len(goods) or int(content) <= 0:
        print("對不起, 您輸入的內容有誤. 請從新輸入")
        continue # 從新執行循環
    num = int(content) # 轉換成數字
    # 還原索引
    index = num - 1
    good = goods[index] # 根據索引找到你購買的商品  {"name": "美女", "price": 998}
    print(f"您要購買的商品名稱是{good['name']}, 商品的價格是{good['price']}")




# 明日默寫內容。
#
# 1)字典的增刪改查。
'''
        1. 添加
            dic[新key] = 值

            setdefault(key,value) key不存在,添加鍵值對
        2. 刪除
            pop(key) 刪除指定鍵的鍵值對
            ## dic.popitem() # 隨機刪除一項(如今的版本通常是彈出最後一項)
            ##del dic["李安"]  
            ##dic.clear() # 清空
        3. 修改
            dic[老key] = (新)值
            update() 更新字典(迭代更新,相似於列表的 extend)
        4. 查詢
            dic[key]  ##直接使用key就能夠拿到value
            get(key, 值) ##當key不存在. 返回第二個參數. 默認第二個參數是None
            setdefault(key, value)  key存在,返回對應的 value,key 不存在,先新增,再返回對應的 value
        5. 遍歷
        # 1. 使用for循環直接遍歷字典的key
        # for key in dic:
        #     print(key)
        #     print(dic[key])
        
        # 2. 可使用字典的items()+解構能夠直接獲取到key和value
        # for k, v in dic.items():
        #     print(k)
        #     print(v)
'''

# 2)過濾敏感字符代碼的默寫。

li = ["蒼老師","東京熱","武藤蘭","波多野結衣"]

comment = input('請輸入評論>>>')
for i in li:
    if i in comment:
        comment = comment.replace(i,'*'*len(i))
print(comment)
相關文章
相關標籤/搜索