2009-06-07 12 views
37

Nel tutorial c'è un esempio per trovare i numeri primi.Cosa significa il segno di percentuale in Python 3.1

>>> for n in range(2, 10): 
...  for x in range(2, n): 
...   if n % x == 0: 
...    print(n, 'equals', x, '*', n//x) 
...    break 
...  else: 
...   # loop fell through without finding a factor 
...   print(n, 'is a prime number') 
... 

Capisco che la doppia == è un test per l'uguaglianza, ma non capisco la parte "se n% x". Come se io possa attraversare verbalmente ciascuna parte e dire cosa fa l'affermazione per l'esempio. Ma non capisco come cada il segno della percentuale. Cosa dice "se n% x" in realtà?

risposta

44

Modulo operatore; dà il resto del valore di sinistra diviso per il giusto valore. Come:

3 % 1 sarebbe uguale a zero (da 3 divide uniformemente da 1)

3 % 2 sarebbe uguale 1 (dal dividendo 3 da 2 determina un resto di 1).

+0

FYI, si chiama euclidea Divisione –

1

In python 2.6 l'operatore '%' ha eseguito un modulo. Non penso che l'abbiano cambiato in 3.0.1

L'operatore modulo ti dice il resto di una divisione di due numeri.

1

Controlla se il modulo della divisione. Ad esempio, nel caso in cui si sta iterando su tutti i numeri da 2 a n e si verifica se n è divisibile da uno qualsiasi dei numeri in mezzo. In poche parole, stai controllando se un dato numero n è primo. (Suggerimento: puoi controllare fino a n/2).

88

Il% fa due cose, a seconda dei suoi argomenti. In questo caso, funge da operatore modulo, ovvero quando i suoi argomenti sono numeri, divide il primo dal secondo e restituisce il resto . 34 % 10 == 4 poiché 34 diviso per 10 è tre, con un resto di quattro.

Se il primo argomento è una stringa, lo formatta utilizzando il secondo argomento. Questo è un po 'coinvolto, così mi farà riferimento alla documentation, ma solo per fare un esempio:

>>> "foo %d bar"%5 
'foo 5 bar' 

Tuttavia, il comportamento di formattazione è completato come di Python 3.1 a favore della stringa.format() meccanismo:

Le operazioni di formattazione descritte qui mostrano una varietà di stranezze che portano ad un numero di errori comuni (come mancare la visualizzazione corretta di tuple e dizionari). L'utilizzo dell'interfaccia più recente str.format() consente di evitare questi errori e offre inoltre un approccio generalmente più potente, flessibile ed estensibile alla formattazione del testo.

E per fortuna, quasi tutte le nuove funzionalità sono disponibili anche da Python 2.6 in poi.

+1

credo che l'operatore formattazione delle stringhe è stato rimosso in Python 3. –

+2

@ Davide: è stato appena deprecato. – SilentGhost

+0

Anch'io ci avevo pensato, ma non riuscivo a trovarlo quando mi guardavo intorno. Un secondo sguardo lo ha rivelato. Modifica spiega. – SingleNegationElimination

1

L'operatore modulo. Il resto quando dividi due numeri.

Per esempio:

>>> 5 % 2 = 1 # remainder of 5 divided by 2 is 1 
>>> 7 % 3 = 1 # remainer of 7 divided by 3 is 1 
>>> 3 % 1 = 0 # because 1 divides evenly into 3 
Problemi correlati