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

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】循环嵌套——“百鸡百钱”问题)