【问题标题】:How can I use a while loop in python to add values in a list until they exceed a maximum value?如何在 python 中使用 while 循环在列表中添加值,直到它们超过最大值?
【发布时间】:2016-10-11 20:15:01
【问题描述】:

我正在学习python V3,并且在家庭作业中遇到以下问题:

在本练习中,您的函数将接收一个数字列表和一个整数。只要总数小于或等于第二个参数的值,它就会将列表中的值添加到总数中。列表中数字的总和总是大于第二个参数的值。

我想出了以下解决方案:

def while11(nums,maxi):
    i=0
    total=0
    while total<=maxi:
        total+=nums[i]
    return total

测试参数如下:

[1,1,1,1,1,1,1,1,1], 6
[2,2,2,2,2,2,2,2,2], 6
range(10, 1, -1), 25

my 函数分别为前两组参数返回78。但是,它应该为第三组返回27,但它返回30。它似乎添加了11109,而不是1098

【问题讨论】:

标签: python-3.x while-loop range


【解决方案1】:

您在执行计算时需要增加 i。

def while11(nums,maxi):
    i=0
    total=0
    while total<=maxi:
        total+=nums[i]
        i+=1
    return total

您的函数只是获取列表中的第一个值并添加它,直到它大于最大值。您可能没有注意到这一点,因为在前两种情况下,所有值都是相同的。但是,在您的第三种情况下,您有一个由 [10, 9, 8, 7, 6, 5, 4, 3, 2] 组成的列表。这应该是 10 + 9 + 8 + 7... 等直到最大值,但您的函数需要 10 + 10 + 10 + 10 .... 等直到最大值。

【讨论】:

    【解决方案2】:

    您需要在while 循环中更改i 的值:

    def while11(nums,maxi):
        i = 0
        total = 0
        while total <= maxi:
            total += nums[i]
            i += 1
        return total
    

    否则它总是将第一个值添加到total

    【讨论】:

      【解决方案3】:

      您忘记在每次迭代时更新 i 变量。 您继续添加 num[0] 元素

      【讨论】:

        猜你喜欢
        • 2020-02-08
        • 1970-01-01
        • 2018-08-21
        • 2019-03-12
        • 2011-07-08
        • 1970-01-01
        • 1970-01-01
        • 2012-01-27
        • 2020-12-04
        相关资源
        最近更新 更多