GastonPalazzo

Var y Cond - Ej-Bonus

Apr 2nd, 2020
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.57 KB | None | 0 0
  1. # meses
  2. meses={
  3. 1:['enero',31],
  4. 2:['febrero',28],
  5. 3:['marzo',31],
  6. 4:['abril',30],
  7. 5:['mayo',31],
  8. 6:['junio',30],
  9. 7:['julio',31],
  10. 8:['agosto',31],
  11. 9:['septiembre',30],
  12. 10:['octubre',31],
  13. 11:['noviembre',30],
  14. 12:['diciembre',31]
  15. }
  16.  
  17. #validador de fecha
  18. def validador():
  19.     r = -2
  20.     cond = True
  21.     while cond == True:
  22.  
  23.         fecha = input('\nIngrese fecha (dd/mm/aaaa): ').split('/')
  24.         for i in range(len(fecha)):
  25.             fecha[i] = int(fecha[i])
  26.  
  27.         if fecha[2]>0:
  28.             if fecha[1]>0 and fecha[1]<13:
  29.                 if fecha[0]<=meses[fecha[1]][1]:
  30.                     print('\nLa fecha '+str(fecha[0])+'/'+str(fecha[1])+'/'+str(fecha[2])+' es valida.')
  31.                     r = fecha #Retorno de fecha valida como array de enteros
  32.                     cond=False
  33.                 else:
  34.                     r = -1
  35.                     print('\nDia invalido\n')
  36.             else:
  37.                 r = -1
  38.                 print('\nMes invalido\n')
  39.         else:
  40.             r = -1
  41.             print('\nAño invalido\n')
  42.     return r
  43.  
  44. #conversor fecha -> cantidadDeDias
  45. def fechaADias(fecha):
  46.     #agno
  47.     r = (fecha[2]-1)*365
  48.     #mes
  49.     for m in range(1, fecha[1], +1):
  50.         r += meses[m][1]
  51.     #dia
  52.     r += fecha[0]
  53.     #agno biciesto
  54.     r += fecha[2]//4
  55.     return r
  56.  
  57. #conversor cantidadDeDias -> fecha
  58. def diasAFecha(dias):
  59.     if dias>-1:
  60.         dias -= (dias//365)//4 #resta de dias por agno biciesto
  61.         a = (dias//365)
  62.  
  63.         cond = True
  64.         i=1
  65.         resto = dias%365
  66.         while cond == True:
  67.             if resto<meses[i][1]:
  68.                 m=i
  69.                 d=resto
  70.                 cond=False
  71.             else:
  72.                 resto-=meses[i][1]
  73.                 i+=1
  74.  
  75.         r = [d, m, a+1]
  76.     else:
  77.         print('\nError: La cantidad de dias debe ser un entero positivo (n>0)!\n')
  78.         r = 0
  79.     return r
  80.  
  81. #main
  82. cond = True
  83. while cond==True:
  84.     print('|CONVERSOR DE FECHA/DIA|\n\nOpciones:\n2. Fecha a cantidad de dias\n1. Cantidad de dias a fecha\n0. Salir\n')
  85.     opc = int(input('<opcion>: '))
  86.     if opc == 2:
  87.         print('\nCantidad de dias desde el agno 1 es '+str(fechaADias(validador()))+' dias.\n')
  88.     elif opc == 1:
  89.         d = int(input('\nIngrese cantidad de dias: '))
  90.         print('\nLa fecha que representa la cantidad de dias "'+str(d)+'" es '+str(diasAFecha(d)[0])+'/'+str(diasAFecha(d)[1])+'/'+str(diasAFecha(d)[2])+'\n')
  91.     elif opc == 0:
  92.         cond = False
  93.     else:
  94.         print('\nError: Opcion no valida!\n')
  95.  
  96. print('\nFin de la ejecucion!\n')
Advertisement
Add Comment
Please, Sign In to add comment