• Lenguaje

    Python

  • Descripción

    Una compañía de paquetería internacional tiene servicio en algunos países de América del Norte, América Central, América del Sur, Europa y Asia. El costo por el servicio de paquetería se basa en el peso del paquete y la zona a la que va dirigido. Lo anterior se muestra en la tabla:
    Zona | Ubicación | Costo/gramo
    1 | América del Norte | $11
    2 | América Central | $10
    3 | América del Sur | $12
    4 | Europa | $24
    5 | Asia | $27
    Parte de su política implica que los paquetes con un peso superior a 5 kg no son transportados, esto por cuestiones de logística y de seguridad. Determinar el cobro por la entrega de un paquete o, en su caso, el rechazo de la entrega, además la cantidad y valor total de paquetes enviados a cada destino.
    Nota: el algoritmo se detiene cuando el usuario ya no desea registrar mas envíos y todos los valores se deben expresar en número entero.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import os, msvcrt, sys

paquetes_a_zona_1 = 0
paquetes_a_zona_2 = 0
paquetes_a_zona_3 = 0
paquetes_a_zona_4 = 0
paquetes_a_zona_5 = 0
total_a_zona_1 = 0
total_a_zona_2 = 0
total_a_zona_3 = 0
total_a_zona_4 = 0
total_a_zona_5 = 0
tecla_repetir = b's'
while tecla_repetir==b's' or tecla_repetir==b'S':
    os.system ('cls')
    peso_en_gramos = int (input ('Ingresa el valor de peso en gramos: '))
    costo_por_gramo=0
    print ('Selecciona el valor de zona.')
    print ('\t1.- Am\u00E9rica del Norte')
    print ('\t2.- Am\u00E9rica Central')
    print ('\t3.- Am\u00E9rica del Sur')
    print ('\t4.- Europa')
    print ('\t5.- Asia')
    sys.stdout.write ('\t')
    zona = 0
    while zona<1 or zona>5:
        zona = int (input (': '))
        if zona<1 or zona>5:
            sys.stdout.write ('Valor incorrecto. Ingr\u00E9salo nuevamente.')
    if zona==1:
        costo_por_gramo=11
    if zona==2:
        costo_por_gramo=10
    if zona==3:
        costo_por_gramo=12
    if zona==4:
        costo_por_gramo=24
    if zona==5:
        costo_por_gramo=27
    if peso_en_gramos>5000:
        costo_por_el_servicio=0
        print ('Entrega rechazada')
    else:
        costo_por_el_servicio=costo_por_gramo*peso_en_gramos
    if peso_en_gramos<=5000 and zona==1:
        paquetes_a_zona_1=paquetes_a_zona_1+1
        total_a_zona_1=total_a_zona_1+costo_por_el_servicio
    if peso_en_gramos<=5000 and zona==2:
        paquetes_a_zona_2=paquetes_a_zona_2+1
        total_a_zona_2=total_a_zona_2+costo_por_el_servicio
    if peso_en_gramos<=5000 and zona==3:
        paquetes_a_zona_3=paquetes_a_zona_3+1
        total_a_zona_3=total_a_zona_3+costo_por_el_servicio
    if peso_en_gramos<=5000 and zona==4:
        paquetes_a_zona_4=paquetes_a_zona_4+1
        total_a_zona_4=total_a_zona_4+costo_por_el_servicio
    if peso_en_gramos<=5000 and zona==5:
        paquetes_a_zona_5=paquetes_a_zona_5+1
        total_a_zona_5=total_a_zona_5+costo_por_el_servicio
    print ('Valor de costo por el servicio: ' + repr (costo_por_el_servicio))
    print ('Valor de costo por gramo: ' + repr (costo_por_gramo))
    print ()
    sys.stdout.write ('\u00BFDeseas repetir el proceso? (S/N): ')
    tecla_repetir = b'\0'
    while tecla_repetir!=b's' and tecla_repetir!=b'S' and tecla_repetir!=b'n' and tecla_repetir!=b'N':
        tecla_repetir = msvcrt.getch ()
print ('Valor de paquetes a zona 1: ' + repr (paquetes_a_zona_1))
print ('Valor de paquetes a zona 2: ' + repr (paquetes_a_zona_2))
print ('Valor de paquetes a zona 3: ' + repr (paquetes_a_zona_3))
print ('Valor de paquetes a zona 4: ' + repr (paquetes_a_zona_4))
print ('Valor de paquetes a zona 5: ' + repr (paquetes_a_zona_5))
print ('Valor de total a zona 1: ' + repr (total_a_zona_1))
print ('Valor de total a zona 2: ' + repr (total_a_zona_2))
print ('Valor de total a zona 3: ' + repr (total_a_zona_3))
print ('Valor de total a zona 4: ' + repr (total_a_zona_4))
print ('Valor de total a zona 5: ' + repr (total_a_zona_5))
os.system ('pause')