小數據池/is和==/再談編碼做業

# 1,老男孩好聲選秀大賽評委在打分的時候呢, 能夠輸入分數. 假設, 老男孩有10個評委. 讓10個評委進行打分, 要求, 分數必須高於5分, 低於10分.將每一個評委的打分狀況保存在列表中.
pingwei = ['alex', 'wusir', '麻花藤', '東風扇', '西風扇', '寶寶', '太白', '日天', '女神', '老弟']
#方法一:將分數添加到一個新列表中
score = []
for el in pingwei:
    while 1:
        uscore = input(f'{el}請打分(5~10):').strip()
        if uscore.isdigit():
            uscore = int(uscore)
            if 5 < uscore < 10:
                score.append(uscore)
                break  # 跳出 while 循環
            else:
                print('分數必須高於5分, 低於10分,請從新輸入')
                continue  # 繼續讓當前的評委打分
        else:
            print('輸入不合法,請從新輸入')

print(score)
#方法二:將分數直接拼接到評委的名字後面
for i in range(len(pingwei)):
    while 1:
        uscore = input(f'{pingwei[i]}請打分(5~10):').strip()
        if uscore.isdigit():
            uscore = int(uscore)
            if 5 < uscore < 10:
                pingwei[i] += f'-{str(uscore)}分'  # ['alex-6分','wusir-7分', '麻花藤-8分', '東風扇', ...]
                break  # 跳出 while 循環
            else:
                print('分數必須高於5分, 低於10分,請從新輸入')
                continue  # 繼續讓當前的評委打分
        else:
            print('輸入不合法,請從新輸入')

print(pingwei)





# 2.念數字.  給出一個字典. 在字典中標識出每一個數字的發音. 包括相關符號. 而後由用戶輸入一個數字. 讓程序讀出相對應的發音(不須要語音輸出. 單純的打印便可)

dic = {'-':'fu','0':'ling','1':'yi','2':'er','3':'san','4':'si','5':'wu','6':'liu','7':'qi','8':'ba','9':'jiu','.':'dian'}
num = input('請輸入一個數:')
for k in num:
    print(dic[k], end=' ')


# 3.車牌區域劃分, 現給出如下車牌. 根據車牌的信息, 分析出各省的車牌持有量.
#題意:判斷 cars 列表中不一樣省份(簡稱)的車牌數量分別是多少,並以 省份名:車牌數量 的形式添加到字典中,並輸出.
#方法一:使用get(也是老師講解的方法,推薦使用的)
cars = ["魯A32444", "魯B12333", "京B8989M", "黑C49678", "黑C46555", "滬B25041"]
locals = {'': "上海", "": "黑龍江", "": "山東", "": "湖北", "": "湖南", "": "北京"}
dic = {}  # {"山東":2,"北京":1,...}
for el in cars:
    city = locals[el[0]]
    if dic.get(city):  # "魯"-->"山東" 城市已經存在,數量加1
        dic[city] += 1
    else:
        dic[city] = 1
print(dic)

# 方法二:使用setdefault (有坑,慎用!-->本身寫的)
cars = ["魯A32444", "魯B12333", "京B8989M", "黑C49678", "黑C46555", "滬B25041"]
locals = {'': "上海", "": "黑龍江", "": "山東", "": "湖北", "": "湖南", "": "北京"}
dic = {}  # {"山東":2,"北京":1,...}
for el in cars:
    city = locals[el[0]]
    dic[city] = dic.setdefault(city, 0) + 1 #使用setdefault省略了判斷key是否存在的過程,由於這個方法自己會先判斷key是否存在而進行一系列的操做
print(dic)

