Aed TP1 2024
Aed TP1 2024
Aed TP1 2024
● Introducción:
Se pedirá desarrollar un sistema simple que procese los envíos que se gestionan por correo normal en
forma física realizados desde Argentina. Cada envío tiene (entre otros datos) una dirección de destino
que está asociada a un Código Postal (CP), y ese CP es una cadena de caracteres que tiene distintos
formatos de acuerdo al país al que va dirigido el envío.
Los CP de Argentina y de sus países vecinos son como los del siguiente modelo ("L" significa Letra, y
"N" significa Número o Dígito (valores del 0 al 9):
Tabla 1
País Formato del CP Observación
Argentina LNNNNLLL 8 caracteres. La primera letra identifica a la provincia (las letras "I"
y "O" no se utilizan), los cuatro dígitos a la ciudad, y las tres letras
finales al frente de manzana o paraje o casilla de correo.
Bolivia NNNN 4 caracteres, todos dígitos. El número completo identifica a la
ciudad o localidad.
Brasil NNNNN-NNN 9 caracteres incluido el guion (el resto, todos dígitos). El primer
dígito identifica una región, el segundo una subregión, del tercero
al quinto un sector/subsector, y los tres últimos un sufijo de
distribución.
Chile NNNNNNN 7 caracteres, todos dígitos. Los tres primeros dígitos identifican a
una comuna, y los cuatro últimos al frente de manzana.
Paraguay NNNNNN 6 caracteres, todos dígitos. Los dos primeros identifican un
departamento, el tercero y el cuarto a un distrito, y los dos últimos
a un barrio o localidad.
Uruguay NNNNN 5 caracteres, todos dígitos. Los dos primeros identifican un
departamento (si el primero es 1, es la ciudad de Montevideo).
Los tres últimos identifican una zona postal.
En particular, los códigos postales argentinos modernos se basan en un patrón que puede ser
ejemplificado con el siguiente gráfico:
1
Solo a los efectos de este trabajo (y sin que esto sea necesariamente real), se asume que el Correo
Central Argentino tiene aranceles por tipo de envío, por peso, y por destino de acuerdo a los siguientes
cuadros (en los que solo consideraremos los tipos de envío que están enumerados, para simplificar el
planteo del TP):
Tabla 2:
Tipo de Envío Id Peso (p) en gramos Precio (en pesos)
Carta Simple 0 p < 20 1100
Carta Simple 1 20 <= p < 150 1800
Carta Simple 2 150 <= p < 500 2450
Carta Certificada 3 p < 150 8300
Carta Certificada 4 150 <= p < 500 10900
Carta Expresa 5 p < 150 14300
Carta Expresa 6 150 <= p < 500 17900
Tabla 3:
País destino Precio (en pesos)
Bolivia, Paraguay, Uruguay (Montevideo) +20%
Chile, Uruguay (no Montevideo) +25%
Brasil (regiones 8 y 9) +20%
Brasil (regiones 0, 1, 2 y 3) +25%
Brasil (regiones 4, 5, 6 y 7) +30%
Otros países +50%
2
Para simplificar el modelo, en este TP se entenderá que el envío se realiza hacia "Otros países" cuando
el CP informado sea una cadena que no corresponde a ninguno de los países considerados en este TP.
No se preocupe de casos en los que algún país no contemplado pudiera tener un CP con el mismo
formato de los países tomados como referencia aquí.
● Requerimiento:
Se solicita desarrollar un programa en Python que gestione los datos de UN único envío que se supone
fue recibido para su despacho en alguna ventanilla del Correo Argentino. Los datos a cargar para ese
envío son:
● El código postal (CP) del destino: una cadena de caracteres, de acuerdo a todo lo que se indicó
en la sección anterior.
● La dirección física del destino: una cadena de caracteres (sin validación ni formato especial
requerido) indicando la dirección concreta de entrega.
● El tipo de envío: un número entero entre 0 y 6 que indica alguno de los siete tipos posibles
(ver columna "Id" en la tabla de tipos de envío - Tabla 2). Se asume que el usuario cargará
estrictamente alguno de esos dígitos, y ningún otro.
● La forma de pago: un número entero que indica alguno de los dos siguientes tipos de pago:
(1: efectivo, 2: tarjeta de crédito). Se asume que el usuario cargará estrictamente alguno de
esos dígitos, y ningún otro.
Luego de cargar los datos del único envío a procesar, el programa debe permitir simular la emisión del
ticket de cobro en base a los siguientes ítems:
1. Indicar el nombre del país de destino, considerando el formato de los CP de los países
considerados en este TP (Argentina y sus países vecinos). Si el CP no cumpliera con ninguno
de esos formatos, informar que el país es "Otro".
2. Si el envío se realiza hacia un destino dentro de Argentina, indicar el nombre de la provincia
hacia la que va el envío (para hacer esto, deberán investigar cuáles son las letras que
identifican a cada provincia argentina según el estándar ISO 3166-2:AR). Si el envío no es al
interior de Argentina, entonces mostrar aquí la cadena "No aplica".
3. Indicar el importe inicial a pagar por el envío, considerando las tablas 2 y 3 de la sección
anterior. Este resultado debe calcularse en formato entero, truncando los decimales si los
hubiera.
4. Considerando que si la forma de pago fue en efectivo se aplica un descuento del 10% al
importe inicial calculado en el punto anterior, indicar (por separado) el importe final a pagar
por el envío. Insistimos: mostrar ese importe por separado del importe inicial, incluso si
resultase que el inicial y el final son iguales. Este resultado debe calcularse en formato entero,
truncando los decimales si los hubiera.
● Consideraciones especiales:
La calificación de este trabajo será realizada por los profesores en forma semiautomática: un
programa de control (designado como runner) ejecutará el TP presentado por cada grupo, y
simplemente controlará que los resultados entregados sean correctos.
Por este motivo, a los efectos de facilitar ese proceso de calificación, se solicita rigurosamente cumplir
las siguientes dos consignas:
1. Al programar la carga de datos en el programa, sigan estrictamente el mismo orden en que están
enumerados más arriba, y no agreguen NINGÚN otro dato (ni NINGUNA otra carga por teclado de
3
absolutamente nada) más que los que se piden aquí: primero carguen el código postal, luego la
dirección física, luego el tipo de envío, y luego la forma de pago, manteniendo los tipos de datos
que se indicaron (NO carguen más datos que los que se han indicado. El programa debe hacer
CUATRO llamadas a la función input() Y SOLO CUATRO). Recomendamos encarecidamente que
para el esquema de carga por teclado copien y peguen al inicio del programa TAL CUAL las
instrucciones que siguen a continuación, y luego usen estas mismas variables:
cp = input("Ingrese el código postal del lugar de destino: ")
direccion = input("Dirección del lugar de destino: ")
tipo = int(input("Tipo de envío (id entre 0 y 6 - ver tabla 2 en el enunciado): "))
pago = int(input("Forma de pago (1: efectivo - 2: tarjeta): "))
2. Al mostrar los resultados en pantalla, si las variables donde se almacenaron los resultados a
mostrar fuesen destino, provincia, inicial y final (lo cual recomendamos fuertemente que hagan),
entonces usen estrictamente la secuencia de instrucciones que siguen para visualizar esas salidas
(NO cambien los mensajes ni agreguen caracter o quiten caracter alguno en ninguno de ellos, NO
agreguen otros resultados parciales o finales, NO agreguen saltos de línea ni ningún tipo de texto
o adorno a las salidas). El programa debe hacer CUATRO llamadas a la función print() Y SOLO
CUATRO). Simplemente, copien y peguen al final de su programa la siguiente secuencia, y
aténgase a esta secuencia sin cambiar nada en absoluto:
print("País de destino del envío:", destino)
print("Provincia destino:", provincia)
print("Importe inicial a pagar:", inicial)
print("Importe final a pagar:", final)