¿Cuál es la principal diferencia entre “si” y “si no”?

Por ejemplo.

Según algunos expertos,

Las condiciones aquí son mutuamente excluyentes:

if(n>0): print "Number is Positive" if(n<0): print "Number is Negative" if(n==0): print "Number is ZERO" 

Sería mejor volver a escribir con elif y si no:

  if n > 0: print "Number is Positive" elif n < 0: print "Number is Negative" else: print "Number is ZERO" 

Así que solo quiero hacer la pregunta: ¿Hay alguna diferencia entre ‘if’ y ‘elif’ ? Conozco la diferencia básica entre ‘if’ y ‘elif’. Pero solo quiero saber, ¿por qué algunos progtwigdores novatos prefieren ‘elif’ sobre ‘if’?

La primera forma if-if-if evalúa todas las condiciones, mientras que la segunda if-elif-else solo evalúa tantas como sea necesario: si encuentra una condición que es True , se detiene y no evalúa el rest. En otras palabras: if-elif-else se usa cuando las condiciones son mutuamente excluyentes.

Vamos a escribir un ejemplo. Si desea determinar el mayor valor entre tres números, podríamos probar si uno es mayor o igual que los otros hasta que encontremos el valor máximo, pero una vez que se encuentra ese valor, no es necesario probar los demás:

 greatest = None if a >= b and a >= c: greatest = a elif b >= a and b >= c: greatest = b else: greatest = c print greatest 

Alternativamente, podríamos asumir que un valor inicial es el mayor, y probar cada uno de los otros valores a su vez para ver si el supuesto es verdadero, actualizando el valor asumido según sea necesario:

 greatest = None if a > greatest: greatest = a if b > greatest: greatest = b if c > greatest: greatest = c print greatest 

Como puede ver, tanto if-if-if como if-elif-else son útiles, dependiendo de lo que tenga que hacer. En particular, el segundo de mis ejemplos es más útil, porque sería fácil colocar el condicional dentro de un bucle, por lo que no importa cuántos números tengamos, mientras que en el primer ejemplo deberíamos escribir muchos Condiciones a mano por cada número adicional.

Se puede encadenar con elif y terminar con else si no se cumple ninguna de las condiciones de la cadena. Al revisar las declaraciones, encontrará la primera coincidencia y ejecutará las instrucciones dentro de ese bloque, luego se separará del bloque if / elif / else

 n = 6 if n % 2 == 0: print('divisible by 2') elif n % 3 == 0: print('divisible by 3') else: print('not divisible by two or three') 

esto imprimiría

 divisible by 2 

Sin embargo, supongamos que reemplaza ese elemento anterior con un if y elimina la cláusula else

 divisible by 2 divisible by 3 

el elif encadena las declaraciones y elige la primera apropiada.