Python3基础练习 - 利用嵌套循环进行数学计算

题目:

电动牙刷:85 元,漱口水:55 元,水杯:40 元。把 500 元的购物卡正好全部花光,有哪些购买组合呢?


解题思路

以python3为例进行解析,python的书写格式更简洁,便于理解

方法确定

根据题目,我们可以使用循环迭代的方法进行解答,从而找出合适的组合

python3中常用的方法是 for 循环
常用于 for i in range()

语法如下:

range(stop)
range(start, stop[, step])

start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

这里以for循环为例进行解答
但是我们需要得知这个循环的范围,那该如何获得这个范围值呢?
我们可以先从最极端的情况入手,当只购买其中某一样的时候,是否可以满足这个条件:

  • 500/40=12.5
  • 500/55=9.0909....
  • 500/85=5.88....

我们可以看出,当单购买某一样商品时,个数最多不会超过购物卡总额数/单价数的值的整数
即,range方法中 : stop=购物卡总额数/单价数+1

for 嵌套循环

嵌套:一条语句中里还有另一条语句。嵌套循环:一个循环出现在另外一个循环里。当外循环每次循环,内循环都要完成它的循环。

这里使用for循环在于,for循环是在序列穷尽时停止,while循环是在条件不成立时停止

根据题意,我们有三个可选商品,所以需要进行三个for循环的嵌套

在该题目解题方法中,嵌套循环可以不去考虑输入值的顺序,可随意打乱顺序,进行数据输入

for i in range(a):
    for j in range(b):
        for k in range(c):

题目中最后需要我们给出组合,那我们可以进行写一个返回组合数目的方法
且判断条件为一个等式条件

方法如下:

def method(price1,price2,price3,total):
    num=0
    for i in range(total//price1+1):
        for j in range(total//price2+1):
            for k in range(total//price3+1):
                if i*price1+j*price2+k*price3==tatal:
                    num=num+1
                    print("price1name:{}price2name:{}price3name{}".format(i,j,k))

    return num
posted @ 2022-06-28 16:32  希望能摸鱼的凛耶酱  阅读(155)  评论(0)    收藏  举报