Python - Incluir codigo en funciones

 
Vista:
sin imagen de perfil

Incluir codigo en funciones

Publicado por Marco (7 intervenciones) el 09/07/2022 23:15:18
Buenas tardes,

Debo generar un programa pero en el mismo debo de separar los modulos por funciones pero aun no tengo claro el funcionamiento de las funciones y cuando incluyo el codigo dentro de una funcion, el programa no hace nada, creo que es debo de retornar los datos como parametros pero no me queda claro como hacerlo.

Agradezco me puedan ayudar y de paso aclarar como se debe de realizar.
Adjunto mi porgrama.

Muchas gracias por la ayuda que me pueda dar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Incluir codigo en funciones

Publicado por tincopasan (1082 intervenciones) el 10/07/2022 22:40:49
No entiendo ni que problema tenés así que me limitaré a mostrar el uso de una función:
1
2
3
def nombre():
  n = input("Ingrese su nombre: ")
  return n  #n retorna lo ingresado

no pasa nada si no llamas a la funcion así que
la llamamos

1
nombre()
pero..solo muestra Ingrese su nombre
¿cómo puedo usar el nombre?

1
variable=nombre()

ahora en variable está lo ingresado en la función, por supuesto que volvió a llamarla

1
print(variable)

o se puede hacer directamente

1
print(f"Hola {nombre()}")

Eso es lo más básico de funciones, si tu problema es otro, poné código, no creo que haya adivinos de lo que le pase a un script sin que lo muestren.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Incluir codigo en funciones

Publicado por Marco (7 intervenciones) el 10/07/2022 23:00:10
Hola, muchas gracias.

En mi primera funcion tengo algunas dudas, detallo el codigo para que sea mas facil, no hay problema que el menu este dentro de la funcion o si?

Y si me muetras el ejemplo con una parte del codigo, ya que no me queda claro lo debo de hacer mediante un return o tambien se debe de hacer la impresion?


# Se importa la libreria de random para poder generar los ID
import random

# Se da la bienvenida y se le muestran datos generales

print(
'Bienbenido a nuestro sistema de encomiendas Fidélitas express \nNuestro sistema le permite realizar envio de paquetes en 3 modalidades distintas')

# Se define variables iniciales
costo_inicial = 1000
envio_express = 200
bajo_costo = 100
internacional = 300


# Se crea el menu del modo que se repita hasta que el usuario quiera salir o ingrese la opcion correta
# Ademas se crea la funcion para separar el modulo de envio

def modulo_envio():
#Módulo de envío: En este módulo el cliente puede crerar cada una de las entregas, donde al fianlizar el proceso recibirá una guía con la formación necesaria
# la cual deberá adjuntar al paquete para poder realziar el envío del mismo. El proceso le retornara un id de Orden el cual podrá utilizar en caso de requerir una factura electrónica.
try:
while True:
print('************************************************************')
print('1. Express')
print('2. Bajo costo')
print('3. Internacional')
print('4. Salir')
opcion = int(input('Seleccione la opcion a su preferencia: '))

# Se realiza las validaciones ingresadas por el usuario
id_orden = (random.randint(1, 5000))
if opcion == 1:
print('********************************************')
print(
'Todos los paquetes tiene un costo inicial de 1000 colones por el primer 1kg del paquete. Los kilogramos adicionales tiene una tarifa adicional.\n'

'Para los paquetes Express ¢200 por kilogramo')
try:
while (peso_paquete := float(input("Ingrese el peso del paquete a enviar : "))) not in range(1,46): print(
'Los paquetes puede llegar a pesar una cantidad máxima de 45 kg por paquete.')
if peso_paquete == 1:
print('Su costo del paquete seria ,', costo_inicial)
elif peso_paquete >= 2:
peso_paquete_total = costo_inicial + envio_express * peso_paquete - envio_express
print('El costo de su paquete seria', peso_paquete_total, 'su paquete selecionado es', opcion,
'y su ID de la ordden es', id_orden)
except ValueError:
print('Debes introducir peso menor a 45Kg')

