创建一个函数来计算列表的奇数和偶数之和并将结果存储在元组中
Create a function that calculate the sum of odd and even values of a list and store the result within a tuple
我正在尝试解决这个功能。
我必须用这个列表的偶数和奇数的总和创建一个元组。
所以输出应该是 (9,12) 但我的函数不起作用。
我必须使用函数
number_list = [1, 2, 3, 4, 5, 6]
def calculate_odd_even(odd_number, even_number):
odd_number = 0
even_number = 0
t1 = tuple()
for i in number_list:
if i % 2 == 0:
even_number = even_number + number_list[i]
t1.append(i)
else:
odd_number = odd_number + number_list[i]
t1.append(i)
return odd_number
return even_number
my_tuple = calculate_odd_even(odd_number, even_number)
您需要对代码进行一些更改:
在这种情况下不需要函数参数。
def calculate_odd_even(odd_number, even_number)
:
- +
def calculate_odd_even()
:
你遍历列表的元素,而不是indices.So没有必要使用number_list[i]
,只需i
就可以了
工作。
even_number = even_number + number_list[i]
odd_number = odd_number + number_list[i]
even_number = even_number + i
odd_number = odd_number + i
第二个 retrun
不会到达 ever.So 相反,return 一个元组。
-
return odd_number
retrun even_number # Wont be reached
return (odd_number, even_number) # currect way
最终代码
number_list = [1, 2, 3, 4, 5, 6]
def calculate_odd_even():
odd_number = 0
even_number = 0
for i in number_list:
if i % 2 == 0:
even_number = even_number + i
else:
odd_number = odd_number + i
return (odd_number, even_number)
my_tuple = calculate_odd_even()
print(my_tuple) # prints (9, 12)
def Cal_sum(list):
odd,even=0,0
for i in list:
if i%2==0:
even+=i
else:
odd+=i
return odd,even
number_list = [1, 2, 3, 4, 5, 6]
tuple_value=tuple(Cal_sum(number_list))
print(tuple_value)
一般的想法是好的,那就是你浏览列表看看数字本身是否是偶数(如果 %2 == 0)然后将它添加到一个或另一个组中。
尽管在 python 中有很多事情根本无法以这种方式工作。
calculate_odd_even(odd_number, even_number):
您希望作为参数传递给函数的值是数字列表。在这里使用 odd_number 和 even_number 尤其没用,因为您在下一行直接将它们设置为 0。因此,传递给函数的任何值都将被删除。
t1 = tuple()
您似乎想将号码添加到此处的列表中。但是 a) 元组是 immutable 所以向它们添加东西根本不起作用 b) 即使你用 [] 或 list() 替换它你仍然是剩下一个列表,但你想要一个总和。所以你最后还是需要取sum(t1)。
下一个:
for i in number_list:
遍历列表的元素,因此在第一次迭代中 i
将是 1,然后是 2,依此类推。所以它是 NOT 您在这一行中使用它的方式的索引:
even_number = even_number + number_list[i]
那么让我们看一下循环的第一次迭代。在那种情况下,我将是 1。这将触发 else
路径(1%2=1 不等于 0)。然后您将尝试附加 odd_number+number_list[i]
。您附加的值(如果可能的话)将是 0+2 = 2。为什么是 2?因为 i=1 因此,当您开始计数 0 时,您会在 number_list 中取第二个值。因此,即使所有这些都有效,您也会从您的列表中获取完全相反的数字,并且它会崩溃的最后一个数字,因为长度为 6 的列表没有索引 6(再次从 0 开始计数)。
再说一次,即使那会奏效,odd_number+number_list[i]
基本上只会将 number_list
中的下一个数字添加到新的数字列表中。更不用说 odd_number
部分是多余的,因为它是 0 并且保持原样。
最后但并非最不重要的一点是 return 语句存在于函数中,因此在 return 语句之后发生的任何事情都将被忽略。因此,您的第二个 return 语句被视为不存在。对你来说幸运的是,你不必对元组中的 return 2 个值做任何麻烦,只需使用:
return [valueA] [valueB]
到 return 元组中的 2 个值。所以例如 return 2, 3
会 return (2,3)
.
尽管您一开始就可以使这一切变得容易得多:
number_list = [1, 2, 3, 4, 5, 6]
def calculate_odd_even(num_list):
odd_number = 0
even_number= 0
for i in num_list:
if i%2 ==0:
even_number = even_number + i
else:
odd_number = odd_number + i
return even_number, odd_number
my_tuple = calculate_odd_even(number_list)
我正在尝试解决这个功能。 我必须用这个列表的偶数和奇数的总和创建一个元组。 所以输出应该是 (9,12) 但我的函数不起作用。 我必须使用函数
number_list = [1, 2, 3, 4, 5, 6]
def calculate_odd_even(odd_number, even_number):
odd_number = 0
even_number = 0
t1 = tuple()
for i in number_list:
if i % 2 == 0:
even_number = even_number + number_list[i]
t1.append(i)
else:
odd_number = odd_number + number_list[i]
t1.append(i)
return odd_number
return even_number
my_tuple = calculate_odd_even(odd_number, even_number)
您需要对代码进行一些更改:
在这种情况下不需要函数参数。
:def calculate_odd_even(odd_number, even_number)
- +
def calculate_odd_even()
:
你遍历列表的元素,而不是indices.So没有必要使用
number_list[i]
,只需i
就可以了 工作。even_number = even_number + number_list[i]
odd_number = odd_number + number_list[i]
even_number = even_number + i
odd_number = odd_number + i
第二个
retrun
不会到达 ever.So 相反,return 一个元组。
-
return odd_number retrun even_number # Wont be reached
return (odd_number, even_number) # currect way
最终代码
number_list = [1, 2, 3, 4, 5, 6]
def calculate_odd_even():
odd_number = 0
even_number = 0
for i in number_list:
if i % 2 == 0:
even_number = even_number + i
else:
odd_number = odd_number + i
return (odd_number, even_number)
my_tuple = calculate_odd_even()
print(my_tuple) # prints (9, 12)
def Cal_sum(list):
odd,even=0,0
for i in list:
if i%2==0:
even+=i
else:
odd+=i
return odd,even
number_list = [1, 2, 3, 4, 5, 6]
tuple_value=tuple(Cal_sum(number_list))
print(tuple_value)
一般的想法是好的,那就是你浏览列表看看数字本身是否是偶数(如果 %2 == 0)然后将它添加到一个或另一个组中。
尽管在 python 中有很多事情根本无法以这种方式工作。
calculate_odd_even(odd_number, even_number):
您希望作为参数传递给函数的值是数字列表。在这里使用 odd_number 和 even_number 尤其没用,因为您在下一行直接将它们设置为 0。因此,传递给函数的任何值都将被删除。
t1 = tuple()
您似乎想将号码添加到此处的列表中。但是 a) 元组是 immutable 所以向它们添加东西根本不起作用 b) 即使你用 [] 或 list() 替换它你仍然是剩下一个列表,但你想要一个总和。所以你最后还是需要取sum(t1)。
下一个:
for i in number_list:
遍历列表的元素,因此在第一次迭代中 i
将是 1,然后是 2,依此类推。所以它是 NOT 您在这一行中使用它的方式的索引:
even_number = even_number + number_list[i]
那么让我们看一下循环的第一次迭代。在那种情况下,我将是 1。这将触发 else
路径(1%2=1 不等于 0)。然后您将尝试附加 odd_number+number_list[i]
。您附加的值(如果可能的话)将是 0+2 = 2。为什么是 2?因为 i=1 因此,当您开始计数 0 时,您会在 number_list 中取第二个值。因此,即使所有这些都有效,您也会从您的列表中获取完全相反的数字,并且它会崩溃的最后一个数字,因为长度为 6 的列表没有索引 6(再次从 0 开始计数)。
再说一次,即使那会奏效,odd_number+number_list[i]
基本上只会将 number_list
中的下一个数字添加到新的数字列表中。更不用说 odd_number
部分是多余的,因为它是 0 并且保持原样。
最后但并非最不重要的一点是 return 语句存在于函数中,因此在 return 语句之后发生的任何事情都将被忽略。因此,您的第二个 return 语句被视为不存在。对你来说幸运的是,你不必对元组中的 return 2 个值做任何麻烦,只需使用:
return [valueA] [valueB]
到 return 元组中的 2 个值。所以例如 return 2, 3
会 return (2,3)
.
尽管您一开始就可以使这一切变得容易得多:
number_list = [1, 2, 3, 4, 5, 6]
def calculate_odd_even(num_list):
odd_number = 0
even_number= 0
for i in num_list:
if i%2 ==0:
even_number = even_number + i
else:
odd_number = odd_number + i
return even_number, odd_number
my_tuple = calculate_odd_even(number_list)