百鸡问题是一个数学问题,出自中国古代约5—6世纪成书的《张邱建算经》,是原书卷下第38题,也是全书的最后一题。该问题导致三元不定方程组,其重要之处在于开创“一问多答”的先例。
题:今有鸡翁一,值钱伍;鸡母一,值钱三;鸡鶵三,值钱一。
问:凡百钱买鸡百只,问鸡翁、母、鶵各几何?
解:x+y+z=100;5x+3y+z/3=100
代码实现:
1、使用while嵌套循环。注意变量初值设置,以及循环条件。

#coding=utf-8 chickNum=[['公鸡','母鸡','小鸡']] #公鸡5元一只,数量x不大于20 x=0 while x<=20 : # 母鸡3元一只,数量y不大于30 y=0 while y<=30 : # 共买100只鸡 z=100-x-y # 小鸡数量z为3的整数,且5x+3y+z/3=100 if z%3==0 and 5*x+3*y+z/3==100 : # 将符合条件的答案添加到列表 chickNum.append([x,y,z]) y+=1 x+=1 #打印解题结果 print('\'百元买百鸡\'共有%d种方案:'%(len(chickNum)-1)) print() for i in chickNum : for j in i : print(j,end='\t') print()
2、使用for循环。更简洁、明了。

#coding=utf-8 chickNum=[['公鸡','母鸡','小鸡']] #公鸡5元一只,数量x不大于20 for x in range(0,20) : # 母鸡3元一只,数量y不大于30 for y in range(0,30) : # 共买100只鸡 z=100-x-y # 小鸡数量z为3的整数,且5x+3y+z/3=100 if z%3==0 and 5*x+3*y+z/3==100 : # 将符合条件的答案添加到列表 chickNum.append([x,y,z]) #打印解题结果 print('\'百元买百鸡\'共有%d种方案:'%(len(chickNum)-1)) print() for i in chickNum : for j in i : print(j,end='\t') print()