[ Foro de Python ]

AYUDA CON CODIGO

30-May-2022 05:46
Invitado (SEBASTIAN)
1 Respuestas

Hola Compas estaba levantando este código pero no logro dar con una solución para cumplir con este enunciado.

“Debera en primera instancia solicitar el rut del paciente, luego verificar que el paciente se encuentre registrado en el sistema. Una vez validado se le solicitara ingresar la fecha de atencion y las observaciones de la visita, y lo almacenara en la variable registros, concatenando los registros antiguos y los nuevos.


validar = True
diccionario_pacientes = {}

#FUNCIONES
def consultar_datos():
global diccionario_pacientes
buscar = int(input(“Ingresar el rut del Paciente: “))

if buscar in diccionario_pacientes:
print(
“””
Rut: {}
Nombre: {}
Direccion: {}
Correo: {}
Edad: {}
Sexo: {}
Registro: {}
Prevision: {}

“””.format(buscar,diccionario_pacientes[buscar][0],diccionario_pacientes[buscar][1],diccionario_pacientes[buscar][2],diccionario_pacientes[buscar][3],diccionario_pacientes[buscar][4],diccionario_pacientes[buscar][5],diccionario_pacientes[buscar][6]))

else:
print(“\n EL PACIENTE NO EXISTE\n”)

def atencion_paciente():
global diccionario_pacientes

rut = int(input(‘Ingrese rut del paciente: ‘))

if rut in diccionario_pacientes:

“””

ESTE CICLO ES EL QUE NO LOGRO TERMINAR

“””

else:
print(“\n EL PACIENTE NO EXISTE\n”)

def agregar_paciente():
global diccionario_pacientes
global validar
print(‘Has ingresado a la opcion de registrar un Paciente: ‘)
preguntar = input(‘\nDesea ingresar un nuevo Paciente (S/N): \r\n’)

while preguntar == ‘s’ or preguntar == ‘S’:

while validar:
try:
rut = int(input(‘Ingresar rut: ‘))

if 5000000 <= rut 1 and correo.index(‘@’) and correo.index(‘.’):

validar = False
else:
print(‘\nEl Correo debe contener mas de un caracter\n’)

except ValueError:
print(‘\nDebe ingresar @ y .\n’)

validar = True

while validar:
try:
edad = int(input(‘Ingresar edad: ‘))

if 0 <= edad <= 110:

validar = False
else:
print('\nIngresar edad entre 0 y 110\n')
except:
print('\nIngresar solo numeros\n')

validar = True

while validar:
sexo = input('Ingresar sexo (F/M): ')

if len(sexo) == 1 and (sexo == 'f' or sexo == 'F' or sexo == 'M' or sexo == 'm'):

validar = False
else:
print('Debe ingresar solo un caracter que sea /F/M)')

validar = True

registrar = input('Ingresar Registros: ')

while validar:
ps = input('Ingresar prevension (ISAPRE/FONASA): ').upper()

if (ps == 'ISAPRE' or ps == 'isapre' or ps == 'FONASA' or ps == 'fonasa'):

validar = False
else:
print('\nDebe ingresar solo (FONASA/ISAPRE)\n')

validar = True

diccionario_pacientes[rut] = nombre, direccion, correo, edad, sexo, registrar, ps,
print(f"\n Paciente {nombre} fue ingresado al sistema\n")

preguntar = input('\nDesea ingresar un nuevo pacientes (S/N): \r\n')

#MENUPRINCIPAL
diccionario_pacientes={}

menuprincipal = int(input("\nCentro Médico DUOC \nMenu principal:\n \n1. Registrar Paciente \n2. Atencion Paciente \n3. Consultar Datos Paciente \n4. Salir \n \nIngresar Opcion: "))

while menuprincipal != 4:

if menuprincipal == 1:
print("\n Registrar Paciente\n")
agregar_paciente()

elif menuprincipal == 2:
print("\n Atencion Pacientes\n")
atencion_paciente()

elif menuprincipal == 3:
print("\n Consultar Datos Paciente\n")
consultar_datos()

else:
print("Opcion incorrecta, favor digital opcion correcta")

menuprincipal = int(input("\nCentro Médico DUOC \nMenu principal:\n \n1. Registrar Paciente \n2. Atencion Paciente \n3. Consultar Datos Paciente \n4. Salir \n \nIngresar Opcion: "))

print("Gracias por su preferencia")


 


30-May-2022 22:53
Invitado (cosme)

hola sebastian

- leer tu código es un caos pues no se ve la identación y es muy importante en python, pasa el código con un pastebin cualquiera por ej: online-ide, linkode, etc

- he visto que usas .upper() en algún input, y luego sigues testando la minúscula ¿?,  por que no en casi todos los inputs y te ahorras ifs largos

- validar tal como la usas no debería ser global

- validar la pones a True, no necesitas volver a ponerla a True dentro del while

- tienes un if con rut 1, le falta la comparación

- en un if usas correo de la nada

- el diccionario de pacientes podrías tenerlo en la función principal y mandarlo como parámetro si le hace falta a alguna función

- los while para validar la entrada, podrías hacerlos en funciones y así te quedaría por ej: edad = edad_paciente() dejando el código mucho mas claro y fácil de seguir

- después de #MENUPRINCIPAL inicializas el diccionario de pacientes a cero y creo que esa debería ser la función principal y no esta definida

- antes de pasar un input a entero deberías asegurarte que es un número


si no pasas el código identado no voy a volver a leerlo

suerte ;-)






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)