日更成长营自学编程Python

自学Python:求解马克思的数学问题

2021-12-01  本文已影响0人  小强聊成长

马克思手稿中有一道趣味数学问题:有30个人,其中有男人、女人和小孩,他们在同一家饭馆吃饭,总共花了50先令。已知每个男人吃饭需要花3先令,每个女人吃饭需要花2先令,每个小孩吃饭需要花1先令,请编程求出男人、女人和小孩各有几人。

问题可以用下面的方程式代替,男人X,女人Y,小孩Z。

X+Y+Z=30 

3X+2Y+Z=50

下面直接上代码:

########################

if __name__=="__main__":

    # 变量x、y和z分别代表男人、女人和小孩

    print("    男人  女人  小孩 ")

    number = 0    # 可能的值的组数

    # 将变量x的可能取值依次代入方程组

    for x in range(0, 10+1):

        y = 20 - 2*x    # 方程③,当x一定时,可确定y值

        # 方程①,当x、y一定时,可确定z值

        z = 30 -x-y

        # 代入方程②检验,当前获得的x、y、z是否为不定方程组的一组解

        if 3*x + 2*y + z == 50:

            number += 1

            print("%2d:%4d%5d%6d" % (number, x,y, z))

########################

执行结果如下:
男人 女人 小孩

1:  0  20    10

2:  1  18    11

3:  2  16    12

4:  3  14    13

5:  4  12    14

6:  5  10    15

7:  6    8    16

8:  7    6    17

9:  8    4    18

10:  9    2    19

11:  10    0    20

共有11种结果,你猜对了几种?

当然你也可以用下面这种FOR循环的方法:

for x in range(30):

    for y in range(30):

        for z in range(30):

            if x+y+z==30 and 3*x+2*y+z==50:

                print(x,y,z)

执行结果一样。

________________END______________

上一篇 下一篇

猜你喜欢

热点阅读