这个是一位隐秘人物让我做的一道题(如标题),我也分享出来了。

首先是成品展示(暂时没有做成可视化界面的样子):

我做的是把所有的气球录入进来,然后利用基础数据结构(字典,数据等)排序等,由于我是初学,也只是做成这样;但是基本功能实现了。

 

代码如下:

# 第一步将气球按颜色分组,汇总
#第二部,遍历每一个字典的KEY取一个值,也就是将VALUE减一。
# 直到只剩下一个key的值大于0时,判断这个剩下的的key中的值是否大于1,如果大于抛出异常
dict={}
str='退出'
def aaa(a,dict):
    color=a
    count=1
    #判断是否之前记录过这个颜色,如果记录过加一,没有记录过初始化为1
    if dict.get(a,-1)==-1:
        dict[a]=count
    else:
        dict[a]=dict[a]+1
def bbb(dict,listKey):
    for x in listKey:
        listLen = list(dict)
        print(listLen)
        print(listLen.__len__())
        if (listLen.__len__() == 1):
            break
        dict[x]=dict[x]-1
        if(dict[x]==0):
            dict.pop(x)
            listKey.remove(x)
while True:
    a=input("请输入气球颜色:")
    if a==str:
        print(dict)
        break
    aaa(a, dict)
#由于字典key为不可变,所以拿出来放入list来遍历
listKey=list(dict)
while True:
    print(dict)
    print(listKey)
    if listKey.__len__()==1:
        break
    bbb(dict,listKey)
#有两种方法:(一)可以通过print直接告知实现不了,并返回解决方法
#(二)利用下标越界,抛出异常
#这个也可以抽成一个方法
for x in dict.keys():
    if dict.get(x)>1:
        b=dict.get(x)-1
        print(b)
        #第一种这里可以告知,也可以通过下标越界来获取异常比如:获取第二个key时报异常
        print("不能实现该种情况,多了%s的气球%d个"%(x,b))
        #第二种
        finaList=list(dict)
        print(dict)
        print(finaList)
        try:
            finaList.get(1)
        except:
            print("不能实现该种情况")

 

 

posted on 2020-05-05 22:29  一个痴迷于技术的码农  阅读(662)  评论(0编辑  收藏  举报