Diseño de una expresión lógica equivalente a la siguiente declaración:

x es una lista de tres o cinco elementos, el segundo elemento de que se
la cadena de 'Hip' y la primera de la que no es un número o un valor Booleano.

Lo que tengo:

x = ['Head', 'Hip', 10]
print x[1] is 'Hip'

Mi pregunta: ¿Cómo se puede comprobar si es o no es un valor Booleano o un número?

InformationsquelleAutor Joakim | 2013-02-22

6 Comentarios

  1. 43

    Para responder a la pregunta específica:

    isinstance(x[0], (int, float))

    Este comprueba si x[0] es una instancia de cualquiera de los tipos en la tupla (int, float).

    Puede agregar bool en allí también, pero no es necesario, porque bool es en sí mismo una subclase de int.

    Doc referencia:


    A comentar su código actual, usted no debe confiar en pasante de cadenas cortas. Se supone que para comparar cadenas con el == operador:

    x[1] == 'Hip'
  2. 25

    Más fácil, yo diría:

    type(x) == type(True)
    • Un poco chapucero, pero no importa, así que +1
    • Tal vez directamente type(x) is bool?
    • El uso de type crear un pylint mensaje: C0123: Using type() instead of isinstance() for a typecheck. (unidiomatic-typecheck) respuesta Correcta necesita ser aceptado
  3. 5

    Debe comparar el tipo de x a la bool clase:

    type(x) == bool

    o:

    type(x) == type(True)

    Aquí es más en el método de tipo de

    De Modelo de datos docs:

    Booleanos (bool)

    Estos representan la verdad de los valores de Falso y Verdadero. Los dos objetos que representan los valores de Falso y Verdadero son los únicos objetos Boolean. El tipo Booleano es un subtipo del tipo integer, y los valores Booleanos se comportan como los valores 0 y 1, respectivamente, en casi todos los contextos, con la excepción de que cuando se convierte en una cadena, las cadenas de «Falso» o «Verdadero» se devuelven, respectivamente.

  4. 0

    Me siga la reciente respuesta que le dicen a utilizar type y parece ser la forma incorrecta de acuerdo a pylint de validación:

    Recibí el mensaje:

    C0123: Utilizando el tipo de() en lugar de isinstance() para un-comprobación de tipo.
    (unidiomatic- – comprobación de tipo)

    Incluso si se trata de una respuesta anterior, el correcto es el aceptado la respuesta de @Lev Levitsky:

    isinstance(x[0], (int, float))

Dejar respuesta

Please enter your comment!
Please enter your name here