Noticias:

En 106 está prohibido fumar. (A no ser que compartas).

Menú Principal

Programacion

Iniciado por raul_isl, 10 de Abril de 2021, 00:20

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

raul_isl

Hola y bienvenidos todos a un nuevo tutorial de "Soy idiota y me gusta complicarme la vida".
Estoy intentando aprender programacion. He hecho un curso de logica de programacion, y mas o menos todo bien, pero en el ejercicio final, he visto como lo han creado, y no entiendo muy bien como funciona una cosa, y estoy dandome de cabezazos para intentar comprenderlo.
La cosa es un ejercicio de como hacer un cajero automatico, con su login, conteo de saldo y demas. Es Python
usuarioEnBD = "neo"
claveEnBD = "1234"
sesion = False
saldo = 100000
iniciar = True
def validarUsuario(usuario, clave) :
   global sesion
   if (usuario == usuarioEnBD and clave == claveEnBD) :
     sesion = True
     return True
   return False
def login() :
   global sesion
   if (sesion) :
     return True
   usuario = input("Digite usuario: ")
   clave = input("Digite contraseña: ")
   return validarUsuario(usuario, clave)
# def retirar(valor) :
#    global saldo
#    if (valor > saldo) :
#      return False, saldo
#    saldo = saldo - valor
#    return True, saldo
# def depositar(valor) :
#    global saldo
#    saldo = saldo + valor
#    return True, saldo
# def consultarSaldo() :
#    return True, saldo
# def accion(opcion) :
#    if (opcion == 1) :
#      valor = int(input("Digite el valor a consignar: "))
#      return depositar(valor)
 
#    if (opcion == 2) :
#      valor = int(input("Digite el valor a retirar: "))
#      return retirar(valor)
#    if (opcion == 3) :
#      return consultarSaldo()
 
#    return False, saldo
def ejecutar() :
   if not login() :
     print("usuario o contraseña inválido")
     return
   print("¿Qué desea hacer?")
   opcion = int(input("1 => Consignar, 2 => Retirar y 3 => Consultar saldo: "))
 
#    ok, saldo = accion(opcion)
#    if not ok :
#      print("No se realizó la acción, saldo:", saldo)
#    else:
#      print("Acción realizada correctamente, saldo:", saldo)
print("Bienvenido")
while (iniciar == True) :
   ejecutar()
   respuesta = input("¿Deseas realizar otra operación? (SI => s, si y NO => valor diferete de s, si): ")
   if (respuesta == "s" or respuesta == "si" or respuesta == "S" or respuesta == "SI") :
     iniciar = True
   else:
     iniciar = False
     print("Gracias por utilizar los servicios...")
     

Mas o menos pillo como funciona todo, menos el login. He indentado todo menos las funciones que he visto que afectan al login propiamente dicho, pero no consigo aclararme muy bien como lo hace. Lo que no entiendo es la parte de
def login() :
   global sesion
   if (sesion) :
     return True
   usuario = input("Digite usuario: ")
   clave = input("Digite contraseña: ")
   return validarUsuario(usuario, clave)
Si sesion esta declarada como False al inicio del codigo, estas diciendo que si sesion devuelve True, entonces pida el usuario y contraseña.
No le encuentro el sentido, deberia hacer la peticion si sesion fuese False, y no True
A menos que, al estar a la izquierda del if, ese return funcione como un else, y ese se ejecute asi solo en caso contrario de lo que pide return.

Orestes

Si llamaras una segunda vez a login(), sesion ya estará a true y se saltará pedir de nuevo los datos y llamar a validarUsuario(). Al meter un return en mitad de la función dentro de un condicional, si entra en el condicional la función termina ahí.

Sorry but you are not allowed to view spoiler contents.

Paradox

Un poco guarro pero sirve.

Lo que está haciendo es "si existe sesión sal de la función con un VERDADERO".
En caso contrario hace el resto de la función que básicamente es pedir user/pass y luego devolver el resultado de la función de validación del password, que será FALSO si la contraseña es incorrecta y VERDADERO en el caso de que sea correcto (como en el primer if de la función).
I am not under any orders to make the world a better place.

Orestes

El equivalente más claro sería

   if (!sesion) :
     usuario = input("Digite usuario: ")
     clave = input("Digite contraseña: ")
     return validarUsuario(usuario, clave)
   else :
     return true


Ni idea de programar python así que no sé si está bien escrito

Sorry but you are not allowed to view spoiler contents.

Paradox

Exacto, tal y cómo lo escribe Orestes es probablemente lo que haríamos en un lenguaje más "humano".

En el caso del código inicial es una forma de hacer un atajo dentro de la función en plan "si se cumple esa condición, sal con ese resultado" de modo que te ahorras usar elses, ya que no hace falta, porque el flujo del programa ya se ha cortado y por lo tanto no pasará por esas sentencias.

En el modo que lo ha escrito Orestes (negando la condición y usando el else) probablemente se entiende mejor.
I am not under any orders to make the world a better place.

raul_isl

Vale, mas o menos lo pillo. Gracias :laugh:

raul_isl

Ahora tengo una pregunta.
Si quisiera hacer una app, que lenguaje deberia aprender?
De Android libre deduzco que Javascript, pero solo veo tutos de Javascript para front end... y entiendo que eso es solo la parte visual, y no la parte interna. Me equivoco?

raul_isl

Otra pregunta. Como no os suicidais todos los putos dias?
Llevo como mas de una hora intentando a ver porque no se me ejecuta un puto script, si lo he copiado tal cual el ejemplo que me estaban dando, si voy a la pagina de ejemplo que dan, miro directamente el codigo fuente que funciona, y esta exactamente igual que todo lo que me han dicho que hiciera y yo he repetido pasito por pasito.

Y resulta que me faltaba un puto punto. Un punto. un .

Y el visual studio code se estaba quedando tan pancho, diciendo que todo estaba bien.

Orestes

Ah, la maravilla de los puntos o puntos y coma perdidos, qué tiempos... Luego te sale automático, te falla el código y vas como un águila, aquí falta.

De todas formas hay puntos y puntos, eh, no es lo mismo olvidarte un punto o punto y coma que tenga que terminar una instrucción o sea parte de la estructura del código que olvidarte un punto decimal en un dato :lol:

Cita de: raul_isl en 10 de Abril de 2021, 20:35
Ahora tengo una pregunta.
Si quisiera hacer una app, que lenguaje deberia aprender?
De Android libre deduzco que Javascript, pero solo veo tutos de Javascript para front end... y entiendo que eso es solo la parte visual, y no la parte interna. Me equivoco?

De esto ni idea

Sorry but you are not allowed to view spoiler contents.

raul_isl

Es un punto que para que una.. constante?¿ llamara a una... variable?
    let randomNumber = Math.floor(Math.random() * 100) + 1;
    const guesses = document.querySelector('.guesses');
    const lastResult = document.querySelector('.lastResult');
    const lowOrHi = document.querySelector('.lowOrHi');
    const guessSubmit = document.querySelector('.guessSubmit');
    const guessField = document.querySelector('.guessField');
    let guessCount = 1;
    let resetButton;

Justo el que esta delante del guesses dentro de document.querySelector

Últimos mensajes

Marvel Cinematic Universe de SofiDrypE
[Hoy a las 05:03]


Adivina la película de raul_isl
[Hoy a las 02:36]


Fotogramas de Mskina
[Ayer a las 20:02]


Mafia, conceptos básicos e hilo de dudas de Mskina
[Ayer a las 20:00]


Gran Guía de los Usuarios de 106 de Orestes
[Ayer a las 00:03]