def preg(nm,ap,m,j):
nm = input(m,": Ingresa nombre de,",j,": ")
while len(nm)>20 or not nm.isalpha() or len(nm)<=2:
nm = input(m,"Demasiados car. (min 3 y max 20) o car. invalido,",j,"ingrese otra vez el nombre: ")
limpiar()
ap = input(m,": Ingresa apellido de 1er jugador: ")
while len(ap)>20 or not ap.isalpha() or len(ap)<=2:
ap = input(m,"Demasiados car. (min 3 y max 20) o car. invalido,",j,"ingrese otra vez el apellido: ")
def programa(): #Definir el programa para poder hacer la funcion reinicio
global nm1,nm2,nm3,nm4,ap1,ap2,ap3,ap4
print ()
print ("|----------------|")
print ("|Lista de ajedrez|")
print ("|----------------|")
print ()
print ()
input("PRESIONA ENTER PARA INICIAR EL REGISTRO DE PRIMERA MESA| ") #Inicio primera mesa
limpiar()
global nm1,ap1,nm2,ap2,nm3,ap3,nm4,ap4 #Define a las variables mencionadas a globales
preg(nm1,ap1,"MESA 1","JUGADOR 1")
limpiar()
preg(nm2,ap2,"MESA 1","JUGADOR 2")
limpiar()
Tengo un problema con este codigo, al parecer es por el estado de las variables.
Error:
|----------------|
|Lista de ajedrez|
|----------------|
PRESIONA ENTER PARA INICIAR EL REGISTRO DE PRIMERA MESA|
Traceback (most recent call last):
File "CAJ_optimizado.py", line 199, in <module>
programa()
File "CAJ_optimizado.py", line 169, in programa
preg(nm1,ap1,"MESA 1","JUGADOR 1")
NameError: name 'nm1' is not defined
Hice la funcion preg() para optimizar mi codigo y asignar las variables con los parametros. Pero tengo un global en TODAS mis funciones y aun asi no me sirve, como soluciono esto?
También tienes que hacer global las variables dentro de la función preg
Saludos!
Global más que las variables a scope global, es como si las sacara de un contenedor especial (y si no existe las crea) así como estas no cambian del scope donde fueron llamadas, debes llamarlas al entrar en otro... es decir llamarlas cada vez que entras a una función donde serán usadas