'''
分析:剛開始上面的 dic[city] = dic.setdefault(city, 0) + 1 我使用的是 dic.setdefault(city, 0) += 1 ,會報錯(壓根就不能寫上,直接紅線)爲何會報錯?
    dic.setdefault(city, 0) += 1 等價於
    dic.setdefault(city, 0) = dic.setdefault(city, 0) + 1 #左右兩端都是肯定的數值,不能進行賦值操做
    賦值操做的左邊必定要是個變量,只有對變量才能賦值,而這裏dic.setdefault(city, 0)獲得的是個肯定的數值,就至關於2=2+1這是不容許的.而使用 dic[city] 
也是拿到了city的對應的值,仍是個變量,比較好
''' # 4.幹掉主播. 現有以下主播收益信息, 按照要求, 完成相應操做: zhubo = {'盧本偉': 122000, '馮提莫': 18999, '金老闆': 99999, '吳老闆': 25000000, 'alex': 126} # 1.計算平均值 sum = 0 for v in zhubo.values(): sum += v average = sum/len(zhubo) print(average) # 2.幹掉收益小於平均值的主播 #注意:字典不能在本身循環遍歷的時候新增或者刪除本身的元素,可是能夠在別人遍歷的時候刪除 sum = 0 dic_del_list = [] # 暫時保存要刪除的元素的key for k, v in zhubo.items(): sum += v #總分 if v < sum/len(zhubo): #平均分 dic_del_list.append(k) #將小於平均分的 key 加入要刪除的列表 for el in dic_del_list: del zhubo[el] # zhubo.pop(el) # 這倆都能刪除 print(zhubo) #幹掉盧本偉 del zhubo['盧本偉'] # zhubo.pop('盧本偉') # 這倆都能刪除 print(zhubo) """ # 今日默寫: # 1, == 和is的區別 is 比較的是內存地址 == 比較的是內容 當兩個變量指向同一個對象的時候. is是True, ==也是True # 2, gbk,utf-8的轉化。 s = "我今天很是的困" # 編碼 bs = s.encode('utf-8') # utf-8 的bytes # 解碼 s = bs.decode('utf-8') # print(s) # # 編碼 bss = s.encode("gbk") # gbk 的bytes # print(bss) """
# 1,老男孩好聲選秀大賽評委在打分的時候呢, 能夠輸入分數. 假設, 老男孩有10個評委.
# 讓10個評委進行打分, 要求, 分數必須高於5分, 低於10分.
# 將每一個評委的打分狀況保存在列表中.


pingwei = ['alex', 'wusir', '麻花藤', '東風扇','西風扇','寶寶','太白','日天','女神','老弟']

lst = []

index = 0
while index < len(pingwei):
    content = input("請%s評委打分" % pingwei[index])
    if content.isdigit():
        fen = int(content)
        if fen >= 5 and fen <= 10:  # 正確的分數
            lst.append(fen)
            index += 1 # 向後走一我的
        else: # 分數是錯誤的. 從新打分
            print("對不起, 您的分數有問題. 請從新打分.")
    else:
        print("輸入的有問題. 請從新打分")
print(lst)


# 2.念數字.  給出一個字典. 在字典中標識出每一個數字的發音.
# 包括相關符號. 而後由用戶輸入一個數字.
# 讓程序讀出相對應的發音(不須要語音輸出. 單純的打印便可)

dic = {
    '-':'fu',
    '0':'ling',
    '1':'yi',
    '2':'er',
    '3':'san',
    '4':'si',
    '5':'wu',
    '6':'liu',
    '7':'qi',
    '8':'ba',
    '9':'jiu',
    '.':'dian'
}

content = input("請輸入數字:")  # 123
# 獲取到字符串中的每個字符
for c in content:
    print(dic[c], end=" ")


# 3. 車牌區域劃分, 現給出如下車牌. 根據車牌的信息, 分析出各省的車牌持有量.
cars = ['魯A32444','魯B12333','京B8989M','黑C49678','黑C46555','滬B25041', "吉H12345"]
locals = {'': '上海', '': "北京", '': '黑龍江', '': '山東', '': '湖北', '': '湖南', "":"吉林"}

result = {}

# 1. 獲取導每個車牌子
for car in cars:  # '魯A32444 魯B12333'
    # 車牌 簡稱
    jian = car[0] # '魯'
    # 省份
    prov = locals[jian] # '山東'

    if result.get(prov): # 已經出現過該車牌
        result[prov] += 1 # result[prov] = result[prov] + 1

    else: # 當前車牌還沒出現過
        result[prov] = 1

print(result)


# 4.幹掉主播. 現有以下主播收益信息, 按照要求, 完成相應操做:
zhubo = {'盧本偉':122000, '馮提莫':189999, '金老闆': 99999, '吳老闆': 25000000, 'alex': 126}
print(list(zhubo))
# 平均收益
sum = 0
for v in zhubo.values():
    sum += v

avg = sum / len(zhubo) # 平均收益  500W
# print(avg)

# 2. 幹掉收益小於平均值的主播.
# 錯的
# for k, v in zhubo.items():
#     if v < avg:
#         zhubo.pop(k) # dictionary changed size during iteration


# 解決. 把要刪除的主播找到. 放在一個列表中
lst = ['盧本偉', "馮提莫", '金老闆', 'alex'] # 準備要刪除的主播
for k, v in zhubo.items():  # '盧本偉':122000
    if v < avg:  # 收益小於平均值的主播
        lst.append(k)

# 循環這個列表. 刪除主播
for el in lst: # el就是你剛纔保存的key
    zhubo.pop(el)

print(zhubo)

# 3. 幹掉盧本偉
zhubo.pop("盧本偉")
print(zhubo)
View Code
相關文章
相關標籤/搜索