为什么偶数和奇数不会打印真正的答案?

时间:2014-07-09 16:26:12

标签: python list loops

我正在编写一个程序,我想创建一个列表,如果需要可能两个。十个偶数和奇数随机数(1,100),各自的总和,[偶数]和[奇数]。我尝试过很多方法,但希望尽可能简单。我只是有点沮丧。我将包括我现在拥有的东西,也许有人可以插入一些有用的东西。我现在只有基础知识,因为看到我以前的东西很困惑。

import random


def main():
    total_odd = 0
    total_even = 0
    num_list = []

    for count in range(10):
        num = random.randint(1, 100)
        num_list.append(num)
        total_odd += num 
        total_even += num 

    print(total_odd, total_even)
    print(num_list)



main()

输出=

>>> 
485 485
[76, 76, 74, 2, 9, 30, 30, 29, 66, 93]
>>> 

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

您永远不会检查random.randint生成的数字是奇数还是偶数。您只是在两个案例中将num添加到total_oddtotal_even。在for循环中加入支票:

for count in range(10):
    num = random.randint(1, 100)
    num_list.append(num)
    if num%2 == 0: # num is even      
        total_even += num 
    else: # num is odd
        total_odd += num 

答案 1 :(得分:0)

>>> values = [76, 76, 74, 2, 9, 30, 30, 29, 66, 93]
>>> sum_odd = sum(x for x in values if x%2)
>>> sum_even = sum(values) - sum_odd
>>> print sum_odd,sum_even
131 354

可能是最简单的方法......

答案 2 :(得分:0)

最简单的方法可能是在您有足够的数字符合条件之前继续生成数字:

import random


def check_even(num):
    return num % 2 == 0


def check_odd(num):
    return num % 2 != 0


def get_numbers(checker):
    num_list = []
    count = 0
    while count < 10:
        num = random.randint(1, 100)
        if checker(num):
            num_list.append(num)
            count += 1
    return num_list


def main():
    even_numbers = get_numbers(check_even)
    odd_numbers = get_numbers(check_odd)
    num_list = []
    num_list.extend(even_numbers)
    num_list.extend(odd_numbers)
    print(sum(even_numbers), sum(odd_numbers))
    print(num_list)

您当前的方法只生成10个数字,并将它们始终添加到num_list。你想要的是保持生成数字,直到你有10个偶数并继续生成,直到有10个奇数。

上面的代码通过使用名为get_numbers的参数调用checker函数来实现这一点,该函数是函数(是的,您可以将函数作为参数传递),该函数被调用以检查数字。 / p>