2014-11-03 123 views
-1

我有以下分配:100的随机数的奇数和偶数计数器

在本章中,您看到了如何编写,确定一个数是否 为偶数或奇数的算法的例子。编写一个程序产生100个随机数,并保持 这些随机数有多少是偶数,有多少是奇数。

这是我已经能够得到多远,我可以得到100个数字,但我无法弄清楚如何总计奇数和平均数。这应该包括一个值返回布尔函数。

我们允许使用的所有东西是循环,if-elif-else,函数和其他基本的东西。

import random 

NUMBER_LIST = [random.randint(0,1000)] 

def main(): 

    for numbers in range(100): 

     number = print(NUMBER_LIST) 
     number 

    is_even(number) 

    print('The total amount of even numbers is', even_count) 
    print('The total amount of odd numbers is', 100 - even_count) 

def is_even(number): 

    even_count = 0 

    for number in NUMBERS_LIST: 
     if (number % 2): 
      even_count += 1 

    return even_count 

main() 

编辑: 我不应该用一个列表,所以如果那里有一个办法做到这一点没有,让我知道!

+1

为什么你需要保留一个数字列表?而且,它们只能是奇数或偶数,所以你不需要跟踪两者。 – 2014-11-03 00:09:29

+0

http://www.learnr.pro/content/19360-starting-out-with-python-2nd-edition-gaddis-series/255#418778195:96034.13064032793 – inspectorG4dget 2014-11-03 00:12:21

+0

is'even'是一个测试,看看一个数字是否是偶数或者不是,还是计算偶数值的数量? – 2014-11-03 00:12:26

回答

1
import random 

def main(): 
    numberList = [] # create an empty list, to add 100 random ints to 
    for i in range(100): 
     numberList.append(random.randint(1,1000)) # add a random int 

    # now, numberList has 100 random numbers in it 

    # keep track of how many odd numbers 
    oddCount = 0 

    # loop through numberList 
    for number in numberList: 
     if number%2 == 1: # number is odd 
      oddCount += 1 

    evenCount = 100 - oddCount # if a number is not odd, it is not even 

    print("There are", oddCount, "odd numbers, and", evenCount, "even numbers") 

好了,现在我们有一个硬编码的版本,让我们尝试,允许你指定尽可能多的东西可以更灵活的方式:

def main(numNumbers, smallestNumber, biggestNumber): 
    numberList = [] 
    for i in range(numNumbers): 
     numberList.append(random.randint(smallestNumber, biggestNumber)) 
    oddCount = 0 
    for number in numberList: 
     if number%2: # oh look, I didn't have to do the `== 1` part 
      oddCount += 1 
    evenCount = numNumbers - oddCount 
    print("There are", oddCount, "odd numbers, and", evenCount, "even numbers") 
+0

我建议使用'def main(numbers = 100):'然后在方法体中引用'numbers'而不是对其进行硬编码以便可以扩展。 – NuclearPeon 2014-11-03 00:18:34

0
import random 

NUMBER_LIST = [random.randint(0,1000)] 
even = 0; 
odd = 0; 
for numbers in range(100): 
    if (numbers%2 == 1): 
     odd = odd+1 
    if (numbers%2 == 0): 
     even = even+1 
print('number of evens is: ',even) 
print('number of odds is: ',odd) 

所以你可以做这种事情。

+0

您只需要计算偶数或奇数,另一个可以通过100 - [偶数或奇数]找到。剩下的就是另一个的价值。它会为你节省一个if语句。 – NuclearPeon 2014-11-03 00:23:01

+0

这是真的,但复制和粘贴的if语句太诱人和容易 – Rorschach 2014-11-03 00:24:41

0

您可以在没有列表的情况下执行此操作,但由于您的问题可能需要,请执行此操作。

首先,请注意您的代码只是在其中创建一个带有一个随机数的列表。如果你想填充与100个随机号的列表,你必须做一些类似这样:

NUMBER_LIST = [] 
i = 0 
while i < 100: 
    number = random.randint(0, 1000) 
    NUMBER_LIST.append(number) 
    i += 1 

然后,检查数为偶数,与number % 2 == 0(也就是说,数的除法的余2 0这将返回true或false),并增加相应的计数器:

NUMBER_LIST = [] 
# initialize both counters 
evens = 0 
odds = 0 
i = 0 
while i < 100: 
    number = random.randint(0, 1000) 
    NUMBER_LIST.append(number) 
    if number % 2 == 0: 
     evens += 1 
    else: 
     odds += 1 
    i += 1 

然后,你只需要打印计数:

print("The number of even numbers is: " + evens) 
print("The number of odd numbers is: " + odds) 

的FUL那么L代码如下:

import random 
NUMBER_LIST = [] 
evens = 0 
odds = 0 
i = 0 
while i < 100: 
    number = random.randint(0, 1000) 
    NUMBER_LIST.append(number) 
    if number % 2 == 0: 
     evens += 1 
    else: 
     odds += 1 
    i += 1 
print("The numbers were: " + str(NUMBER_LIST)) 
print("The number of even numbers is: " + evens) 
print("The number of odd numbers is: " + odds) 

而且没有名单:

import random 
evens = 0 
odds = 0 
i = 0 
while i < 100: 
    number = random.randint(0, 1000) 
    if number % 2 == 0: 
     evens += 1 
    else: 
     odds += 1 
    i += 1 
print("The number of even numbers is: " + evens) 
print("The number of odd numbers is: " + odds) 
+0

我实际上不应该使用一个列表,我只是看到其他人做了一个类似的任务,我跟着。如果你能告诉我如何在没有列表的情况下做到这一点,那就太棒了! – Rsherrill 2014-11-03 00:24:36

+0

@RussellSherrill这个代码几乎不会使用列表,除了打印选择的数字:)只要删除声明,“附加”行和第一个打印。 – Kroltan 2014-11-03 00:39:22

0
#!/usr/bin/env python3 

import random 
def main(n=100): 
    NUMBER_LIST = [random.randint(0,1000) for x in range(0,n)] 
    odds = len(list(filter(lambda x: x % 2, NUMBER_LIST))) 
    print("Odd Numbers: {}\nEven Numbers: {}".format(odds, n-odds)) 

if __name__ == "__main__": 
    main() 
0
from random import randrange 

even = 0 
for i in range(100): 
    num = randrange(1000) 
    if num % 2 == 0: 
     even += 1 

print('There were {0} even numbers and {1} odd numbers.'.format(even, 100-even)) 
0

我在同一个班!此代码为我工作。

import random 

def main(): 

    counter = 1 
    even_numbers = 0 
    odd_numbers = 0 
    while counter < 101: 

     a = random.randint(1,100) 


     if a % 2 == 0: 
      even_numbers += 1 
     else: 
      odd_numbers += 1 
     counter += 1 

    if counter == 101 : 
     reveal_total(even_numbers, odd_numbers) 

def reveal_total(even_numbers, odd_numbers): 
    print("This many evens : ", even_numbers) 
    print("This many odds : ", odd_numbers) 

main()