Función dentro de otra función, ayuda?
Publicado por Manuel (12 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í...
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 :)
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


0