Oto mój obecny kod:

def even(x):

   if x % 2 == 0: 
       even = True
   else:
       even = False   

   if even is True:
       print("Even")

   if even is False:
       print("Odd")

N=[1,3,2,4]

for x in N: 
   even(x)

Ponieważ funkcja bierze każde wejście i drukuje, czy jest ono nawet lub dziwne, bardzo proste.

Dałem sobie cel pisania funkcji / skryptu, który zajmie listę liczb i wypluje coś w rodzaju: "Istnieje 15 numery i 8 liczb nieparzystych". Jednak mam problem z zrozumieniem, jak liczyć biegnącą łącznie ile razy moja zmienna "nawet" jest prawdziwa lub fałsz. Ponadto nie rozumiem, jak następnie użyć tej zmiennej poza funkcją. Do tej pory moje najlepsze próby powodują wyjście jak:

Było 1 liczby nieparzyste

Było 1 liczby nieparzyste

Było 1 parzyste liczby

Było 1 parzyste liczby

Itd .. Dla cokolwiek znajduje się na liście N.

Mając na uwadze, co chcę, to:

Było 2 liczby nieparzyste

Było 2 nawet liczby

Czy ktoś może mi pomóc dowiedzieć się, jak zrobić coś takiego?

2
Jordan S. 1 październik 2017, 00:19

2 odpowiedzi

Najlepsza odpowiedź

Możesz użyć sum() i map():

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

N = [1,3,2,4,6,8]

n_even = sum(map(even, N))
print(n_even)
# 4

Teraz even zwraca True (1) Jeśli numer jest nawet i False (0) w przeciwnym razie. Teraz po prostu podsumuj i masz czasy, kiedy miałeś zamiast liczby.
Dodatkowo możesz zdefiniować n_odd jako

n_odd = len(N) - n_even
0
Jan 30 wrzesień 2017, 21:24

Możesz użyć a {x0}}:

from collections import Counter
c = Counter(x % 2 == 0 for x in lst)
print "There are %d even numbers and %d odd numbers" % (c[True], c[False])
1
Mureinik 30 wrzesień 2017, 21:26