Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我试图解决codingbat.com中的一个问题,问题名称是;幸运之和;_Python_Python 3.x_Algorithm - Fatal编程技术网

Python 我试图解决codingbat.com中的一个问题,问题名称是;幸运之和;

Python 我试图解决codingbat.com中的一个问题,问题名称是;幸运之和;,python,python-3.x,algorithm,Python,Python 3.x,Algorithm,给定3个int值,abc,返回它们的总和。但是,如果其中一个值为13,则该值不计入总和,且其右侧的值不计入。例如,如果b是13,那么b和c都不计算在内。例如: lucky_sum(1, 2, 3) → 6 lucky_sum(1, 2, 13) → 3 lucky_sum(1, 13, 3) → 1 lucky_sum(1, 13, 13) → 1 下面是我的解决方案。我不明白我的代码出了什么问题 def lucky_sum(a, b, c): list1 = [a, b, c]

给定3个
int
值,
abc
,返回它们的总和。但是,如果其中一个值为
13
,则该值不计入
总和
,且其右侧的
值不计入。例如,如果
b
13
,那么
b
c
都不计算在内。例如:

lucky_sum(1, 2, 3) → 6

lucky_sum(1, 2, 13) → 3

lucky_sum(1, 13, 3) → 1

lucky_sum(1, 13, 13) → 1
下面是我的解决方案。我不明白我的代码出了什么问题

def lucky_sum(a, b, c):
    list1 = [a, b, c]
    list2 = []
    for x in list1:
        if x is not 13:
            list2.append(x)
    return sum(list2)

您将在13之后返回值。如果达到13,则应跳出循环并返回总和。

您的解决方案正确地忽略了数字中的13,但代码不遵守“…及其右侧的值不计算”的第二个要求。一旦你找到一个13,试着打破循环

编辑

顺便说一句,最具Python风格的解决方案是:

from itertools import takewhile
def lucky_sum(*args):
    return sum(takewhile(lambda x: x != 13, args))

可以使用任意数量的参数,并且非常容易理解。

您的代码以您的方式修复:

def lucky_sum(a, b, c):
    list1 = [a, b, c]
    list2 = []
    for x in list1:
        if x is not 13:
            list2.append(x)
        else:
            break
    return sum(list2)
以下是我对这个问题的回答:
def lucky_sum(a,b,c):
总计=a、b、c
新列表=[]
我总共:
如果i==13:
打破
其他:
新列表。附加(i)
返回金额(新列表)

不是你问题的一部分,但如果13不在列表1中,我会做[sum(列表1)否则sum(列表1[:list1.index(13)]]