2017-05-21 2 views
-3
zu reduzieren

alternativ reduzieren mitVersuch zu verwenden

def is_prime_no(x): #"True" represents Prime 
    np = 1 
    if x < 2: 
     np = 0 
    else: 
     for i in range(3, x): #int(math.sqrt(n)) 
      if x % i == 0: 
       np =0 
    return np 

Druck is_prime_no (12)

def prime_check(a,b): 
    if is_prime_no(a) == 1 and is_prime_no(b) == 1: 
     return 1 
    else: 
     return 0 

print "prime check result ", prime_check(13,17) 

Von hier aus geht nicht

def list_prime_check(values): 
    return reduce(prime_check, values) 
print "Check items in list are prime ", list_prime_check([13,17,19]) 

Gibt 0 zurück, aber nicht 1 - i wahr

+2

Es ist mir nicht klar ist, was Sie wollen machen. Willst du herausfinden, ob zwei Zahlen * relativ * prim sind? Bitte fügen Sie eine Erklärung hinzu. –

Antwort

0

Denken Sie daran, dass in reduce(lambda a, b: ..., ...), wird der Rückgabewert der Funktion der neue a. Deshalb haben Sie:

reduce(prime_check, [13, 17, 19]) # => 
    prime_check(13, 17) # => 1 => 
reduce(prime_check, [1, 19]) # uhh, what? => 
    prime_check(1, 19) # uh-oh... 

Diese besondere Instanz des Problems besser mit all serviert:

all(...) 
    all(iterable) -> bool 

    Return True if bool(x) is True for all values x in the iterable. 
    If the iterable is empty, return True. 

wie so verwendet:

>>> all([is_prime_no(x) for x in [13, 17, 19]]) 
True 
Verwandte Themen