Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Error con condicionales anidadas
#1
Hola que tal, si alguien pudiera orientarme, lo que sucede como ya lo adelante en el titulo el error lo encuentro al introducir una clave que no existe, el programa se supone que debería pasarse al (else) y cerrarse pero no lo hace, el programa acepta la clave no existente y sigue su introduciendo datos.

  1. print("SISTEMA  VACACIONAL  RAPPI\n")
  2.  
  3. nombre = input(" \n¿Cual es tu nombre? ")
  4. clave = int(input(" \n¿Cual es tu clave? "))
  5. antiguedad = int(input(" \n¿Cuantos años cumplidos de antiguedad tienes hasta el momento? "))
  6.  
  7. if clave == 1:
  8.      if antiguedad == 1:
  9.           print("\n El emplado ", nombre," tiene derecho a 6 días de vacaciones.")
  10.      elif antiguedad >= 2 and antiguedad <= 6:
  11.           print("\n El empleado ", nombre," tiene derecho a 14 días de vacaciones.")
  12.      elif antiguedad >= 7:
  13.           print("\n El empleado ", nombre,"tiene derecho a 20 días de vacaciones.")
  14.      else:
  15.           print("\n El empleado ", nombre,"aún no tiene derecho a vacaciones.")
  16.  
  17. elif clave == 2:
  18.      if antiguedad == 1:
  19.           print("\n El emplado ", nombre," tiene derecho a 7 días de vacaciones.")
  20.      elif antiguedad >= 2 and antiguedad <= 6:
  21.           print("\n El empleado ", nombre," tiene derecho a 15 días de vacaciones.")
  22.      elif antiguedad >= 7:
  23.           print("\n El empleado ", nombre,"tiene derecho a 22 días de vacaciones.")
  24.      else:
  25.           print("\n El empleado ", nombre,"aún no tiene derecho a vacaciones.")
  26. elif clave == 3:
  27.      if antiguedad == 1:
  28.           print("\n El emplado ", nombre," tiene derecho a 10 días de vacaciones.")
  29.      elif antiguedad >= 2 and antiguedad <= 6:
  30.           print("\n El empleado ", nombre," tiene derecho a 20 días de vacaciones.")
  31.      elif antiguedad >= 7:
  32.           print("\n El empleado ", nombre,"tiene derecho a 30 días de vacaciones.")
  33.      else:
  34.           print("\n El empleado ", nombre,"aún no tiene derecho a vacaciones.")
  35. else:
  36.      print("La clave no existe, vuelve a intentarlo.")
  37.  
  38. print("\n\n\n              Fin.")
Responder
#2
Hola Eduardo.

Si el usuario ingresa una clave que no está entre 1 y 3, el condicional pasa al "else" correctamente. Si tu duda es por qué en esos casos igualmente pregunta la antigüedad, es sencillamente porque el condicional lo tenés después de pedir todos los datos, así que hasta que el usuario no los ingrese todos (por más que sean inválidos), no se va a hacer ningún chequeo.

Podrías arreglar eso agregando otro condicional:

  1. print("SISTEMA VACACIONAL RAPPI\n")
  2.  
  3. nombre = input(" \n¿Cual es tu nombre? ")
  4. clave = int(input(" \n¿Cual es tu clave? "))
  5.  
  6. # También se puede expresar: clave >= 1 and clave <= 3
  7. if 1 <= clave <= 3:
  8. antiguedad = int(input(" \n¿Cuantos años cumplidos de antiguedad tienes hasta el momento? "))
  9.  
  10. if clave == 1:
  11. if antiguedad == 1:
  12. print("\n El emplado ", nombre," tiene derecho a 6 días de vacaciones.")
  13. elif antiguedad >= 2 and antiguedad <= 6:
  14. print("\n El empleado ", nombre," tiene derecho a 14 días de vacaciones.")
  15. elif antiguedad >= 7:
  16. print("\n El empleado ", nombre,"tiene derecho a 20 días de vacaciones.")
  17. else:
  18. print("\n El empleado ", nombre,"aún no tiene derecho a vacaciones.")
  19.  
  20. elif clave == 2:
  21. if antiguedad == 1:
  22. print("\n El emplado ", nombre," tiene derecho a 7 días de vacaciones.")
  23. elif antiguedad >= 2 and antiguedad <= 6:
  24. print("\n El empleado ", nombre," tiene derecho a 15 días de vacaciones.")
  25. elif antiguedad >= 7:
  26. print("\n El empleado ", nombre,"tiene derecho a 22 días de vacaciones.")
  27. else:
  28. print("\n El empleado ", nombre,"aún no tiene derecho a vacaciones.")
  29. elif clave == 3:
  30. if antiguedad == 1:
  31. print("\n El emplado ", nombre," tiene derecho a 10 días de vacaciones.")
  32. elif antiguedad >= 2 and antiguedad <= 6:
  33. print("\n El empleado ", nombre," tiene derecho a 20 días de vacaciones.")
  34. elif antiguedad >= 7:
  35. print("\n El empleado ", nombre,"tiene derecho a 30 días de vacaciones.")
  36. else:
  37. print("\n El empleado ", nombre,"aún no tiene derecho a vacaciones.")
  38. else:
  39. print("La clave no existe, vuelve a intentarlo.")
  40.  
  41. print("\n\n\n Fin.")


Saludos
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)