Curso Python. Volumen II: Primer Programa – Parte 2

Escrito por Javier Ceballos Fernández

Bienvenidos a la segunda parte de nuestro primer programa en Python. Hoy vamos a continuar con el ejercicio propuesto en nuestra anterior entrega del curso de Python del lunes, espero que os haya dado tiempo de probar cosillas y de ir perdiendo ese miedo a programar.Hoy vamos a finalizar el ejercicio del lunes, añadiendo las 2 funciones que faltaban y además crearemos un menú para nuestra aplicación. Así que pongámonos manos a la obra.

Las funciones que vamos a desarrollar hoy son:

  • Ver Saldo
  • Hacer Retirada

Ver Saldo

Este método mostrará el saldo de un cliente concreto

def verSaldo(clientes):
     #Este método visualiza el saldo de una cuenta concreta, es decir de un cliente.
     if len(clientes) > 0:
         cuenta = input('Por favor indique el numero de cuenta:')
         print('El saldo de la cuenta ' + int(cuenta) + ' es de: ' +int(clientes[int(cuenta)]['cuenta']['saldo']) + ' Euros')
     else:
         print('no exiten cuentas')
 
     input("Pulse Enter para continuar...")

Función verSaldo del nuestro primer programa

Para poder hacerlo tendremos que solicitar el número de cuenta del cliente y lo recuperaremos de la lista de clientes. Como se puede comprobar no es una operación complicada cuando ya sabemos movernos por la lista.

Hacer Retirada

En este método lo que debemos hacer es quitar saldo a un cliente.

def hacerRetirada(clientes):
# Este método realiza el decremento del saldo de un cliente.
if len(clientes) > 0:
	cuenta = input('Por favor indique el numero de cuenta al que desea hacer el ingreso:')	
	cantidad = input('Por favor indique la cantidad a retirar:')
	saldoActual=clientes[int(cuenta)]['cuenta']['saldo']
	clientes[int(cuenta)]['cuenta']['saldo']=saldoActual-int(cantidad)	
	print('Se ha realizado la retirada')
else:
	print('no exiten cuentas')
	input("Pulse Enter para continuar...")

Función hacerRetirada del nuestro primer programa

Entonces solicitaremos la cuenta que queremos disminuir su saldo y que cantidad. La resta se hace con el operador –

C= a – b

Recordar que puede que os de un error de tipado de datos, siempre lo podéis solucionar haciendo una conversión cast.

Y con esto terminaríamos lo que son las funciones. Ahora tendríamos que programar un menú y a través de él llamar a las distintas funciones.

Programación del menú de interacción del usuario

El código sería:

#Inicio del programa

while ('6'!= opcion):
opcion = input('''Por favor seleccione una operacion:
1 Ver cuentas
2 Crear cuenta
3 Ver saldo
4 Hacer ingreso
5 Hacer retirada
6 Exit
''')

if opcion == '1':
visualizarCuentas(clientes)
elif opcion == '2':
crearCuenta(clientes, numCuentas)
elif opcion == '3':
verSaldo(clientes)
elif opcion == '4':
hacerIngreso(clientes)
elif opcion == '5':
hacerRetirada(clientes)
os.system("CLS")

print('Fin del programa')
Menú principal de nuestra aplicación

Código para realizar el Menú de nuestra aplicación

Se puede comprobar que tenemos una nueva palabra reservada que es while, es una función que nos crea un bucle que la comprobación esta al inicio. Una manera fácil de entenderlo sería la siguiente:

Mientras se cumpla la condición hacer:

Sentencia 1

Sentencia 2

…..

Si os fijáis, lo que hemos hecho es guardar la opción introducida por teclado y luego con los if’s comprobar la opción. Dentro del “if” llamamos a la función, todas nuestras funciones tienen argumentos así que tenemos que ponerlo entre paréntesis. Las llamadas a las funciones siempre son del siguiente modo:

Sin parámetros

funcionX()

Con parámetros

funcionX(parámetro A, parámetro B)

Como veis si hay más de un parámetro estos se separan por comas. El código que tenemos arriba pintará un menú y esperará una entrada por teclado, si pulsas una opción del menú devolverá su resultado y al pulsar enter se volverá a mostrar el menú. Cuando se pulsa 6 se sale del programa.

La instrucción os.system(“CLS”) es para que limpie la pantalla, pero para poder usarla tenéis que añadir  al principio import os, pero en pyCharm lo que hará es poner una flecha hacia arriba delante del menú indicando que se limpiaría la pantalla. Si lo queréis comprobar solo tenéis que abrir la consola de Windows, ir a la carpeta donde tengáis el fichero main.py de la aplicación y ejecutar py main.py.

Su ejecución debería mostraros algo como esto:

Ejecucion del ejemplo Python en PyCharm

Ejecución del ejemplo Python en PyCharm

Deciros que para poder escribir tendréis que hacer click con el ratón donde estáis haciendo la ejecución. Y si lo ejecutáis por consola saldría algo así:

Ejecución del ejemplo Python en Consola

Ejecución del ejemplo Python en Consola

Ejecución del ejemplo Python en Consola

En esta última captura podéis ver lo que hace la ejecución de os.System(“CLS”). A continuación os dejo cómo quedaría todo el código:

import os

# Declaración de variables
clientes=[]
numCuentas=0
opcion = 0

#Declaración de métodos
def crearCuenta(clientes,numCuentas):
    #Este método lo que hace es crear una cuenta bancaria
    nombre = input('Introduzca nombre: ')
    apellido = input('Introduzca apellido: ')
    #Estamos creando una lista donde el index en vez ser un número es el nombre de la variable de este modo nos creamos una estructura
    cuenta ={'nombre':nombre,'apellido':apellido,'cuenta':{'saldo':0,'numeroCuenta':numCuentas}}
    clientes.append(cuenta)
    numCuentas += 1
    print("Cuenta creada")
    input("Pulse Enter para continuar...")
    return clientes,numCuentas

def visualizarCuentas(clientes):
    #Este método visualiza todas las cuentas que existen creadas en este momento, recorremos la lista mostrando sus elementos
    if len(clientes)>0:
        for cliente in clientes:
            print('Nombre: ' + cliente['nombre'])
            print('Apellido: ' + cliente['apellido'])
            print('Número de Cuenta: ' + str(cliente['cuenta']['numeroCuenta']))
            print('\n')
    else:
        print('No existen cuentas para listar')
    input("Pulse Enter para continuar...")


def verSaldo(clientes):
    #Este método visualiza el saldo de una cuenta concreta, es decir de un cliente.
    if len(clientes) > 0:
        cuenta = input('Por favor indique el numero de cuenta:')
        print('El saldo de la cuenta ' + cuenta + ' es de: ' +srt(clientes[int(cuenta)]['cuenta']['saldo']) + ' Euros')
    else:
        print('no exiten cuentas')

    input("Pulse Enter para continuar...")

def hacerIngreso(clientes):
    # Este método realiza el incremento del saldo de un cliente.
    if len(clientes) > 0:
        cuenta = input('Por favor indique el numero de cuenta al que desea hacer el ingreso:')
        cantidad = input('Por favor indique la cantidad a ingresar:')
        saldoActual=clientes[int(cuenta)]['cuenta']['saldo']
        clientes[int(cuenta)]['cuenta']['saldo']=saldoActual+int(cantidad)
        print('Se ha realizado el ingreso')
    else:
        print('no exiten cuentas')
    input("Pulse Enter para continuar...")

def hacerRetirada(clientes):
    # Este método realiza el decremento del saldo de un cliente.
    if len(clientes) > 0:
        cuenta = input('Por favor indique el numero de cuenta al que desea hacer el ingreso:')
        cantidad = input('Por favor indique la cantidad a retirar:')
        saldoActual=clientes[int(cuenta)]['cuenta']['saldo']
        clientes[int(cuenta)]['cuenta']['saldo']=saldoActual-int(cantidad)
        print('Se ha realizado la retirada')
    else:
        print('no exiten cuentas')
    input("Pulse Enter para continuar...")

#Inicio del programa

while ('6' != opcion):
    opcion = input('''Por favor seleccione una operacion:
    1 Ver cuentas
    2 Crear cuenta
    3 Ver saldo
    4 Hacer ingreso
    5 Hacer retirada
    6 Exit
    ''')

    if opcion == '1':
        visualizarCuentas(clientes)
    elif opcion == '2':
        crearCuenta(clientes, numCuentas)
    elif opcion == '3':
        verSaldo(clientes)
    elif opcion == '4':
        hacerIngreso(clientes)
    elif opcion == '5':
        hacerRetirada(clientes)
    os.system("CLS")

print('Fin del programa')

Código completo de la aplicación Python

Esto es todo por hoy, espero que con esto hayáis perdido el miedo. Sé que os surgirán muchas dudas, pero a lo largo de las próximas semanas estoy seguro que se irán despejando según vayan saliendo las próximas entregas, porque os iremos enseñando a manejar listas, comparaciones, bucles, etc. Que son las cosas que hemos utilizado en este ejemplo. De modo que cuando lleguemos a programación orientada objetos solo nos tengamos que preocupar de este paradigma de programación y no de cómo se usa el lenguaje.

Continúa leyendo
  • patriots

    Hola
    Javier, estoy siguiendo el curso de Python. No se si era una prueba de tu parte, pero al momento de ejecutar el programa se presentaba un error en la linea 38 investigue un poco y encontré que el int no se puede combinar con una cadena, por tanto se debe utilizar el str, entonces la linea 38 quedaría de la siguiente manera :

    print(‘El saldo de la cuenta ‘ + str(cuenta) + ‘ es de: ‘+str(clientes[int(cuenta)][‘cuenta’][‘saldo’]) + ‘ Euros’)

    Solo se cambio el int por str

    Por otro lado me gustaría que al momento de crear una cuenta esta quede grabada en el programa (memoria),de la misma manera los Saldos. Me puedes dar algunas pistas Gracias.

    • Hola,

      Ahora mismo el programa guarda toda la información en memoria. Si lo que quieres es guardar en disco, habría que implementar una lectura y escritura en un fichero. Esto sería lo mas sencillo y en próximas entregas explicaremos como se haría. Ahora como consejo, si lo que quieres es tener datos precargados, pon en código lo siguiente:

      cuenta1 ={‘nombre’:Javier,’apellido’:Ceballos,’cuenta’:{‘saldo’:100,’numeroCuenta’:0}}
      cuenta2 ={‘nombre’:Raul,’apellido’:Jimenez,’cuenta’:{‘saldo’:100,’numeroCuenta’:1}}
      cuenta3 ={‘nombre’:Ruben,’apellido’:Fernandez,’cuenta’:{‘saldo’:100,’numeroCuenta’:2}}
      clientes.append(cuenta1)
      clientes.append(cuenta2)
      clientes.append(cuenta3)
      Y ya tendrás datos precargados. Lo puedes colocar donde declaras las variables o después del comentario #Inicio del programa. Y no se te olvide cambiar el valor de numCuentas=0 por numCuentas=3.

      Espero que esto te haya resuelto tu duda.

      Un saludo.

      (Comentario de Javier)

      • Javier Ceballos

        Hola,
        Ahora mismo el programa guarda toda la información en memoria. Si lo que quieres es guardar en disco, habría que implementar una lectura y escritura en un fichero. Esto sería lo mas sencillo y en próximas entregas explicaremos como se haría. Ahora como consejo, si lo que quieres es tener datos precargados, pon en código lo siguiente:
        cuenta1 ={‘nombre’:Javier,’apellido’:Ceballos,’cuenta’:{‘saldo’:100,’numeroCuenta’:0}}
        cuenta2 ={‘nombre’:Raul,’apellido’:Jimenez,’cuenta’:{‘saldo’:100,’numeroCuenta’:1}}
        cuenta3 ={‘nombre’:Ruben,’apellido’:Fernandez,’cuenta’:{‘saldo’:100,’numeroCuenta’:2}}
        clientes.append(cuenta1)
        clientes.append(cuenta2)
        clientes.append(cuenta3)
        Y ya tendrás datos precargados. Lo puedes colocar donde declaras las variables o después del comentario #Inicio del programa. Y no se te olvide cambiar el valor de numCuentas=0 por numCuentas=3.

        Espero que esto te haya resuelto tu duda.

        Un saludo.

        • patriots

          Ok. GRACIAS.

          Saludos.

  • Juan

    Gracias, excelente tuto empesando con cosas serias muy bine estuve practicando mas y le añadí cosillas extras como mostrar el propietario de la cuenta para asegurarse que sea la correcta en ingreso y retirada muy bien, gracias de nuevo esperando mas

  • Dario Abadie

    Buenos dias! Me encanta tener que ponerme a programar e ir aprendiendo en el transcurso, en lugar de estudiar toda la teoría y luego escribir solo un par de lineas. El curso es fantástico!
    Saludos desde Argentina

  • Carlos Sánchez

    Oigan, no me aumenta el contador del numero de Cuentas “numCuentas”.
    Visualmente ma aparece que las cuentas tienen el numero de cuenta “0” y sólo se actualiza en la lista de la memoria.
    Cómo lo puedo solucionar??

    • Rulo San

      yo lo solucionado modificando la función crearCuenta
      por un lado se define solo con una variable crearCuenta(clientes)
      y luego dentro de la funcion añades
      global numCuentas

      def crearCuenta(clientes):
      globa numCuentas
      .
      .
      .
      .
      no se si será lo mas correcto pero funciona.
      De todas maneras el resto de llamadas a las cuentas no busca realmente el numero de cuenta si no por indice la lista clientes, es decir, si en lugar de poner numCuentas= 0 la incializas numCuentas= 10 si añades un registro y quieres ver el saldo, si pones cuenta = 10 no funciona , pero si pones cuenta = 0 si
      supongo que mas adelante aprenderemos a buscar un registro concreto

      • Omar Cordero

        Amigo, acabas de quitarme de dolores de cabeza. Estuve por horas rompiéndome la cabeza por tratar de resolver el incremento y no había logrado mucho después de varios intentos.

        Tu solución relamente funciona y tiene lógica. Solo cabe resaltar que como se modifico la función ‘crearCuenta’ que recibe un solo parámetro (clientes), hay que modificar también la llamada de la función dentro del if (opcion).

        Gracias por tu aporte.

Últimos análisis

Valoración RZ
9
Valoración RZ
8
Valoración RZ
8
Valoración RZ
8
Valoración RZ
8
Valoración RZ
10
Valoración RZ
8