def login():
sesion = input("Nombre de usuario: ")
seguir = True
while seguir:
if sesion.lower()=="invitado":
print("Has iniciado sesion como invitado.")
seguir = False # Termina el while externo
elif sesion.lower()=="patata":
seguir = False
seguir2 = True
while seguir2: #bucle infinito hasta que password == "100azul100".
password = input("Contrasena: ")
if password=="777":
print("Has iniciado sesion como administrador.")
seguir2 = False # Termina el while interno
start.admin = True
continue
elif sesion.lower()!="patata"or" invitado":
login()
login()
while start.admin: # me marca que no existe el start.admin
print()
print("1-Añadir o eliminar usuarios")
#...
Nombre de usuario: patata
Contrasena: 777
Has iniciado sesion como administrador.
Traceback (most recent call last):
File "/storage/emulated/0/com.hipipal.qpyplus/scripts3/.last_tmp.py", line 21, in <module>
login()
File "/storage/emulated/0/com.hipipal.qpyplus/scripts3/.last_tmp.py", line 16, in login
start.admin = True
NameError: global name 'start' is not defined
No entiendo, por qué no está definido :(
donde definiste el objeto start?
if password=="777":
print("Has iniciado sesion como administrador.")
seguir2 = False # Termina el while interno
start.admin = True
Ahí
Edito: ese" ." de start.admin era un "_"
si lo pones con un punto, estás tratando de acceder a la propiedad admin del objeto start...
la cosa es que en programacion existen lo que se llaman "scopes" que son los alcances de las variables... si declaras una variable dentro de un scope (una sangria) no existe fuera de ella... es decir
variable1 = true;
while variable1:
variable2 = false
variable1=variable2 #esto si funciona porque variable1 está en un scope más externo
print(variable1)
print(variable2)#aqui da un error porque variable2 solo existe en el scope del while
Entonces cómo crees que podría hacerlo ? :/
en la linea 1 declara start, en su defecto, puedes hacer return true para que la funcion retorne verdadero cuando deba
Perdona la ignorancia, pero no lo consigo :-X
estás haciendo dos cosas mal:
1)usando la variable fuera de la función en la cual la definiste, para hacerlo debes declararla como global dentro de la función:
def login():
global startetc
startetc=lo que quieras
2)no uses variables con punto, se interpreta como una propiedad de objeto, en todo caso usa _
start_etc
Eso es lo que necesitaba! Gracias :) aún estoy aprendiendo :-[