Lyf凤

靡不有初,鲜克有终

扩大
缩小

小数据池/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

 

posted on 2019-07-08 11:31  Lyf凤  阅读(308)  评论(0编辑  收藏  举报

导航

levels of contents