create account

Aprender a programar DESDE CERO (Parte 4) -- Leyendo datos por teclado by juancrdrums

View this thread on: hive.blogpeakd.comecency.com
· @juancrdrums ·
$2.70
Aprender a programar DESDE CERO (Parte 4) -- Leyendo datos por teclado
>Nota: Antes de leer este post, se recomienda leer la [tercera parte](https://steemit.com/spanish/@juancrdrums/aprender-a-programar-desde-cero-mis-primeras-lineas-en-python-parte-3) de este tutorial.
>ACLARACIONES IMPORTANTES:
>1. En estos tutoriales no se abordan temáticas excesivamente profundas y no se hace énfasis en aprender muchos lenguajes de programación ni muchos frameworks. El objetivo es entender qué es programar y cuál es la lógica necesaria para hacerlo.
 >2. No utilizo ningún libro o fuente externa para hacer estos tutoriales. Soy estudiante de cuarto año de Ingeniería en Sistemas, por lo que toda la información que doy acá ha sido extraída de mis clases en la universidad y de lo que he consultado por mis propios medios en ocasiones anteriores. En caso de utilizar conocimiento sacado de otras fuentes, haré claridad. Así mismo, para el caso de las imágenes, citaré la fuente en el caso de que no sean mías. Las imágenes que no aparecen con su fuente abajo son hechas por mí.
>3. Todos los códigos trabajados en este tutorial pueden ser consultados y descargados en el [repositorio de GitHub](https://github.com/JuanCRdrums/CursoSteemit) creado para este fin.

¡Hola, gente de Steemit! Hoy continuamos con este curso básico de programación. En el [anterior capítulo](https://steemit.com/spanish/@juancrdrums/aprender-a-programar-desde-cero-mis-primeras-lineas-en-python-parte-3) les mostré cómo mostrar mensajes en pantalla y empezamos a trabajar con variables. Si hay alguna duda respecto a esos dos temas, pueden dirigirse a ese [capítulo](https://steemit.com/spanish/@juancrdrums/aprender-a-programar-desde-cero-mis-primeras-lineas-en-python-parte-3). En esta ocasión, aprenderemos algo que es fundamental para todo programador y que nos permitirá hacer nuestros primeros programas *prácticos*: **La lectura de datos por teclado**. ¡Vamos!

<center>
![](https://cdn.steemitimages.com/DQmeHr8HA9oFDZfLqExsqGcxnTvje2VxRZiwvNRstGV4XqC/imagen.png)
[Fuente](https://files.merca20.com/uploads/2017/07/programacion.jpg)
</center>
<br>
## ¿Por qué es importante saber leer datos?
<br>
En determinados contextos, la programación puede definirse como *un método para crear sistemas informáticos*. Detengámonos un poco en la palabra ***"SISTEMAS"***. Es un término que usamos muy a menudo, pero que en ocasiones ni siquiera sabemos explicar. En el contexto de la informática, un sistema se puede definir como *un conjunto de partes relacionadas que tienen una entrada, un procesamiento, una salida y una retroalimentación (opcional)*. Esta definición se puede entender mejor con el siguiente gráfico:

<center>
![](https://cdn.steemitimages.com/DQmT3coQSSsyHe4VoMZnJz5G2JffHFGy73oqsT4b2wUUWFP/imagen.png)
[Fuente](http://editlife.net/wp-content/uploads/2018/05/7872217_orig-1.png)
</center>

En el [capítulo anterior](https://steemit.com/spanish/@juancrdrums/aprender-a-programar-desde-cero-mis-primeras-lineas-en-python-parte-3) empezamos aprendiendo a dar *salidas* para los sistemas que vamos a programar. Además, a través del manejo de variables estamos en la capacidad de hacer *procesamiento de datos*, pues con estas variables podemos efectuar una gran cantidad de modificaciones (como las operaciones matemáticas, por ejemplo). Pues bien, para completar nuestro primer sistema informático debemos aprender a darle *entradas* al mismo. Eso es justo lo que vamos a hacer hoy. 
<br>
## Leyendo números en Python
<br>
Python, como todo lenguaje de programación, tiene herramientas para leer y mostrar datos. Como ya sabemos (ver [capítulo anterior](https://steemit.com/spanish/@juancrdrums/aprender-a-programar-desde-cero-mis-primeras-lineas-en-python-parte-3)), la función que se utiliza para mostrar datos en pantalla se llama *print*. Pues bien, Python tiene dos funciones para leer datos por teclado. En esta sección trabajaremos una de ellas: **input()**

La función **input()** sirve para leer **datos numéricos** por teclado. Estos datos incluyen todo el conjunto de los **números reales** (ojo, la programación lleva muchas matemáticas. **A ESTUDIAR**). Para usarla, es necesario *asignarla* a la variable que se quiere leer (con el ejemplo de código entenderán de manera sencilla lo que les acabo de decir). Además, dentro del paréntesis y entre comillas se puede poner un mensaje en el que se le indica al usuario que debe ingresar un dato. La siguiente es una línea de código que se puede usar para pedir un número por teclado:

```python
a = input("Ingrese un número: ")
```
<br>
En el caso anterior, en la consola aparecerá el mensaje "Ingrese un número: " y se esperará a que el usuario ingrese el dato y aprete la tecla *enter* para continuar la ejecución del programa. Además, el dato ingresado por el usuario quedará guardado en la variable *a*. Veamos el código completo de un programa que simplemente solicita un número y luego lo muestra en pantalla:

```python
#!/usr/bin/env python
# -*- coding: utf-8 -*-

if __name__ == '__main__':
    a = input("Ingrese un número: ")
    print "Número ingresado: ", a
```
<br>
- **NOTA:** No se estresen con las dos primeras líneas de código. Simplemente se trata de un indicador que le dice al intérprete de python que codifique los caracteres en *utf-8*. Este sistema permite el procesamiento de tildes y la letra ñ. Como casi todos los lenguajes de programación fueron codificados en inglés, normalmente los intérpretes y compiladores no permiten el uso de tildes. Sin embargo, con estas dos líneas de código el intérprete de Python las acepta. 

En el código anterior se le pide un número al usuario, el cual queda guardado en la variable *a* (como lo expliqué anteriormente). Además, con la función *print* se muestra el número ingresado. Noten que la función *print* puede mostrar varias cosas a la vez en una sola línea. En este caso estamos mostrando un mensaje (entre comillas) y luego el valor que hay almacenado en la variable *a*. Siempre que se haga esto, los mensajes y las variables deben estar separados por una coma (como en el código que les acabo de mostrar). 

*El código mostrado anteriormente puede ser consultado y descargado en el [repositorio de Github](https://github.com/JuanCRdrums/CursoSteemit) del curso. Se encuentra en el archivo leerDatos.py*

![](https://cdn.steemitimages.com/DQmdeyBYvHWF5KxgsLNxr6L7ypijHC9LJ86nRkhdHTnKnNY/imagen.png)

## Primer programa práctico

Con la lectura de números por teclado es posible realizar nuestros primeros programas con utilidad práctica. En este caso, vamos a codificar un ejemplo sencillo: Un programa que, dado el radio de una circunferencia, permita calcular el área de la misma. Para hacer este programa es necesario saber dos cosas: 

- La ecuación para hallar el área de una circunferencia es:
> a = pi*r²
, en donde *a* es el área de la circunferencia, *pi* es la constante que representa la relación entre el perímetro de toda circunferencia y su radio, y r es el radio de la circunferencia (distancia entre el centro y uno de sus bordes).

- La constante *pi* es un número irracional, por lo que sus cifras decimales son infinitas. Python permite el manejo de este tipo de números, aunque siempre los aproxima a un número determinado de cifras decimales. Por esa razón, para esta implementación trabajaremos con 3.1416 como valor de *pi* aproximado a cuatro cifras decimales. 

Veamos el código:

``` python
#!/usr/bin/env python
# -*- coding: utf-8 -*-

if __name__ == '__main__':
    pi = 3.1416
    r = input("Ingrese el radio de la circunferencia: ")
    a = pi*(r**2)
    print "El área de la circunferencia es ", a

```
<br>
Analicemos el código anterior:

- Primero se asigna el valor de *pi* a una variable. Como la creatividad sobra, decidí ponerle como nombre a esta variable *"pi"*. Esta es una buena práctica: El nombre de las variables debe ser corto pero muy descriptivo. Con un solo vistazo le debe permitir al programador recordar de qué se trata. 

- Luego se le pide al usuario el valor del radio de la circunferencia y se guarda en la variable *r*. 

- A continuación, se hace la operación para hallar el área de la circunferencia con la fórmula explicada más arriba. El resultado de esta operación se almacena en la variable *a*. 

- Por último, se muestra el área calculada. 

**NOTA:** El código mostrado anteriormente puede ser consultado y descargado en el [repositorio de GitHub](https://github.com/JuanCRdrums/CursoSteemit) del curso. El archivo se llama *circunferencia.py*. 

![](https://cdn.steemitimages.com/DQmdeyBYvHWF5KxgsLNxr6L7ypijHC9LJ86nRkhdHTnKnNY/imagen.png)

## Leyendo texto

Es importante recordar que la función **input()** solamente sirve para leer datos numéricos por teclado. Si se quiere leer texto, es necesario utilizar otra función de Python: **raw_input()**. Su funcionamiento es muy similar al de la función **input()**. Este se ilustra en la siguiente línea de código:

```python
nombre = raw_input("Ingrese su nombre: ")
```
<br>
En el caso anterior, el texto ingresado por el usuario quedará almacenado en la variable *nombre*. Teniendo en cuenta esto, es posible hacer un programa que le pida al usuario su nombre y su apellido, y que luego muestre en pantalla el nombre completo (nombre seguido del apellido). Veamos el código:

```python
#!/usr/bin/env python
# -*- coding: utf-8 -*-

if __name__ == '__main__':
    nombre = raw_input("Ingrese su nombre: ")
    apellido = raw_input("Ingrese su apellido: ")
    print "Usted se llama ", nombre, " ", apellido
```
<br>
Sencillo, ¿no? Recordemos el uso de la función *print* para mostrar múltiples mensajes y variables explicado más arriba. Noten que en este caso estamos mostrando varios mensajes y variables a la vez. Por ejemplo, si yo ingreso *Juan Camilo* en el nombre y *Rojas* en el apellido, el programa me mostrará: *Usted se llama Juan Camilo Rojas*. 

**NOTA:** El código mostrado anteriormente puede ser consultado y descargado en el [repositorio de GitHub](https://github.com/JuanCRdrums/CursoSteemit) del curso. El archivo se llama *ingresarStrings.py*. 

![](https://cdn.steemitimages.com/DQmdeyBYvHWF5KxgsLNxr6L7ypijHC9LJ86nRkhdHTnKnNY/imagen.png)

## A practicar

Como en cualquier disciplina, en la programación *la práctica hace al maestro*. Por esa razón, de ahora en adelante, en cada post propondré algunos ejercicios útiles para practicar los conceptos aprendidos. Empecemos: 

> 1. Hacer un programa que pida por teclado la base y la altura de un triángulo, y que luego muestre su área.
> 2. Hacer un programa que lea por teclado la medida del lado de un cuadrado y muestre su perímetro.
> 3. Hacer un programa que lea 5 datos numéricos y calcule su promedio.
> 4. Hacer un programa que lea el nombre del usuario y su edad. Teniendo en cuenta que estamos en el año 2018, le debe decir al usuario cuál es su nombre y en qué año nació. 

![](https://cdn.steemitimages.com/DQmdeyBYvHWF5KxgsLNxr6L7ypijHC9LJ86nRkhdHTnKnNY/imagen.png)

Hasta aquí va la cuarta parte de este tutorial. Espero haber sido claro con las explicaciones y que la información haya sido útil. Si surgen dudas al respecto, las atenderé con gusto en los comentarios o en mi correo electrónico personal (juankdrums14@gmail.com). Si les gustó el post, no olviden dar upvote y resteem. Nos reencontramos pronto.
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 16 others
properties (23)
authorjuancrdrums
permlinkaprender-a-programar-desde-cero-parte-4-leyendo-datos-por-teclado
categoryspanish
json_metadata{"tags":["spanish","cervantes","tutoriales","ingenieria","tecnologia"],"image":["https://cdn.steemitimages.com/DQmeHr8HA9oFDZfLqExsqGcxnTvje2VxRZiwvNRstGV4XqC/imagen.png","https://cdn.steemitimages.com/DQmT3coQSSsyHe4VoMZnJz5G2JffHFGy73oqsT4b2wUUWFP/imagen.png","https://cdn.steemitimages.com/DQmdeyBYvHWF5KxgsLNxr6L7ypijHC9LJ86nRkhdHTnKnNY/imagen.png"],"links":["https://steemit.com/spanish/@juancrdrums/aprender-a-programar-desde-cero-mis-primeras-lineas-en-python-parte-3","https://github.com/JuanCRdrums/CursoSteemit","https://files.merca20.com/uploads/2017/07/programacion.jpg","http://editlife.net/wp-content/uploads/2018/05/7872217_orig-1.png"],"app":"steemit/0.1","format":"markdown"}
created2018-11-07 06:14:48
last_update2018-11-07 06:14:48
depth0
children6
last_payout2018-11-14 06:14:48
cashout_time1969-12-31 23:59:59
total_payout_value2.053 HBD
curator_payout_value0.643 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length11,265
author_reputation915,821,502,421
root_title"Aprender a programar DESDE CERO (Parte 4) -- Leyendo datos por teclado"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id74,832,983
net_rshares2,537,378,579,178
author_curate_reward""
vote details (80)
@developspanish ·
Excelente Tutorial :D
👍  
properties (23)
authordevelopspanish
permlinkre-juancrdrums-aprender-a-programar-desde-cero-parte-4-leyendo-datos-por-teclado-20181107t072253533z
categoryspanish
json_metadata{"tags":["spanish"],"app":"steemit/0.1"}
created2018-11-07 07:22:27
last_update2018-11-07 07:22:27
depth1
children1
last_payout2018-11-14 07:22:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length21
author_reputation4,482,396,340,474
root_title"Aprender a programar DESDE CERO (Parte 4) -- Leyendo datos por teclado"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd0
post_id74,835,845
net_rshares422,276,173
author_curate_reward""
vote details (1)
@juancrdrums ·
¡Gracias!
properties (22)
authorjuancrdrums
permlinkre-developspanish-re-juancrdrums-aprender-a-programar-desde-cero-parte-4-leyendo-datos-por-teclado-20181108t044543855z
categoryspanish
json_metadata{"tags":["spanish"],"app":"steemit/0.1"}
created2018-11-08 04:45:45
last_update2018-11-08 04:45:45
depth2
children0
last_payout2018-11-15 04:45:45
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length9
author_reputation915,821,502,421
root_title"Aprender a programar DESDE CERO (Parte 4) -- Leyendo datos por teclado"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id74,893,440
net_rshares0
@evero ·
Excelente explicación, Saludos
👍  
properties (23)
authorevero
permlinkre-juancrdrums-aprender-a-programar-desde-cero-parte-4-leyendo-datos-por-teclado-20181108t052140177z
categoryspanish
json_metadata{"tags":["spanish"],"app":"steemit/0.1"}
created2018-11-08 05:21:39
last_update2018-11-08 05:21:39
depth1
children1
last_payout2018-11-15 05:21:39
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length30
author_reputation1,140,584,253,425
root_title"Aprender a programar DESDE CERO (Parte 4) -- Leyendo datos por teclado"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id74,894,774
net_rshares493,857,586
author_curate_reward""
vote details (1)
@juancrdrums ·
¡Gracias por leer! Espero que haya sido útil.
properties (22)
authorjuancrdrums
permlinkre-evero-re-juancrdrums-aprender-a-programar-desde-cero-parte-4-leyendo-datos-por-teclado-20181113t035043990z
categoryspanish
json_metadata{"tags":["spanish"],"app":"steemit/0.1"}
created2018-11-13 03:50:45
last_update2018-11-13 03:50:45
depth2
children0
last_payout2018-11-20 03:50:45
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length45
author_reputation915,821,502,421
root_title"Aprender a programar DESDE CERO (Parte 4) -- Leyendo datos por teclado"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id75,190,818
net_rshares0
@ramonycajal ·
![CURADORES-01.gif](https://cdn.steemitimages.com/DQmdARgRdaxHcoZjoWaV4p17QyaAteKSPLXRS11y2b3MvdG/CURADORES-01.gif)
👍  
properties (23)
authorramonycajal
permlinkre-juancrdrums-aprender-a-programar-desde-cero-parte-4-leyendo-datos-por-teclado-20181107t113746657z
categoryspanish
json_metadata{"tags":["spanish"],"image":["https://cdn.steemitimages.com/DQmdARgRdaxHcoZjoWaV4p17QyaAteKSPLXRS11y2b3MvdG/CURADORES-01.gif"],"app":"steemit/0.1"}
created2018-11-07 11:37:48
last_update2018-11-07 11:37:48
depth1
children1
last_payout2018-11-14 11:37:48
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length115
author_reputation146,311,691,080,468
root_title"Aprender a programar DESDE CERO (Parte 4) -- Leyendo datos por teclado"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id74,847,003
net_rshares412,880,128
author_curate_reward""
vote details (1)
@juancrdrums ·
Muchas gracias por el apoyo.
properties (22)
authorjuancrdrums
permlinkre-ramonycajal-re-juancrdrums-aprender-a-programar-desde-cero-parte-4-leyendo-datos-por-teclado-20181108t044704503z
categoryspanish
json_metadata{"tags":["spanish"],"app":"steemit/0.1"}
created2018-11-08 04:47:06
last_update2018-11-08 04:47:06
depth2
children0
last_payout2018-11-15 04:47:06
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length28
author_reputation915,821,502,421
root_title"Aprender a programar DESDE CERO (Parte 4) -- Leyendo datos por teclado"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id74,893,506
net_rshares0