Advertisement
GastonPalazzo

Var y Cond - Ej-15

Apr 1st, 2020
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.67 KB | None | 0 0
  1. #tupla de meses y dias validos
  2. meses=(
  3. 31,
  4. 28,
  5. 31,
  6. 30,
  7. 31,
  8. 30,
  9. 31,
  10. 31,
  11. 30,
  12. 31,
  13. 30,
  14. 31
  15. )
  16.  
  17. #Validador de fecha
  18. #Nota: considerar cantidad de dias reales de cada mes
  19. #Nota1: no se contempla ajuste por año biciesto
  20. def validador():
  21.     r = -2
  22.     cond = True
  23.     while cond == True:
  24.         a = int(input('\nAño (aaaa): '))
  25.         if a>0:
  26.             m = int(input('\nMes (mm): '))
  27.             if m>0 and m<13:
  28.                 d = int(input('\nDia (dd): '))
  29.                 if d<=meses[m-1]:
  30.                     print('\nLa fecha '+str(d)+'/'+str(m)+'/'+str(a)+' es valida.')
  31.                     r = [d,m,a]
  32.                     cond=False
  33.                 else:
  34.                     r = -1
  35.                     print('\nDia invalido')
  36.             else:
  37.                 r = -1
  38.                 print('\nMes invalido')
  39.         else:
  40.             r = -1
  41.             print('\nAño invalido')
  42.     return r
  43.  
  44. #Calculador de diferencia de dias entre dos fechas
  45. def difEnDias(f1, f2):
  46.     #posicionando la fecha mas anterior en primer lugar
  47.     if f1[2]>f2[2]:
  48.         aux=f1
  49.         f1=f2
  50.         f2=aux
  51.     elif f1[2]==f2[2]:
  52.         if f1[1]>f2[1]:
  53.             aux=f1
  54.             f1=f2
  55.             f2=aux
  56.         elif f1[1]==f2[1]:
  57.             if f1[0]>f2[0]:
  58.                 aux=f1
  59.                 f1=f2
  60.                 f2=aux
  61.    
  62.     d=0
  63.    
  64.     #dias por mes por agno transcurrido ↓ (cuando los agnos son iguales)
  65.     if f1[2]==f2[2]:
  66.         if f1[1]==f2[1]:
  67.             d+=(f2[0]-f1[0])
  68.         else:
  69.             for m in range(f1[1], f2[1]+1, +1):
  70.                 if m==f1[1]:
  71.                     d+=(meses[m-1])-f1[0] #ajuste de dias, del mes mas anterior
  72.                 elif m==f2[1]:
  73.                     d+=f2[0] #ajuste de dias, del mes mas posterior
  74.                 elif f1[1]<m<f2[1]:
  75.                     d+=meses[m-1] #suma de dias de los meses transcurridos por completo
  76.     else:
  77.         #dias por mes por agno transcurrido ↓ (cuando los agnos son diferentes)
  78.         for a in range(f1[2], f2[2]+1, +1):
  79.             for m in range(len(meses)):
  80.                 if a==f1[2] and m==f1[1]:
  81.                     d+=(meses[m-1])-f1[0] #ajuste de dias, del mes mas anterior
  82.                 elif a==f2[2] and m==f2[1]:
  83.                     d+=f2[0] #ajuste de dias, del mes mas posterior
  84.                 elif a<(f1[2]+1) and m>f1[1]:
  85.                     d+=meses[m-1] #suma de dias de los meses transcurridos por completo
  86.                 elif f2[2]>a>f1[2]:
  87.                     d+=meses[m-1] #suma de dias de los meses transcurridos por completo
  88.                 elif a>=f2[2] and m<f2[1]:
  89.                     d+=meses[m-1] #suma de dias de los meses transcurridos por completo
  90.    
  91.     return d
  92.  
  93. #main
  94. print('|Diferencia de dias entre fechas|')
  95. cond = True
  96. while cond==True:
  97.     opc = int(input('\nOpciones\n\n1. Calcular\n0. Salir\n\n<opcion>: '))
  98.     if opc == 0:
  99.         print('\nFin de la ejecucion!\n')
  100.         cond = False
  101.     elif opc == 1:
  102.         print('\nValores de fecha 1:')
  103.         fecha1 = validador()
  104.         if fecha1 == -2:
  105.             continue
  106.         elif fecha1 == -1:
  107.             print('\nError: Ingrese una fecha valida!\n')
  108.         else:
  109.             print('\nValores de fecha 2:')
  110.             fecha2 = validador()
  111.             if fecha2 == -2:
  112.                 continue
  113.             elif fecha2 == -1:
  114.                 print('\nError: Ingrese una fecha valida!\n')
  115.             else:
  116.                 dif = difEnDias(fecha1, fecha2)
  117.                 if dif<0:
  118.                     dif*=(-1)
  119.                 print('\nHay '+str(dif)+' dias de diferencia entre las fechas!')
  120.     else:
  121.         print('\nOpcion no valida!\n')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement