Archivo de la etiqueta: Python

Nuestro primer prototipo con la Raspberry Pi

Esta semana vamos ya a meter las manos en la masa. Montaremos un prototipo básico que programaremos desde la Raspberry Pi, gracias al kit de inicio orientado a la electrónica que os enseñaba unas semanas atrás. Este kit incluye una placa de prototipado, en la que podemos montar circuitos electrónicos de una forma muy fácil y sin necesidad de soldadura ni herramientas especiales: con nuestras propias manos.

Lo que haremos será un programa en Python con el que poder encender y apagar un LED (Light-Emitting Diode, diodo emisor de luz) a nuestro antojo.

Sigue leyendo Nuestro primer prototipo con la Raspberry Pi

Soluciones a los ejercicios de funciones y módulos de Python

La semana pasada os dejaba dos ejercicios como parte del artículo de funciones y módulos de Python. Se trataba de hacer una calculadora de la siguiente forma: Programa una calculadora que funcione por línea de comandos para las operaciones de suma, resta, multiplicación y división, y para un máximo de 2 números enteros (sumar, restar, multiplicar y dividir dos números enteros). Debe reconocer los símbolos usuales de estas operaciones: “+”, “-“, “*” y “/”. Debes usar funciones, una para cada operación. Captura de pantalla 2015-07-11 19.23.00 Ten en cuenta, eso sí, dos cosas que no tienes por qué saber aún:

  • Los valores numéricos llegarán a tu programa a través de la línea de comandos como cadenas, siempre. Es decir, cuando pases como parámetro un 2, tu programa Python entenderá “2” y no 2. Para que tus operaciones aritméticas funcionen bien, fuerza una conversión a números con la función int(), a la que le pasarás como parámetro cada argumento que quieras que se interprete como un número entero.
  • Ésta ya la habrás podido notar en la imagen superior 🙂 En Linux y en Mac OS X, el asterisco “*” es un caracter especial para el Terminal y lo interpretará antes de pasárselo a tu programa Python. Para que llegue un asterisco a tu programa, cuando lo pruebes tendrás que escapar el asterisco usando una barra invertida, : ./calculadora.py 2 * 3. Esto no ocurrirá en Windows.

Posteriormente, había un segundo ejercicio que trataba de mejorar la calculadora anterior para que usase un módulo. Vamos con las soluciones Sigue leyendo Soluciones a los ejercicios de funciones y módulos de Python

Funciones y módulos en Python

Este artículo es el último de la primera serie de Python que quiero hacer en PItando, y cierra el círculo de las técnicas más básicas necesarias para empezar ya a ponernos a hacer experimentos. En este artículo explicaré cómo se programan funciones en Python, y cómo agrupando funciones en archivos especiales conseguimos librerías propias que poder incluir en cualquiera de nuestros programas. Por último os propondré como ejercicio una calculadora sencilla que acepte sus parámetros por la línea de comandos.

¿Apetece? Pues al lío

Sigue leyendo Funciones y módulos en Python

Solución al ejercicio de programas ejecutables y línea de comandos

La semana pasada planteaba un problema partiendo del siguiente programa:

#!/usr/bin/python3
import sys

# usuario = "lector de PItando"
usuario = sys.argv[1]
print("Hola, ", usuario)

exit(0)

El ejercicio decía así:

Modifica el programa para que funcione de la siguiente forma:

  1. Si su primer argumento es “?” imprima un mensaje para ayudarnos a usarlo, en el que salga el nombre del programa ejecutable (para lo que tendrás que usar la variable sys.argv).
  2. Si no se especifica ningún argumento, debe saludar al lector (“Hola, lector“).Para detectar la longitud de una lista, usa la función len(lista).
  3. También haz que junte todos los argumentos en el mensaje de saludo. Para eso, ten en cuenta que en Python podemos juntar varias cadenas en una sola “sumándolas”:
cadena = "Hola" + ", Mundo"
# Cadena tendrá como valor "Hola, Mundo"

Vamos con la solución.

Sigue leyendo Solución al ejercicio de programas ejecutables y línea de comandos

Soluciones a los ejercicios de bucles y condiciones

La semana pasada teníamos 2 ejercicios que resolver. Aquí van las soluciones.

1) Escribe un programa en IDLE que escriba aquellos números entre 1 y 100 que:

  • Sean pares
  • No sean múltiplos de 4
  • Tampoco sean múltiplos de 3.

Escríbelo dos veces: una con un bucle while y otra usando un bucle for.

Voy a empezar explicando la condición que indica si un número se debe escribir, o no. Si la leemos en castellano, deberíamos decir:

Si el resto de dividir el número entre 2 es 0, pero no se cumple que el resto de dividir el número entre 3 sea 0, ni entre 4, imprimirlo.

Dicho en “términos lógicos” usando los operadores de la semana pasada, diríamos que la condición a evaluar es:

numero % 2 == 0 and numero % 3 != 0 and numero % 4 != 0

También podemos escribirla de una forma alternativa si pensamos que debemos imprimirlo si no se cumple que numero % 3 == 0 ó numero % 4 == 0:

numero % 2 == 0 and not (numero % 3 == 0 or numero % 4 ==0)

Usa la que veas más clara; a medida que practiques cogerás soltura con estas alternativas y esta forma de escribir las condiciones lógica. Yo usaré la segunda.

Bucle while (es posible que te tengas que desplazar a la derecha para verlo todo):

numero = 1
while numero < 100:
    if numero % 2 == 0 and not (numero % 3 == 0 or numero % 4 == 0):
        print(numero)
    numero = numero + 1

Bucle for (es posible que te tengas que desplazar a la derecha para verlo todo):

del1al100 = range (1, 101)
for numero in del1al100:
    if numero % 2 == 0 and not (numero % 3 == 0 or numero % 4 == 0):
        print(numero)

En ambos casos la respuesta debe ser la siguiente:

Captura 20150628 - 5

2) Usando for, haz que Python escriba todas las tablas de multiplicar, del 1 al 10:

La solución a este problema consiste en anidar bucles: hacer un bucle dentro de otro. Así (es posible que te tengas que desplazar a la derecha para verlo todo):

for multiplicador in range (1, 11):
    print("Tabla de multiplicar del", multiplicador)
    for multiplicando in range (1, 11):
        print(multiplicando, "*", multiplicador, "=", multiplicando*multiplicador)
    print("==========================")
    print() # línea en blanco.

En este caso he incluido tres de sentencias para formatear un poco el resultado y que quede más legible, y he usado directamente la llamada a range(...) en las condiciones de los bucles.

También habría podido usar un caracter especial,\n, al final del print("=========================="), así: print("==========================\n"). Ese caracter hace que se imprima una línea en blanco, haciendo innecesaria la sentencia print(). Cualquiera de las dos opciones acabaría dejando la salida así (no la reproduzco toda):

Captura de pantalla 2015-07-05 17.14.04

Y esto es todo. Si hay algo que no entiendas, no dudes en dejar un comentario o contactar a través del formulario exponiendo cualquier duda.