elif opcion == 2:
print('********************************************')
print(
'Todos los paquetes tiene un costo inicial de 1000 colones por el primer 1kg del paquete. Los kilogramos adicionales tiene una tarifa adicional.\n'

'Bajo costo ¢100 por kilogramo')
try:
while (peso_paquete := int(input("Ingrese el peso del paquete a enviar : "))) not in range(1,46): print(
'Los paquetes puede llegar a pesar una cantidad máxima de 45 kg por paquete.')
if peso_paquete == 1:
print('Su costo del paquete seria ,', costo_inicial)
elif peso_paquete >= 2:
peso_paquete_total = costo_inicial + bajo_costo * peso_paquete - bajo_costo
print('El costo de su paquete seria', peso_paquete_total, 'su paquete selecionado es', opcion,
'y su ID de la ordden es', id_orden)
except ValueError:
print('Debes introducir peso menor a 45Kg')

elif opcion == 3:
print(
'Todos los paquetes tiene un costo inicial de 1000 colones por el primer 1kg del paquete. Los kilogramos adicionales tiene una tarifa adicional.\n'

'Internacional ¢300 por kilogramo')
try:
while (peso_paquete := int(input("Ingrese el peso del paquete a enviar : "))) not in range(1,46): print(
'Los paquetes puede llegar a pesar una cantidad máxima de 45 kg por paquete.')
if peso_paquete == 1:
print('Su costo del paquete seria ,', costo_inicial)
elif peso_paquete >= 2:
peso_paquete_total = costo_inicial + internacional * peso_paquete - internacional
print('El costo de su paquete seria', peso_paquete_total, 'su paquete selecionado es', opcion,'y su ID de la ordden es', id_orden)
except ValueError:
print('Debes introducir peso menor a 45Kg')

elif opcion == 4:
print('Muchas gracias por usar nuestro sistema de encomiendas')
break
except (ValueError, IndexError):
print('Ingrese una opcion valida')
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Incluir codigo en funciones

Publicado por tincopasan (1082 intervenciones) el 10/07/2022 23:20:18
se me hace ilegible el código así como está, pégalo usando la etiqueta de </>Código para que sea más entendible, ya que mantiene la indentación que estás usando.
Cuidado con los errores de ortografía, como en bienvenidos, no hay problema con nada de lo que haya en la función, menos con un menú.
otra cosa, un módulo se le llama a un archivo aparte del principal, que no es este caso, solo estás usando una función y nunca la has llamado o sea al final de todo te falta modulo_envio(), además hay muchas cosas incongruentes y try con una lógica nada usable.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Incluir codigo en funciones

Publicado por Marco (7 intervenciones) el 10/07/2022 23:59:20
Disculpa, ya lo copie usando la etiqueta.

Esa es la parte que no entiendo, en que parte debe de ir antes de cada print? Disculpa de verdad se me hace un poco complicado aun entenderlo.

Se que hay otras partes del codigo a corregir pero en muchas de ellas si las tengo identificadas para poder corregirlas

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
78
79
80
81
82
83
84
85
86
87
88
89
# Se importa la libreria de random para poder generar los ID
import random
 
# Se da la bienvenida y se le muestran datos generales
 
print(
    'Bienvenido a nuestro sistema de encomiendas Fidélitas express \nNuestro sistema le permite realizar envio de paquetes en 3 modalidades distintas')
 
# Se define variables iniciales
costo_inicial = 1000
envio_express = 200
bajo_costo = 100
internacional = 300
 
 
# Se crea el menu del modo que se repita hasta que el usuario quiera salir o ingrese la opcion correta
# Ademas se crea la funcion para separar el modulo de envio
 
