snowdream的Python简单循环应用(1)
百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,
用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。
分析:估计现在小学生都能手工推算这套题,只不过我们用计算机来推算,我们可以设公鸡为x,母鸡为y,小鸡为z,那么我们
可以得出如下的不定方程,
x+y+z=100,
5x+3y+z/3=100,
下面再看看x,y,z的取值范围。
由于只有100文钱,则5x<100 => 0<x<20, 同理 0<y<33,那么z<300
由于此处我们不是数学上研究不等式解法,而是让计算机为我们计算结果,所有暂不考虑效率问题。于是,从变量上我们便可以看出可以在三个循环中,逐个选出匹配条件。
针对本题我的解决办法(运用双while循环语句代码如下):
x=0
money=100
a=100
while x<20:
y = 0
while y<33:
y+=1
if 5*x+3*y+(money-x-y)/3==money and x+y+(money-x-y)==a:
print("公鸡有{}只;母鸡有{}只;小鸡有{}只".format(x,y,money-x-y))
x+=1
答案:
公鸡有0只;母鸡有25只;小鸡有75只
公鸡有4只;母鸡有18只;小鸡有78只
公鸡有8只;母鸡有11只;小鸡有81只
公鸡有12只;母鸡有4只;小鸡有84只
解题思路由乘法表所获:
打印乘法表代码如下:
i=1
while i<10:
j=1
while j<=i:
print("{}*{}={}\t".format(j,i,i*j),end="")
j+=1
i+=1
print()
结果:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81