Problema con un def (python)

Iniciado por Panic0, 4 Febrero 2021, 21:27 PM

0 Miembros y 1 Visitante están viendo este tema.

Panic0

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 (python) [Seleccionar]


import os

def clear():
   if os.name == "posix":
       os.system("clear")
   elif os.name == "ce" or os.name == "nt" or os.name == "dos":
       os.system("cls")


def agregar_apellido_cliente(apellido):
    while True:
       apellido_cliente = input("Ingrese el apellido del cliente: ").capitalize()
       if apellido_cliente == "":
           print("No puedes dejar este campo vacio!")
           clear()
       elif len(apellido_cliente) <= 4:
           print("Minimo 4 letras!")
           input("<INTRO>")
           clear()
       else:
           apellido = apellido_cliente
           break
       
       return  apellido

Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.

Danielㅤ

Hola, creo entender tu duda, si querés usar la variable apellido_cliente fuera de la función, podes globalizarla:

Código (python) [Seleccionar]
global apellido_cliente


Saludos
¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!

Panic0

Cita de: [D]aniel 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 (python) [Seleccionar]
global apellido_cliente


Saludos

Mmm no,mi idea es hacer esto



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

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
Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.

tincopasan

#3
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 (python) [Seleccionar]

    clear()
       else:
           break

       return  nombre_cliente




ahora bien, ¿para qué un break si tenés el return? o sea :
Código (python) [Seleccionar]
else:
          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 (python) [Seleccionar]
 while:
       #etc:
         clear()
       else:
           break

   return  nombre_cliente



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

y otra cosa:
Código (python) [Seleccionar]

    clear()
       elif len(nombre_cliente) <= 2:
           print("Minimo 3 letras!")
           input("<INTRO>")
           clear()


¿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