Archivos mensuales: julio 2015

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

Episodio 1 – (Casi) Un mes de PItando. Qué está por venir

PItando podcast, logoEn este episodio del podcast repaso este (casi) un mes en PItando, el primero, en lo que se refiere sobre todo a Python, y explico por qué me he centrado tanto en este lenguaje de programación.
 
Básicamente, de lo que hablo en esta entrada es de la proyección que tiene Python en la Raspberry Pi y en la industria por sí mismo, y por qué es conveniente para el aprendizaje en la programación más allá de su orientación a la sencillez y al aprendizaje.
 
Para terminar, doy unas pistas sobre lo que está por venir en PItando, como proyecto.
 
Disponible en iTunes y en iVoox.
 
Este podcast comienza, y termina, con una sintonía compuesta por Eric Skiff, “We’re the Resistors“.

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.

Escribir programas ejecutables en Python. La línea de comandos.

Hasta ahora hemos hecho todos nuestros experimentos usando directamente IDLE, el entorno de programación propio de Python. Hemos visto una serie de conceptos básicos para comenzar a entender el lenguaje, y ya estaríamos en condición de escribir nuestros propios programas, es decir: más allá de probar sentencias en IDLE, escribir los programas en un fichero para ejecutarlos directamente desde el sistema operativo.

En esta entrada vamos a ver dos cosas: cómo se escribe un programa en Python de una forma que luego sea posible usarla, y por otro lado, una de las muchas formas en las que nuestros programas pueden recibir datos con los que trabajar y con la que realmente ya estamos familiarizados gracias al artículo sobre el terminal: la línea de comandos. De paso, entraremos en contacto con la inclusión de funcionalidad ya existente en nuestros programas: las librerías y cómo incluirlas.

Sigue leyendo Escribir programas ejecutables en Python. La línea de comandos.

Uso del terminal (o la consola) en la Raspberry Pi

El terminal, o “la consola” es una aplicación de uso muy frecuente cuando se trata de sistemas Linux como es la Raspberry Pi, y en otros sistemas tipo Unix como puede ser, por ejemplo, Mac OS X. Sobre todo, cuando pensamos en un usuario que hace tareas técnicas como es, por ejemplo, programar. El terminal es un intérprete de órdenes basado en texto que permite manejar la totalidad de un sistema operativo. De hecho es, en sí, un intérprete parecido al de Python que vimos en la entrada correspondiente, y por eso las órdenes que ejecutamos pueden llegar a formar parte de un programa con el que automatizar un montón de procesos, en su propio lenguaje particular.

Sigue leyendo Uso del terminal (o la consola) en la Raspberry Pi