Python - Función dentro de otra función, ayuda?

   
Vista:

Función dentro de otra función, ayuda?

Publicado por Manuel manuriverogod@gmail.com (10 intervenciones) el 25/06/2017 01:16:53
Hola comunidad, estoy entusiasmado con esto de la programación, soy todo un novato aún.
Resulta que estoy creando (todo en consola) un programa donde el usuario ingresa los pacientes, seguido de una serie de actividades en base al resultado de esa función...
Resulta que, se me ocurrió la idea de violar la consigna de la actividad, y en lugar de utilizar un while hasta que la clave del diccionario sea = a 0, utilicé un menú principal en el cuál se especifica las opciones disponibles, y posteriormente se solicita un ingreso con la opción a ejecutar.

Para ahorrarme espacio o para facilitarme todo a la hora de escribir en código este menú principal (que por ahora es pequeño, luego veré que más le puedo agregar), se me ocurrió la idea de hacerlo en una función, y llamar a dicha función dentro de la función en la que estoy trabajando.

El programita me quedó algo así...

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
def menulistapacientes():
    print("¿Qué desea hacer ahora?")
    print("1 - Ingresar otro paciente.\n2 - Finalizar ingreso.\n3 - Ver los pacientes ingresados hasta el momento.")
def pacientes2():
    listapacientes={}
    while True:
        dni=int(input("Ingrese DNI del paciente: "))
        nombre=input("Ingrese nombre y apellido del paciente: ")
        edad=int(input("Ingrese edad: "))
        sexo=input("Ingrese sexo: ")
        diabetes=input("Ingrese si tiene diabetes o no: ")
        listapacientes[dni]=[nombre,edad,sexo,diabetes]
        print("\n")
        print("Acaba de cargar al siguiente paciente: ",listapacientes[dni][0])
        print("\n")
        p=len(listapacientes.keys())
        eleccion=int(input("Ingrese opción a ejecutar: "))
        if eleccion==1:
            continue
        if eleccion==3:
            print("Hasta el momento ha ingresado la cantidad de pacientes: ",p,".")
            print("¿Qué desea ver?")
            print("\n")
            print("1 - Nombre de los pacientes ingresados.\n2 - Datos completos de los pacientes ingresados.")
            print("\n")
            eleccion3=int(input("Ingrese opción a ejecutar: "))
            if eleccion3==1:
                print("Los pacientes ingresados son: ")
                for i in listapacientes.values():
                    print (i[0])
                menulistapacientes()
            eleccion=int(input("Ingrese opción a ejecutar: "))
 
            if eleccion3==2:
                print("Los datos completos de los pacientes ingresados son: ",listapacientes)
                print("\n")
                menulistapacientes()
                eleccion=int(input("Ingrese opción a ejecutar: "))
 
        if eleccion>4 and eleccion<0:
            print("Por favor, ingrese un número especificado en el menú.")
 
        if eleccion==2:
            print("Ha finalizado el ingreso de pacientes, el listado total es: ",listapacientes)
            break
    return listapacientes

Espero no les moleste leer tanto código para una estúpida pregunta como la mía, aunque la parte importante es cuando creo la función del menú, y cuando la llamo en la función en la que estoy trabajando.

El problema es que, cuando ejecuto el programa, luego de ingresar el último dato, no se ejecuta el menú, el cuál sería la función menulistapacientes(); por lo que me solicita el ingreso de la opción, sin detallar anteriormente la correspondencia de cada número a ingresar.

¿Alguien que sepa decirme dónde está mi error, y qué debería hacer para poder llamar a la función menulistapacientes(), en la función que estoy trabajando, pacientes2() ?

Muchas gracias por tomarse su tiempo en ayudarme, Dios los bendiga :)
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
Imágen de perfil de kip

Función dentro de otra función, ayuda?

Publicado por kip (204 intervenciones) el 25/06/2017 02:49:15
Hola, intenta llamar a la funcion justo despues de esta linea:

1
2
p=len(listapacientes.keys())
menulistapacientes()

Eso soluciona tu problema ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar

Función dentro de otra función, ayuda?

Publicado por Manuel (10 intervenciones) el 25/06/2017 04:57:12
Por Dios que tonto soy. Lo siento. Gracias!
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