2014-11-03 646 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()