Archivo de la etiqueta: Programación

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.

Un primer programa en Python

Python es el lenguaje de programación “oficial” de la Raspberry Pi. Es un lenguaje que nació a finales de la década de los 80 de la mano de Guido Van Rossum (Haarlem, Países Bajos, 1956).

A lo largo de sus muchos años de historia ha ido evolucionando con una idea fundamental que es la sencillez a la hora de aprender a usarlo. Es decir, el lenguaje es muy completo y permite hacer muchísimas cosas, pero la idea general es que “debería haber sólo una forma, obvia, de hacer las cosas”.

Al final esto significa que, en general, Python no llama a engaños y trata de conseguir que fallemos pocas veces cuando intentamos hacer algo. Vamos a probarlo y a poner las manos en unos primeros conceptos muy sencillos para empezar a pensar en programar.

Sigue leyendo Un primer programa en Python

¿Qué es programar?

Una de las cosas que puedes hacer con la Raspberry Pi tan pronto como la pones en marcha es programarla.

Programar es decirle a un aparato electrónico qué pasos debe seguir para hacer algo útil. Por ejemplo, dibujar una forma en la pantalla, reaccionar cuando pulsas teclas en un teclado o un botón, emitir sonidos por un altavoz, encender y apagar una luz,… cualquier cosa que veas hacer a un aparato electrónico tiene detrás un programa. Es como un guión.

La Raspberry Pi es un ordenador, y los ordenadores son aparatos electrónicos fabricados sin un propósito concreto, es decir: de propósito general. Esto quiere decir que, con más o menos esfuerzo, pueden hacer cualquier cosa. Por ejemplo, un vídeo sólo se puede programar para grabar un programa a una cierta hora: su propósito es concreto. Un ordenador se puede programar para que haga lo mismo que un vídeo, o cálculos complicados, para jugar (un videojuego es un programa), para que reproduzca música, o para que vigile la temperatura de una habitación, o para que saque fotos a la puerta si se abre…

Programar es una técnica que proviene de las matemáticas (sí, las matemáticas; si no te gustaban y no lo sabías, espero que a partir de ahora las veas de otro modo) y aunque lleva muchos siglos usándose de una u otra forma gracias a personas como Charles Babbage y Ada Lovelace entre otras muchísimas, ha servido para construir el mundo que conocemos desde que en la década de 1940 aparecieron los primeros ordenadores modernos.

Grace Murray Hopper fue una mujer importantísima en la historia de la computación y la programación moderna. Pulsa en la foto para saber más de ella.

En la foto puedes ver el primer ordenador comercial de la historia. Ni siquiera tenía pantalla y era muy rudimentario de programar, necesitaba muchísima electricidad para funcionar y los resultados eran complicados de interpretar. Entre esa foto y la Raspberry pasaron más o menos 50 años, y ahora es mucho más fácil. Con una pantalla, unos altavoces y un teclado, la Raspberry puede hacer cosas increíbles fácilmente si sabes decirle cómo, pero sólo verás los resultados por la pantalla y los altavoces. Pero si le conectas más cosas (como un robot o una cámara) podrá hacer todavía más.

En siguientes artículos vamos a ir paso a paso aprendiendo a programar con un lenguaje llamado Python (que se dice más o menos “payton”). Es fácil de entender y muy potente, y la Raspberry lo incluye “de serie”. Pero como lo importante es entender un problema para saber qué hay que programar, en cuanto sepamos lo básico haremos siempre ejercicios prácticos; escribir el programa en el lenguaje Python, o en cualquier otro, es mucho menos importante y mucho menos divertido que aprender a “pensar” como lo haría un ordenador.