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 :-( :)
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
Hola, creo entender tu duda, si querés usar la variable apellido_cliente fuera de la función, podes globalizarla:
global apellido_cliente
Saludos
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:
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
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
clear()
else:
break
return nombre_cliente
ahora bien, ¿para qué un break si tenés el return? o sea :
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:
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:
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