def modulo_envio():
#Módulo de envío: En este módulo el cliente puede crerar cada una de las entregas, donde al fianlizar el proceso recibirá una guía con la formación necesaria
# la cual deberá adjuntar al paquete para poder realziar el envío del mismo. El proceso le retornara un id de Orden el cual podrá utilizar en caso de requerir una factura electrónica.
    try: #este try valida las opciones ingresadas por el usuario en el menu
        while True:
            print('************************************************************')
            print('1. Express')
            print('2. Bajo costo')
            print('3. Internacional')
            print('4. Salir')
            opcion = int(input('Seleccione la opcion a su preferencia: '))
 
            # Se realiza las validaciones ingresadas por el usuario
            id_orden = (random.randint(1, 5000))
            if opcion == 1:
                print('********************************************')
                print(
                    'Todos los paquetes tiene un costo inicial de 1000 colones por el primer 1kg del paquete. Los kilogramos adicionales tiene una tarifa adicional.\n'
 
                    'Para los paquetes Express ¢200 por kilogramo')
                try:
                    while (peso_paquete := float(input("Ingrese el peso del paquete a enviar : "))) not in range(1,46):  print(
                        'Los paquetes puede llegar a pesar una cantidad máxima de 45 kg por paquete.')
                    if peso_paquete == 1:
                        print('Su costo del paquete seria ,', costo_inicial)
                    elif peso_paquete >= 2:
                        peso_paquete_total = costo_inicial + envio_express * peso_paquete - envio_express
                        print('El costo de su paquete seria', peso_paquete_total, 'su paquete selecionado es', opcion,
                              'y su ID de la ordden es', id_orden)
                except ValueError:
                    print('Debes introducir peso menor a 45Kg')
 
            elif opcion == 2:
                print('********************************************')
                print(
                    'Todos los paquetes tiene un costo inicial de 1000 colones por el primer 1kg del paquete. Los kilogramos adicionales tiene una tarifa adicional.\n'
 
                    'Bajo costo ¢100 por kilogramo')
                try:
                    while (peso_paquete := int(input("Ingrese el peso del paquete a enviar : "))) not in range(1,46):  print(
                        'Los paquetes puede llegar a pesar una cantidad máxima de 45 kg por paquete.')
                    if peso_paquete == 1:
                        print('Su costo del paquete seria ,', costo_inicial)
                    elif peso_paquete >= 2:
                        peso_paquete_total = costo_inicial + bajo_costo * peso_paquete - bajo_costo
                        print('El costo de su paquete seria', peso_paquete_total, 'su paquete selecionado es', opcion,
                              'y su ID de la ordden es', id_orden)
                except ValueError:
                    print('Debes introducir peso menor a 45Kg')
 
            elif opcion == 3:
                print(
                    'Todos los paquetes tiene un costo inicial de 1000 colones por el primer 1kg del paquete. Los kilogramos adicionales tiene una tarifa adicional.\n'
 
                    'Internacional ¢300 por kilogramo')
                try:
                    while (peso_paquete := int(input("Ingrese el peso del paquete a enviar : "))) not in range(1,46):  print(
                        'Los paquetes puede llegar a pesar una cantidad máxima de 45 kg por paquete.')
                    if peso_paquete == 1:
                        print('Su costo del paquete seria ,', costo_inicial)
                    elif peso_paquete >= 2:
                        peso_paquete_total = costo_inicial + internacional * peso_paquete - internacional
                        print('El costo de su paquete seria', peso_paquete_total, 'su paquete selecionado es', opcion,'y su ID de la ordden es', id_orden)
                except ValueError:
                    print('Debes introducir peso menor a 45Kg')
 
            elif opcion == 4:
                print('Muchas gracias por usar nuestro sistema de encomiendas')
                break
    except (ValueError, IndexError):
        print('Ingrese una opcion valida')
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Incluir codigo en funciones

Publicado por tincopasan (1082 intervenciones) el 11/07/2022 00:29:53
te sigue faltando:
1
modulo_envio()
en lo que sería línea 90

No entiendo cuál es el problema ¿te da error?, por los menos el menú y sus opciones deben funcionar.

Lo más correcto después de la línea 90 debería ser:
1
2
if __name__=="__main__":
    modulo_envio()

pero no es obligatorio, pero sigo sin entender que error o problema hay.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Incluir codigo en funciones

Publicado por Marco (7 intervenciones) el 11/07/2022 00:49:04
Gracias!!

Pero si cuando lo ejecuto solo me imprime o me hace lo que me está fuera de la función
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Incluir codigo en funciones

Publicado por tincopasan (1082 intervenciones) el 11/07/2022 01:20:39
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
print(
 
    'Bienvenido a nuestro sistema de encomiendas Fidélitas express \nNuestro sistema le permite realizar envio de paquetes en 3 modalidades distintas')
 
 
 
# Se define variables iniciales
 
costo_inicial = 1000
 
envio_express = 200
 
bajo_costo = 100
 
internacional = 300

solo eso está fuera de la función, las funciones son partes de un todo que se realizan por partes, hay mucha información de funciones, empezá por algo simple, crea dos funciones con algo simple, llamá a una, después a otra y fijate que pasa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Incluir codigo en funciones

Publicado por Marco (7 intervenciones) el 11/07/2022 05:11:15
Gracias ya me queda un poco mas claro como es que se debe de realizar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar