Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Panic0 en 4 Febrero 2021, 21:27 pm



Título: Problema con un def (python)
Publicado por: Panic0 en 4 Febrero 2021, 21:27 pm
Hola,estoy teniendo un problema basico con un def en python,lo que quiero hacer es que se guarde en una variable fuera el apellido_cliente.
Probé de todo pero nada,se que esto es un problema básico,por ese motivo pido que no me insulten pls   :-( :)

Código
  1.  
  2. import os
  3.  
  4. def clear():
  5.    if os.name == "posix":
  6.        os.system("clear")
  7.    elif os.name == "ce" or os.name == "nt" or os.name == "dos":
  8.        os.system("cls")
  9.  
  10.  
  11. def agregar_apellido_cliente(apellido):
  12.     while True:
  13.        apellido_cliente = input("Ingrese el apellido del cliente: ").capitalize()
  14.        if apellido_cliente == "":
  15.            print("No puedes dejar este campo vacio!")
  16.            clear()
  17.        elif len(apellido_cliente) <= 4:
  18.            print("Minimo 4 letras!")
  19.            input("<INTRO>")
  20.            clear()
  21.        else:
  22.            apellido = apellido_cliente
  23.            break
  24.  
  25.        return  apellido
  26.  
  27.  


Título: Re: Problema con un def (python)
Publicado por: Danielㅤ en 4 Febrero 2021, 22:19 pm
Hola, creo entender tu duda, si querés usar la variable apellido_cliente fuera de la función, podes globalizarla:

Código
  1. global apellido_cliente


Saludos


Título: Re: Problema con un def (python)
Publicado por: Panic0 en 4 Febrero 2021, 23:45 pm
Hola, creo entender tu duda, si querés usar la variable apellido_cliente fuera de la función, podes globalizarla:

Código
  1. global apellido_cliente


Saludos

Mmm no,mi idea es hacer esto


Código:
def agregar_nombre_cliente():
     while True:
        nombre_cliente = input("Ingrese el nombre del cliente: ").capitalize()
        if nombre_cliente == "":
            print("No puedes dejar este campo vacio!")
            clear()
        elif len(nombre_cliente) <= 2:
            print("Minimo 3 letras!")
            input("<INTRO>")
            clear()
        else:
            break

        return  nombre_cliente


Depues esto,y que apellido_cliente
Código:
nombre_cliente = agregar_apellido_cliente()

Y que nombre_cliente tome el valor de nombre_cliente pero el que esta dentro de la función, no se si me explico jejejej


Título: Re: Problema con un def (python)
Publicado por: tincopasan en 5 Febrero 2021, 01:19 am
Veamos:
partamos de la base que tenés dos declaraciones de funciones distintas , la primera es apellido
y le pasas un argumento, la segunda es nombre y no le pasas argumentos
Código
  1.     clear()
  2.        else:
  3.            break
  4.  
  5.        return  nombre_cliente
  6.  
  7.  
  8.  

ahora bien, ¿para qué un break si tenés el return? o sea :
Código
  1. else:
  2.           return  nombre_cliente
ya terminaria la función, o en todo caso aunque es un mal uso de la lógica de programación:
 
Código
  1.  while:
  2.        #etc:
  3.          clear()
  4.        else:
  5.            break
  6.  
  7.    return  nombre_cliente
  8.  
  9.  

donde el return está fuera del ciclo porque sino el break termina el bucle y no asigna el nombre

y otra cosa:
Código
  1.     clear()
  2.        elif len(nombre_cliente) <= 2:
  3.            print("Minimo 3 letras!")
  4.            input("<INTRO>")
  5.            clear()
  6.  

¿para que perder tiempo con ese enter, si se puede ir directamente a ingresa el nombre nuevamente? ¿todos los usuarios presionarán [enter] o alguno ingresará nuevamente el nombre?
y por supuesto no pasara nada hasta ingresar el nombre nuevamente

por otra lado lo de variable global también funcionará, pero no es necesario en este caso