Python - Basico python indentacion confusa

 
Vista:
sin imagen de perfil

Basico python indentacion confusa

Publicado por perro (13 intervenciones) el 13/12/2021 14:53:23
Buenos dias

aprendiendo python a punta de cursitos online y pues me e dado con un caso de identacion no tan, digamos logico


tego un archivo de configuracion un "config.json" que nesecito importar como un dict, eso de la importacion funciona bien
ahora nesecito, como el usuario va a editar maualmente ese "config.json" asegurarme que el dict es valido y tiene las keys que se nesecitan para que el resto del programa funcione peromeda problemas asi que saque a parte este pedazo de codigo para probar y ver que esta mal y me encontre q

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
## check if  dict config_dict is valid an has all the keys
def is_valid_config(config_dict):
    print( type(config_dict) )
 
    if type(config_dict) == "<class 'dict'>":
        print("0")
        if "dbf_file_name" in config_dict:
            print("1")
            if "buscar_codigo_en" in config_dict:
                print("2")
                if "precio" in config_dict:
                    print("3")
                    return True
 
    return False
 
 
## dict de prueba
config_dict = {
    "dbf_file_name" : "TMDFAINV.DBF",
    "buscar_codigo_en" : "CODIGO",
    "precio" : "PRECIO_A"
}
 
 
##Lanzar la def
print( is_valid_config(config_dict) )

este deberia devolver 0 1 2 3 True si las 4 condiciones se cumplen pero no hace sino devolver False y es como si nisiquiera validara el primer if, como si solo se saltara hasta el False
como soy nuevo en esto del python no veo que problema tiene la identacion y mi cerebro insiste que al codigo le faltan corchetes

esto es lo que sale en consola
1
2
3
usuario@red:~/eclipse-workspace/AhoraConPlantillas/src$ python3 config.py
<class 'dict'>
False

alguien me podria decir que tiene de malo este codigo por favor ?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Basico python indentacion confusa

Publicado por tincopasan (1082 intervenciones) el 13/12/2021 17:01:40
el problema es que solo devolverá true si se cumple la última condición, ya que llos if están anidados , por lo tanto se deben verificar los anteriores para llegar a retornar, en cambio retorna false con solo no se cumpla la primera condición.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Basico python indentacion confusa

Publicado por perro (13 intervenciones) el 13/12/2021 19:35:55
bueno y si eso es asi por que no veo el print de la primera comprobación
1
2
3
if type(config_dict) == "<class 'dict'>":
 
        print("0")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Basico python indentacion confusa

Publicado por tincopasan (1082 intervenciones) el 13/12/2021 19:57:33
por que estás comparando el objeto con una cadena:
1
if type(config_dict) == dict:
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Basico python indentacion confusa

Publicado por perro (13 intervenciones) el 04/01/2022 00:31:17
uoo no sabia s epodia hacer asi

al final lo habia solucionado forzando la salida de type(config_dict) a string


if str(type(config_dict)) == == "<class 'dict'>":
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar