【问题标题】:(Python) Stuck on skipping range values for the sum of a randint list(Python)停留在跳过随机列表总和的范围值
【发布时间】:2014-10-08 19:42:27
【问题描述】:

我需要在 python 中编写一个程序,生成 1-100 的十个随机数,并使用循环将其存储在一个列表中。然后第二个循环应该显示所述列表,然后计算偶数和奇数元素的总和以显示它们。这是我到目前为止所拥有的,非常感谢任何帮助。谢谢

import random

def main():
    numlist = [0] * 10

    for r in range(10):
        numlist[r] = random.randint(1,100)
    print(numlist)

    list_length = len(numlist)
    print('The number of elements in the list is', list_length)

更具体地说,这是我坚持的部分。我必须添加奇数和偶数元素的总和。我尝试过的每一项工作都只给了我所有元素的总和。

    for x in range(0, 10, 2):
        numlist[x] = numlist 

    print('The Sum of the odd numbers is ', sum(numlist))


main()

【问题讨论】:

  • 您希望numlist[x] = numlist 做什么?
  • 通过 x 中的范围定义 numlist,然后通过打印添加总和。我知道符号与它只是一个占位符相去甚远。

标签: python loops random range


【解决方案1】:
import random
nums = [random.randint(1,100) for _ in range(10)]

您可以使用 lambda 和 filter

evenSum = sum(filter(lambda i : i%2 == 0, nums))
oddSum = sum(filter(lambda i : i%2, nums))

或者做一些快速的辅助函数

def isEven(x):
    return x % 2 == 0

def isOdd(x):
    return x % 2 == 1

evenSum = sum(filter(isEven, nums))
oddSum = sum(filter(isOdd, nums))

【讨论】:

  • 真的很整洁,一如既往!
【解决方案2】:

使用您自己的代码:

def main():
    numlist = [] # create empty list to add randints to 
    for r in range(10):
        numlist.append(random.randint(1,100)) # append to the list
    list_length = len(numlist)
    print('The number of elements in the list is', list_length)
    odd = 0
    even = 0
    for num in numlist:
        if num % 2: # if num mod 2 has a remainder, num is odd
            odd += num
        else:  # else num is even
            even += num
    print('The Sum of the odd numbers is {} and even numbers is {}'.format(odd,even))

您可以将第一个循环替换为列表组合:

numlist = [random.randint(1,100) for _ in range(10)]

【讨论】:

    【解决方案3】:

    无法理解实际问题(哈哈哈哈哈!) 据我了解,您想打印从 randint() 生成的列表的奇数和偶数之和。好吧,我刚刚编辑了您的代码;)

    所以这是简单的完成代码!

    如果有帮助请投票!

            import random
            def main():
                odd_sum=0
                even_sum=0
                numlist = [0] * 10
                for r in range(10):
                    numlist[r] = random.randint(1,100)
                print numlist
                list_length = len(numlist)
                print('The number of elements in the list is', list_length)
    
                for i in numlist:
                    if (i%2 == 1):            #the remainder is 1 if the number is odd
                        odd_sum = odd_sum + i  #add the odd_numbers
                    elif(i%2 == 0):           #the remainder is 0 if the number is even     
                        even_sum = even_sum + i #add the even_numbers
                    else:
                        print "No need of this else part !"
                print "Odd_sum = ",odd_sum
                print "Even_sum = ",even_sum
            main()
    

    【讨论】:

    • 如果你用为什么你的代码更好或解决问题来解释你的答案,它会帮助用户。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    相关资源
    最近更新 更多