美文网首页Python
【python实例练习1】循环嵌套——“百鸡百钱”问题

【python实例练习1】循环嵌套——“百鸡百钱”问题

作者: 兔子先生_小灰灰 | 来源:发表于2021-03-08 22:10 被阅读0次
    while<条件>:
        <语句块>
    

      无限循环又称为条件循环,好处是不需要提前确定循环次数,跟for<>in<>:循环一样也存在使用保留字else的扩展模式,这个else与异常处理中的else类似,可以看作是程序正常执行的“奖励”。下面介绍两个常见的循环嵌套实例:

    百鸡百钱问题

      中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱百鸡问题”:
      一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只?
    将其中的公鸡,母鸡和小鸡用未知数GJ,MJ,XJ代替,可以得出下面约束条件:
    GJ+MJ+XJ=100
    5GJ+3MJ+XJ/3=100
    GJ<=100/5
    MJ<=100/3
    Xj<=100
    解这个三元一次方程组可以用穷举法来完成

    Process on流程图
    GJ=0
    while GJ<=20:
        MJ=0
        while MJ<=33:
            XJ=0
            while XJ<=100:
                if(5*GJ+3*MJ+XJ/3)==100 and (GJ+MJ+XJ)==100:
                    print("公鸡=%d,母鸡=%d,小鸡=%d"%(GJ,MJ,XJ))           
                XJ+=1
            MJ+=1
        GJ+=1
    

    最后运行结果:


    image

      其实公鸡和母鸡的数量确定后可以直接求出小鸡数量,这样就可以少最里层的循环,减少了穷举次数。优化代码如下:

    GJ=0
    while GJ<=20:
        MJ=0
        while MJ<=33:
             #公鸡和母鸡数量确定后可以求出小鸡数量,这样就少一层循环
            XJ=100-GJ-MJ
            if(5*GJ+3*MJ+XJ/3)==100 :
                    print("公鸡=%d,母鸡=%d,小鸡=%d"%(GJ,MJ,XJ))           
            MJ+=1
        GJ+=1
    

    相关文章

      网友评论

        本文标题:【python实例练习1】循环嵌套——“百鸡百钱”问题

        本文链接:https://www.haomeiwen.com/subject/xbymqltx.html