这个是一位隐秘人物让我做的一道题(如标题),我也分享出来了。
首先是成品展示(暂时没有做成可视化界面的样子):
我做的是把所有的气球录入进来,然后利用基础数据结构(字典,数据等)排序等,由于我是初学,也只是做成这样;但是基本功能实现了。
代码如下:
# 第一步将气球按颜色分组,汇总 #第二部,遍历每一个字典的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("不能实现该种情况")