Python - buscar un numero de la seguridad social en la lista hospital[]

 
Vista:

buscar un numero de la seguridad social en la lista hospital[]

Publicado por Wild (3 intervenciones) el 19/04/2020 12:17:22
Hola, tengo un error y es que en el def dadespacient(numsegsocial), me pone que el for i in hospital no es iterable. Lo que quiero hacer en el ejercicio es: introducir un número de la seguridad social, que me lo busque en la lista de hospital[] y que me muestre la persona que tiene ese número.

Se agradece cualquier ayuda.

Gracias y un saludo!

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
28
29
from datetime import datetime, date, time, timedelta
 
def pacients():
 
    hospital = {'47123321A': ['Joan Cruz', '01123456742', date(2020, 2, 2), 's'],
            '47675398SS': ['Marta Gonzalez', '97656432121', date(2020, 2, 2), 'n']
            }
 
#def radiografiesTemps():
 
def dadespacient(numsegsocial):
 
    hospital=pacients()
 
    for i in hospital:
 
        if numsegsocial in hospital[i]:
 
            return i
 
    return False
 
def main():
    numsegsocial = int(input("Introdueix el numero de la SS: "))
    dadespacient(numsegsocial)
 
 
if __name__=="__main__":
    main()
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

buscar un numero de la seguridad social en la lista hospital[]

Publicado por tincopasan (1082 intervenciones) el 19/04/2020 13:59:07
hola: hay varias cosas mal:
1) usar date es innecesario
2) lo más grave estás trabajando con diccionarios no con listas, por lo tanto
in solo comprueba que esté pero no devuelve más que verdadero o falso
3) no se puede usar int() ya que el número de seguridad es en realidad una cadena

el código medianamente corregido:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#-*- coding: utf -8 -*-
from datetime import datetime, date, time, timedelta
hospital = {'47123321A': ['Joan Cruz', '01123456742', date(2020, 2, 2), 's'],
'47675398SS': ['Marta Gonzalez', '97656432121', date(2020, 2, 2), 'n']
}
 
#def radiografiesTemps():
 
def dadespacient(numsegsocial):
    paciente = hospital.get(numsegsocial)
    return paciente
 
def main():
    numsegsocial = input("Introdueix el numero de la SS: ")
    nombre = dadespacient(numsegsocial)
 
    if nombre !=None:
        print(nombre[0])
    else:
        print("No hi ha pacients amb aquest numero") #perdón si la traducción esta mal
 
 
if __name__=="__main__":
    main()
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
sin imagen de perfil
Val: 13
Ha disminuido su posición en 9 puestos en Python (en relación al último mes)
Gráfica de Python

buscar un numero de la seguridad social en la lista hospital[]

Publicado por Gustavo Palacio (1 intervención) el 20/04/2020 05:07:18
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
from datetime import datetime, date, time, timedelta
 
def dadespacient(numsegsocial):
    hospital = {'47123321A': ['Joan Cruz', '01123456742', date(2020, 2, 2), 's'],
                '47675398SS': ['Marta Gonzalez', '97656432121', date(2020, 2, 2), 'n']
               }
 
    salir = False
    for k,v in hospital.items():
 
        for i in v:
            if k == numsegsocial:
                salir = True
                break
        if salir:
            break
    return i
 
 
def main():
    numsegsocial =input("Introdueix el numero de la SS: ")
    nombre = dadespacient(numsegsocial)
    print("Nombre : ", nombre)
 
 
if __name__ == "__main__":
    main()
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