Curso Python. Volumen II: Primer Programa – Parte 2

Curso Python. Volumen II: Primer Programa – Parte 2

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.