我正在尝试编写一个函数,该函数对列表中第一个偶数除外的所有数字求和。当遇到第一个偶数时,我想到了一个中断函数退出循环,但我无法设法构建它。我需要帮助。感谢。
例如:
数字= [4,6,7,8,9,10] totsum必须是6 + 7 + 8 + 9 + 10 = 40(跳过第一个偶数'4')
这是我不完整的代码:
nmbrs = [4, 6, 7, 8, 9, 10]
def totsum_effen(n):
#sum the total numbers except for the first even number
while True:
sum = 0
for i in nmbrs:
if i % 2 == 0:
break
sum = sum + i
return (sum)
答案 0 :(得分:4)
我只需将其全部加起来并减去第一个偶数(如果存在)。
>>> numbers = [4, 6, 7, 8, 9, 10]
>>> sum(numbers) - next((x for x in numbers if x % 2 == 0), 0)
40
答案 1 :(得分:3)
你可以做的只是对数组求和并减去第一个偶数
nmbrs = [4, 6, 7, 8, 9, 10]
def totsum_effen(nmbrs):
#sum the total numbers except for the first even number
even_nmbrs = [num for num in nmbrs if num % 2 == 0]
temp_sum = sum(nmbrs)
if len(even_nmbrs) > 0:
temp_sum -= even_nmbrs[0]
return temp_sum
答案 2 :(得分:2)
试试这个;
nmbrs = [4, 6, 7, 8, 9, 10]
def totsum_effem():
nmbrs_copy = nmbrs.copy()
for index, num in enumerate(nmbrs):
if num % 2 == 0:
del nmbrs_copy[index]
break
return sum(nmbrs_copy)
>>> print(totsum_effem())
40
答案 3 :(得分:1)
这是另一个pythonic one liner(仅限python3.x):
In [36]: sum(num) - next(filter(lambda x: not x % 2, num + [0]))
Out[36]: 40
答案 4 :(得分:0)
您的代码无法在第一个偶数之前添加奇数。 通过这种方式,您可以进行检查,一旦出现第一个偶数,就跳过该循环并继续循环。
{{1}}
答案 5 :(得分:0)
使用更复杂的代码可以更有效地完成您想要实现的目标,但这需要深入了解Python。我在初学者中重新编写代码,易于理解Python,并解释代码中的一些错误以及很少需要注意的事项。如果你能理解它,请告诉我。
#sum the total numbers except for the first even number (1)
def totsum_effen(n): #(2)
sum = 0 #(3)
ignore_first_even = True #(4)
for i in n:
if(i % 2 == 0 and ignore_first_even): #(5)
ignore_first_even = False
continue
sum = sum + i
return (sum)
print(totsum_effen(nmbrs))
n
。传递要在函数中使用的参数,并参考这些参数。ignore_first_even
忽略第一个偶数,方法是使用ignore_first_even
4 {/ 1}}中的if
ignore_first_even
为真,那么我们将ignore_first_even
设置为false。请注意,ignore_first_even
永远不能再次设置为true,这样我们只会忽略第一个偶数。然后我们continue
进行下一次迭代,而不将此数字添加到我们的sum
答案 6 :(得分:0)
首先,您可以尝试使用continue,而不是使用break。它只是跳过当前迭代循环中的其余代码并跳转到下一次迭代。
其次,使用count变量检查列表中的第一个偶数。
请检查以下代码。这只是上述事情的实现。
nmbrs = [4, 6, 7, 8, 9, 10]
def totsum_effen(nmbrs) :
sum = 0
count = 0
for i in nmbrs :
if i%2==0 and count==0 :
count = count + 1
continue
sum = sum + i
return sum
print('Printing the sum of all the numbers in the list except the 1st even number....')
print(totsum_effen(nmbrs))
答案 7 :(得分:-2)
def totsum_effen(n):
#sum the total numbers except for the first even number
sum = 0
flag = False
for val in nmbrs:
if not flag:
if val % 2 == 0:
flag = True
else:
sum += val
else:
sum = sum + val
return (sum)
nmbrs = [4, 6, 7, 8, 9, 10]