[Python] Nombre de usuario y contraseña.

Iniciado por JCDedalus, 13 Octubre 2010, 22:12 PM

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

JCDedalus

Estoy comenzando a programar, y decidí iniciarme con Python. Se me pasó por la cabeza la idea de hacer un programa capaz de solicitar un nombre de usuario y una contraseña y reconocer si estos son correspondientes o no.

Logré hacer lo siguiente:
Citarname = raw_input('Ingrese su nombre de usuario: ')
def usrpsw(name):
      if name != 'Edward' and name != 'Antonio':
        print 'Nombre de usuario incorrecto'
      else:
        if name == 'Edward':
           pasw_edward = raw_input('Ingrese su contraseña: ')
           if pasw_edward != '12345':
              print 'Contraseña incorrecta'
          else:
              print 'Bienvenido a la sesión'
        elif name == 'Antonio':
            pasw_antonio = raw_input('Ingrese su contraseña: ')
            if pasw_antonio != '54321':
                print 'Contraseña incorrecta'
            else:
                print 'Bienvenido a la sesión'
usrpsw(name)
Mi problema es que no encuentro manera de hacer que, en caso de ingresar un nombre de usuario o contraseña incorrecta, el programa vuelva al principio y los pida nuevamente. He tratado usando "return" pero no me sale. Si me pueden orientar se agradece mucho, Saludos!
Todo lo que es comprendido está bien.
"We.....Are.....One"

Novlucker

Mete todo eso dentro de un bucle while, si el usuario ingresa todo bien, tiras un break para cortar todo :D

Por cierto, dos cosas:
La primera comparación no va a funcionar, porque comparas que el nombre sea Edward, y que sea Antonio, y te llamas de una manera OR de otra ;)
La segunda es que veo que te mataste pintando el código, pero si pones el código entre etiquetas geshi se pinta solo :P

[code=python]print('Hola Mundo')[/code]
Código (python) [Seleccionar]
print('Hola Mundo')

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

JCDedalus

Gracias por lo del "break" no conozco todas los estamentos del lenguaje...de hecho no conocía break pero por ahí googleando encontre algunas cosas... las leere y tratare de hacerlo...Aunque por ahora no tengo ni idea de qué significa "tirarle un break"  :rolleyes:
Con respecto a lo otro... ;D
El código sí funciona, porque cuando:
Código (python) [Seleccionar]
if name != 'Edward' and name != 'Antonio':
  print 'Nombre de usuario incorrecto'

lo que estoy haciendo es decir(o intentando decir  :silbar:)que si el nombre no es Edward, and no es Antonio...print 'Nombre de usuario incorrecto'.

y lo segundo...jaja sí, me mate pintando el código...No sabía como insertar el código en el lenguaje especifico. Lo pinté para seguir la norma, error de novato. Ahora aprendí. Saludos!  :D
Todo lo que es comprendido está bien.
"We.....Are.....One"

Novlucker

Es verdad! es error mío por haber visto el code rapidamente, esta bien el AND :P
Lo de tirarle un break es simplemente decir que cuando se cumpla la condición, ejecutes un break :P

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

JCDedalus

Finalmente logre hacer lo que quería, gracias por tu ayuda Novlucker. No posteo la solución para que otros lo intenten. Como pista diré que definir una función no servía para resolver el problema.  :D Saludos!
Todo lo que es comprendido está bien.
"We.....Are.....One"

Meta

Está curiosa la aplicación de login y password.

Al introducir el password. ¿Sabes cómo se visualiza los * mientras escribes la contraseña?

Para que lo tengas en cuenta.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Shell Root

@Meta. Es una pregunta o recomendación?. De ser recomendación, dudo que lo tenga en mente y/o que lo necesite. xD
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

JCDedalus

Si te parece curioso posteo el codigo por si hay algo mal:
Código (Python) [Seleccionar]
while(1<2):
   name = raw_input('Ingrese su nombre de usuario: ')
   if name != 'Edward' and name != 'Antonio':
       print 'Nombre de usuario incorrecto'
   else:
       if name == 'Edward':
               pasw_edward = raw_input('Ingrese su contraseña: ')
               if pasw_edward != '12345':
                   print 'Contraseña incorrecta'
               else:
                   print 'Bienvenido a la sesión'
                   break
       elif name == 'Antonio':
               pasw_antonio = raw_input('Ingrese su contraseña: ')
               if pasw_antonio != '54321':
                   print 'Contraseña incorrecta'
               else:
                   print 'Bienvenido a la sesión'
                   break

Lo de los asteriscos la verdad no me lo había planteado, comenzé a aprender Python como primer lenguaje hace un par de semanas, y aún no tengo los conocimientos para hacer algo más o menos complejo, por lo que lo de ocultar la contraseña le omiti de mis planes. Claro que si me decís  como se hace sería genial.  ;)
Todo lo que es comprendido está bien.
"We.....Are.....One"

Shell Root

En la primera linea, no sería mejor poner,
Código (python) [Seleccionar]
while(1):

Creo que sería igual, no?
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

JCDedalus

Sí, se consigue el mismo resultado, lo escribí así porque solo había visto ejemplos con condiciones, no sabía que podías poner simplemente un valor.
Todo lo que es comprendido está bien.
"We.....Are.....One"