# 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