while statement ifelse example python conditional-statements multiple-conditions

statement - using if python



Condición múltiple ''o'' en Python (2)

Esta pregunta ya tiene una respuesta aquí:

Tengo un pequeño problema de código y funciona con IDLE y no con Eclipse, ¿puedo escribir esto?

if fields[9] != (''A'' or ''D'' or ''E'' or ''N'' or ''R''):

en lugar de esto :

if fields[9] != ''A'' and fields[9] != ''D'' and fields[9] != ''E'' and fields[9] != ''N'' and fields[9] != ''R'':

Gracias.


Quieres el operador in :

if fields[9] not in ''ADENR'': ...

O bien, puede utilizar any

if not any(fields[9] == c for c in ''ADENR''): ...

O, alternativamente, all , que pueden tener un poco más de la misma forma que el original:

if all(fields[9] != c for c in ''ADENR''): ...

Como un aparte:

if x != (''A'' or ''B'' or ''C''):

es realmente lo mismo que decir:

if x != ''A'':

porque ''A'' or ''B'' or ''C'' evalúa como ''A'' (¡Pruébalo!). La razón es que con or , python devolverá el primer valor "no falso" (o el último si todos son false). Como las cadenas no vacías no son false, la primera se devuelve.


Utilice not in y una secuencia:

if fields[9] not in (''A'', ''D'', ''E'', ''N'', ''R''):

que prueba contra una tupla, que Python almacenará de manera conveniente y eficiente como una constante. También podrías usar un set literal:

if fields[9] not in {''A'', ''D'', ''E'', ''N'', ''R''}:

pero solo las versiones más recientes de Python ( Python 3.2 y más nuevas) reconocerán esto como una constante inmutable. Esta es la opción más rápida para el código más nuevo.

Debido a que este es un carácter, incluso podría usar una cadena:

if fields[9] not in ''ADENR'':