PythonStudy_‘百元买百鸡’代码


  百鸡问题是一个数学问题,出自中国古代约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()
View Code

  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()
View Code

 

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM