如何在使用for循环时计算运行总计?

问题描述 投票:0回答:3

我正在尝试编写一个代码来生成 100 个随机数,然后确定每个数字是偶数还是奇数。代码最后应该有偶数总和和奇数总和。

这是迄今为止的代码:

import random
even = 0
odd = 0

for count in range(100):
    def main(even, odd):
        number = random.randint(1, 1000)
        return number
    
    def isEven(even, odd):
        number = main(even, odd)
        if number % 2 == 0:
            even += 1
            print(number, 'is even')
        elif number % 2 != 0:
            odd += 1
            print(number, 'is odd')
            return odd
            return even
        

    main(even, odd)
    isEven(even, odd)

def totals(even, odd):
    even = isEven(even, odd)
    odd = isEven(even, odd)
    print('the total number of even numbers is', even)
    print('the total number of odd numbers is', odd)

totals(even, odd) 

但是,当我运行代码时,偶数和奇数总计最终会在 None 到 2 范围内。我尝试在 main()、isEven() 和 Totals( ) 函数。我该如何写才能使总数最终等于 100 并且符合我想要的方式?

python for-loop cumulative-sum
3个回答
2
投票

我根本不明白你的代码结构来自哪里。为什么要在 for 循环内定义函数?而且变量

odd
even
永远不会更新,因为你不能在 python 中通过引用传递变量。

更好的方法是这样的:

import random


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

odd_count, even_count = 0, 0

for number in numbers:
    if number % 2 == 0:
        even_count += 1
    else:
        odd_count += 1

print(f"The total number of even numbers is {even_count}")
print(f"The total number of odd numbers is {odd_count}")

0
投票

也许尝试将 for 循环放入函数中。外面的 for 循环对我来说毫无意义。 另外,我在主函数中的两个参数的目的是什么。


0
投票

您可以用更少的代码行编写此功能:

import random
numbers = [random.randint(0, 100) for i in range(100)]
even = 0
for num in numbers:
    if num % 2 == 0:
        even += 1
print("Even numbers count:", even)
print("Odd numbers count:", str(100 - even))

或者甚至(呵呵):

import random
nums = [random.randint(0, 100) for i in range(100)]
even, odd = [n for n in nums if n % 2 == 1], [n for n in nums if n % 2 == 0]
print("Even numbers count:", len(even))
print("Odd numbers count:", len(odd))

如果您需要以某种方式将代码拆分为单独的函数,那么如果您能够提供有关您的任务/分配/目标的更多详细信息,那就太好了。

© www.soinside.com 2019 - 2024. All rights reserved.