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

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

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

 

代码如下:

复制代码
# 第一步将气球按颜色分组,汇总
#第二部,遍历每一个字典的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   一个痴迷于技术的码农  阅读(677)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示