【问题标题】:Why wont the even and odd numbers print true answers?为什么偶数和奇数不会打印出正确的答案?
【发布时间】:2014-07-09 16:26:12
【问题描述】:

我正在编写一个程序,我想创建一个列表,如果需要的话可能是两个。十个偶数和奇数随机数 (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]
>>> 

非常感谢任何帮助。

【问题讨论】:

标签: python list loops


【解决方案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 

【讨论】:

    【解决方案2】:
    >>> 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
    

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

    【讨论】:

      【解决方案3】:

      最简单的方法可能是不断生成数字,直到您有足够的数字满足条件:

      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 的参数,该函数是用于检查数字的函数(是的,您可以将函数作为参数传递)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-08
        • 2021-06-30
        相关资源
        最近更新 更多