Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: JCDedalus en 13 Octubre 2010, 22:12 pm



Título: [Python] Nombre de usuario y contraseña.
Publicado por: JCDedalus en 13 Octubre 2010, 22:12 pm
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:
Citar
name = 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!


Título: Re: [Python] Nombre de usuario y contraseña.
Publicado por: Novlucker en 13 Octubre 2010, 22:17 pm
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
  1. print('Hola Mundo')

Saludos


Título: Re: [Python] Nombre de usuario y contraseña.
Publicado por: JCDedalus en 13 Octubre 2010, 23:48 pm
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
  1. if name != 'Edward' and name != 'Antonio':
  2.  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


Título: Re: [Python] Nombre de usuario y contraseña.
Publicado por: Novlucker en 13 Octubre 2010, 23:50 pm
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


Título: Re: [Python] Nombre de usuario y contraseña.
Publicado por: JCDedalus en 14 Octubre 2010, 00:17 am
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!


Título: Re: [Python] Nombre de usuario y contraseña.
Publicado por: Meta en 14 Octubre 2010, 01:06 am
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.


Título: Re: [Python] Nombre de usuario y contraseña.
Publicado por: Shell Root en 14 Octubre 2010, 01:22 am
@Meta. Es una pregunta o recomendación?. De ser recomendación, dudo que lo tenga en mente y/o que lo necesite. xD


Título: Re: [Python] Nombre de usuario y contraseña.
Publicado por: JCDedalus en 14 Octubre 2010, 02:42 am
Si te parece curioso posteo el codigo por si hay algo mal:
Código
  1. while(1<2):
  2.    name = raw_input('Ingrese su nombre de usuario: ')
  3.    if name != 'Edward' and name != 'Antonio':
  4.        print 'Nombre de usuario incorrecto'
  5.    else:
  6.        if name == 'Edward':
  7.                pasw_edward = raw_input('Ingrese su contraseña: ')
  8.                if pasw_edward != '12345':
  9.                    print 'Contraseña incorrecta'
  10.                else:
  11.                    print 'Bienvenido a la sesión'
  12.                    break
  13.        elif name == 'Antonio':
  14.                pasw_antonio = raw_input('Ingrese su contraseña: ')
  15.                if pasw_antonio != '54321':
  16.                    print 'Contraseña incorrecta'
  17.                else:
  18.                    print 'Bienvenido a la sesión'
  19.                    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.  ;)


Título: Re: [Python] Nombre de usuario y contraseña.
Publicado por: Shell Root en 14 Octubre 2010, 02:45 am
En la primera linea, no sería mejor poner,
Código
  1. while(1):

Creo que sería igual, no?


Título: Re: [Python] Nombre de usuario y contraseña.
Publicado por: JCDedalus en 14 Octubre 2010, 03:05 am
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.


Título: Re: [Python] Nombre de usuario y contraseña.
Publicado por: Meta en 14 Octubre 2010, 03:32 am
Si te parece curioso posteo el codigo por si hay algo mal:
Código
  1. while(1<2):
  2.    name = raw_input('Ingrese su nombre de usuario: ')
  3.    if name != 'Edward' and name != 'Antonio':
  4.        print 'Nombre de usuario incorrecto'
  5.    else:
  6.        if name == 'Edward':
  7.                pasw_edward = raw_input('Ingrese su contraseña: ')
  8.                if pasw_edward != '12345':
  9.                    print 'Contraseña incorrecta'
  10.                else:
  11.                    print 'Bienvenido a la sesión'
  12.                    break
  13.        elif name == 'Antonio':
  14.                pasw_antonio = raw_input('Ingrese su contraseña: ')
  15.                if pasw_antonio != '54321':
  16.                    print 'Contraseña incorrecta'
  17.                else:
  18.                    print 'Bienvenido a la sesión'
  19.                    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.  ;)

¿Realmente es necesario usar break?


Título: Re: [Python] Nombre de usuario y contraseña.
Publicado por: [L]ord [R]NA en 14 Octubre 2010, 03:43 am
Si, para salir del while.