Tutorial "Pythonizate: Fundamentos de Programación” - Listas, Tuplas, Diccionario y Entrada por Teclado

in #spanish3 years ago (edited)

Pythonizate "Aprendiendo a programar"

Este tutorial está siendo elaborado para enseñarte a programar en Python desde cero hasta un nivel intermedio – avanzado. Al momento de finalizarlo serás capaz de crear software sencillo aplicando los conceptos aprendidos e incluso crear su propia interfaz gráfica.

Indice

ContenidoPost
IntroducciónTutorial "Pythonizate: Aprendiendo a Programar" - Introducción
Instalación de entorno de desarrollo y primeros programas"Pythonizate: Aprendiendo a Programar" - Instalación de entorno de desarrollo y primeros programas
Números, Operadores y Tipos de Datos.Tutorial "Pythonizate: Fundamentos de Programación” – Números, Operadores y Tipos de Datos.

¡Hola mis queridos Steemians! En objetivo del post hoy es aprender un poco sobre los tipos de datos estructurados, conocidos como secuencias, tambien aprenderemos a usar la funcion de lectura por teclado "input"

¿Qué son los datos estructurados?

En el post anterior estudiamos los datos de tipo simple que sólo pueden almacenar un valor, los datos tipo estructurados son los que permiten recolectar varios valores simultáneamente. Este tipo de estructuras permiten definir vectores, matrices, tablas y estructuras multidimensionales.

¿Qué son las listas?

La lista es un tipo de colección ordenada, estas pueden contener cualquier cantidad de valores y tipos de datos como: números, cadenas, booleanos y también otras listas


Para crear una lista es tan fácil como indicar entre corchetes y separados por comas, los valores que queremos incluir en la lista:

Definición de una lista
#NombreDeLaLista = [valor1, valor2, valor3, valor4...] 

>>> dias = ["lunes","martes","miercoles","jueves","viernes"]
>>> dias
['lunes', 'martes', 'miercoles', 'jueves', 'viernes'] 

Cada uno de los elementos que integra la lista tiene un índice asociado, este hace referencia al lugar que ocupa cada elemento dentro de la lista, se debe tener en cuenta que el índice del primer elemento de la lista es 0, y no 1:

#lista = [Indice0, Indice1, Indice2, Indice3, Indice4...]

>>> dias[0]
'lunes'
>>> dias[1]
'martes'
>>> dias[4]
'viernes'

Un índice negativo accede a los elementos del final de la lista contando hacia atrás. El último elemento de cualquier lista no vacía es siempre [-1].

>>> dias[-1]
'viernes'
>>> dias[-2]
'jueves'
>>> dias[-5]
'lunes'
>>> 

Rebanar una lista

También podemos "cortar" una lista, para obtener una parte de ella, la estructura seria la siguiente:

>>> dias[0:3]
['lunes', 'martes', 'miercoles']
>>> dias[2:4]
['miercoles', 'jueves']
>>> dias[1:2]
['martes']
  • Las listas están basadas en cero, por lo que dias[0:3]devuelve los primeros tres elementos de la lista, comenzando desde dias[0], hasta, pero sin incluir dias[3].

Metodos de las listas

Las listas tienen unas series de funciones asociadas que permiten agregar un elemento, eliminar, insertar un elemento en una posicion espefica, concatenar listas, entre otros:

  • append(x): Agrega un elemento al final de la lista.

  • extend([L]): Extiende la lista concatenándole todos los elementos de la lista indicada.

  • insert(i, x): Inserta un elemento en un posición dada.

  • remove(x): Elimina el elemento de la lista cuyo valor es x.

  • pop(): Elimina el elemento de la posición dada de la lista y lo devuelve. Si no se especifica un índice, lista.pop() devuelve el último elemento de la lista y también lo elimina.

  • index(x): Devuelve el índice del primer elemento de la lista cuyo valor sea x.

  • count(x): Devuelve el número de veces que aparece x en la lista.

  • reverse(): Invierte la propia lista (la lista queda cambiada).

  • len(lista): Permite obtener la longitud de la lista.

Ejemplos:

>>> dias.append("sabado")
>>> dias
['lunes', 'martes', 'miercoles', 'jueves', 'viernes', 'sabado']
>>> dias.extend(["domingo","steemit","python"])
>>> dias
['lunes', 'martes', 'miercoles', 'jueves', 'viernes', 'sabado', 'domingo',
 'steemit', 'python']
>>> dias.insert(3,"ramses")
>>> dias
['lunes', 'martes', 'miercoles', 'ramses', 'jueves', 'viernes', 'sabado', 
'domingo', 'steemit', 'python']

>>> dias.remove("lunes")
>>> dias
['martes', 'miercoles', 'ramses', 'jueves', 'viernes', 'sabado', 'domingo',
 'steemit', 'python']
>>> dias.remove("jueves")
>>> dias
['martes', 'miercoles', 'ramses', 'viernes', 'sabado', 'domingo', 'steemit',
 'python']
>>> dias.pop()
'python'
>>> dias.pop(3)
'viernes'
>>> dias
['martes', 'miercoles', 'ramses', 'sabado', 'domingo', 'steemit']
>>> dias.index("sabado")
3
>>> dias.append("ramses")
>>> dias.count("ramses")
2
>>> dias.reverse()
>>> dias
['ramses', 'steemit', 'domingo', 'sabado', 'ramses', 'miercoles', 'martes']
>>> len(dias)
7
  • Las listas pueden estar compuestas por cualquier tipo de datos y una combinación de ellos.
>>> steemit = ["cervantes","vidayaventura",2018,True,3.145926]
>>> steemit
['cervantes', 'vidayaventura', 2018, True, 3.145926]
  • También podemos colocar listas dentro de una lista
>>> ListaLoca = [[2,3],[99,45],[922,1]]
>>> ListaLoca
[[2, 3], [99, 45], [922, 1]]
>>> ListaLoca[0]
[2, 3]
>>> ListaLoca[0:2]
[[2, 3], [99, 45]]
  • Otra forma de comprobar si el elemento esta en una lista es:
>>> "ramses" in dias
True
>>> "cervantes" in dias
False

Ejercicios

Pongamos a prueba lo dicho anteriormente en un ejercicio practico.

>>> dias = ["Lunes","Martes","Miercoles","Jueves","Viernes","Sabado",
"Domingo"]

>>> meses = ["Enero","Febrero","Marzo","steemit","Abril","Junio","Julio",
"Agosto","Septiembre","Octubre"]

>>> print("Una semana tiene",len(dias),"dias, estos son: ", dias[:])

Una semana tiene 7 dias, estos son:  ['Lunes', 'Martes', 'Miercoles', 'Jueves', 
'Viernes', 'Sabado', 'Domingo']

>>> print("Un año tiene",len(meses)," meses, los cuales son: ",meses[:])
Un año tiene 10  meses, los cuales son:  ['Enero', 'Febrero', 'Marzo', 'steemit', 
'Abril', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre']
 

Algo va mal, un año no tiene 10 meses, no hay ningún mes llamado steemit y faltan varios meses. ¡Vamos a arreglarlo!


>>> meses.pop(3)
      
'steemit'

>>> meses.insert(4,"Mayo")

>>> meses.extend(["Noviembre","Diciembre"])
      
>>> print("Un año tiene",len(meses)," meses, los cuales son: ",meses[:])
      
Un año tiene 12  meses, los cuales son:  ['Enero', 'Febrero', 'Marzo', 'Abril',
 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre']

¿Qué son Tuplas?

Una tupla es una lista inmutable, no se puede cambiar de ninguna manera una vez que se crea.

Todo lo que hemos explicado sobre las listas se aplica también a las tuplas, a excepción de la forma de definirla, para lo que se utilizan paréntesis en lugar de corchetes.


>>> tuplaLoca = ("cervantes", "vidayaventura", 2018, 3.14)
      
>>> tuplaLoca
      
('cervantes', 'vidayaventura', 2018, 3.14)

>>> tuplaLoca [0]
      
'cervantes'
>>> tuplaLoca[1:3]
      
('vidayaventura', 2018)

La principal diferencia entre tuplas y listas es que las tuplas no se pueden cambiar. En términos técnicos, las tuplas son inmutables . En términos prácticos, no tienen métodos que le permitan cambiarlos. Las listas tienen métodos como append(), extend(), insert(), remove(), y pop(). Las tuplas no tienen ninguno de estos métodos. Se puede rebanar una tupla y podemos verificar si una tupla contiene un valor particular, y ... eso es todo.

>>> tuplaLoca.append("Steemit")
      
Traceback (most recent call last):
  File "<pyshell#78>", line 1, in <module>
    tuplaLoca.append("Steemit")
AttributeError: 'tuple' object has no attribute 'append'
>>> tuplaLoca.remove("cervantes")
      
Traceback (most recent call last):
  File "<pyshell#79>", line 1, in <module>
    tuplaLoca.remove("cervantes")
AttributeError: 'tuple' object has no attribute 'remove'

Entonces, ¿para qué sirven las tuplas?

  • Pues Las tuplas son más rápidas que las listas. Si está definiendo un conjunto constante de valores y todo lo que siempre va a hacer con él es iterar a través de él, use una tupla en lugar de una lista.

  • Hacen que nuestro código sea más seguro si "protege contra escritura" los datos que no necesitan ser cambiados.

  • Algunas tuplas se pueden usar como claves de diccionario (específicamente, tuplas que contienen valores inmutables como cadenas, números y otras tuplas). Las listas nunca se pueden usar como claves de diccionario, porque las listas no son inmutables.

¿Que son diccionarios?

Steemians los diccionarios, son colecciones de pares clave-valor. Cuando agrega una clave a un diccionario, también debemos agregar un valor para esa clave. Los diccionarios de Python están optimizados para recuperar el valor cuando conoce la clave, pero no al revés.


Veamos la estructura de un diccionario:

#diccionario = {clave:valor, clave2:valor2...}

>>> steemit = {"vidayaventura":45, "andrealbm":45, "bert0":69}

>>> steemit
      
{'vidayaventura': 45, 'andrealbm': 45, 'bert0': 69}

>>> steemit["vidayaventura"]
      
45

>>> steemit[45]
      
Traceback (most recent call last):
  File "<pyshell#87>", line 1, in <module>
    steemit[45]
KeyError: 45
  • "vidayaventura" es una clave, y su valor asociado, referenciado por steemit['vidayaventura'], es '45'.

  • Se pueden obtener valores por clave, pero no puede obtener claves por valor.


Podemos modificar un diccionario de la siguiente manera:

>>> steemit["andrealbm"]= 50
      
>>> steemit["ricardo993"] = 49
      
>>> steemit
      
{'vidayaventura': 45, 'andrealbm': 50, 'bert0': 69, 'ricardo993': 49}

  • No podemos tener claves duplicadas en un diccionario. Asignar un valor a una clave existente borrará el valor anterior.
  • Podemos agregar nuevos pares clave-valor en cualquier momento.
  • Podemos borrar una clave:valor del diccionario con el metodo del
>>> del steemit["bert0"]
      
>>> steemit
      
{'vidayaventura': 45, 'andrealbm': 50, 'ricardo993': 49}
  • Podemos trabajar un diccionario con una tupla:
>>> paises = ("Alemania", "Francia", "España")
      
>>> capitales = {paises[0]:"Berlin", paises[1]:"Paris", paises[2]:"Madrid"}
      
>>> capitales
      
{'Alemania': 'Berlin', 'Francia': 'Paris', 'España': 'Madrid'}

Entrada por teclado: Función input()

La función input() permite obtener texto escrito por teclado. Al llegar a la función, el flujo del programa se detendrá hasta que el usuario haya dado una entrada y haya finalizado la entrada con la tecla de retorno:

Por ejemplo:

>>> print("Cual es tu user de steemit")
      
Cual es tu user de steemit
>>> user = input()
      
vidayventura
>>> print("Bienvenido a Pythonizate", user,", espero este tutorial sea de tu agrado")
      
Bienvenido a Pythonizate vidayventura , espero este tutorial sea de tu agrado

Otra forma de usar la funcion input(), es enviando un argumento que se imprima en pantalla, como por ejemplo:

>>> pais=input("De que pais eres: ")
      
De que pais eres: Venezuela
>>> print("Eres",user," de",pais)
      
Eres vidayventura  de Venezuela 
  • Al hacer el llamado a la función input se imprime el mensaje entre parentesis y luego se detiene el programa, esperando una entrada por teclado, cuando se da la entrada por teclado la respuesta se guarda en la variable pais.

Conversión de tipos

La función input() siempre convierte la entrada en una cadena, aunque escribamos un número. Si intentamos hace una operación nos lanza error.

>>> edad = input("Cual es tu edad? ")
      
Cual es tu edad? 21 
>>> type (edad)
      
<class 'str'>

Por eso lo mas recomendable es que si se quiere que Python interprete la entrada como un número entero, se debe utilizar la función int(input()) de la siguiente manera:

>>> edad = int(input("Cual es tu edad? "))
      
Cual es tu edad? 20
>>> type(edad)
      
<class 'int'>

!Esto fue todo por hoy, nos vemos en el proximo post!

Si tienen alguna duda o consulta no duden en dejarla en los comentarios. En el próximo post del tutorial estaré dejando un ejercicio desafió con recompensa de 0.5 SBD. ¡Así que anímate a aprender a programaaar!

"El ser humano es inteligente por naturaleza, la tecnologia es solo un complemento"

Gracias por permitirme robar unos pocos minutos de tu vida. Me despido por los momentos mis steemianos, que tengan un excelente día, tarde o noche.
╭════════════╮
Sígueme en mi Blog
╰════════════╯

GIF

Sort:  

Excelete post @vidayaventura contenido de calidad

Gracias por tan valioso comentario, eso es lo que trato de lograr con cada post. Saludo!

Waooo tremendo diseño de post. Y didactivo e interactivo. Saludos.

Gracias bro! Siempre trato de hacer mis post didacticos para que las personas puedan comprender la información de la mejor manera y que estos temas no sean tan tediosos.

Saludos

Gracias siempre por el apoyo!

Excelente post....desde hoy te sigo

Gracias por el apoyo y por tomarte el tiempo de leer mi post, te invito a que visites los post anteriores y te animes a aprender a programar, estaré dando una recompensa.

Saludos

Congratulations! This post has been upvoted from the communal account, @minnowsupport, by vidayaventura from the Minnow Support Project. It's a witness project run by aggroed, ausbitbank, teamsteem, theprophet0, someguy123, neoxian, followbtcnews, and netuoso. The goal is to help Steemit grow by supporting Minnows. Please find us at the Peace, Abundance, and Liberty Network (PALnet) Discord Channel. It's a completely public and open space to all members of the Steemit community who voluntarily choose to be there.

If you would like to delegate to the Minnow Support Project you can do so by clicking on the following links: 50SP, 100SP, 250SP, 500SP, 1000SP, 5000SP.
Be sure to leave at least 50SP undelegated on your account.

Excelente post, me da risa que lo leí hace días y olvidé dejarte un comentario. Gracias por regalarnos unos tutoriales entretenidos y muy interesantes. Saludos.

Gracias a ti por el apoyo y por tomarte el tiempo de leer mi post, te invito a que revises los post anteriores del tutorial y te sumes a esta aventura, estaré dando una recompensa en SBD.

Saludos

Votado en la curación de Reveur. Se nota que le dedicaste mucho a esta publicación.

Muchas gracias por el apoyo, siempre trato de que mis publicaciones sean agradables para todos, que permitan absorber la información más sencilla y placenteramente.

Saludos

Me gusta la forma en que proporcionas el conocimiento gracias

Gracias, siempre trato de que los tutoriales sean lo mas agradable posibles, te invito a que revises los post anteriores del tutorial y te sumes a esta aventura, estaré dando una recompensa en SBD.

Saludos

Excelente, gracias por el tutorial, yo por ahora empiezo a programar en Javascript.. mas adelante entraré a phyton

¡Hola @snmelinger! Excelente, lo importante es que te adentres en el mundo de la programación.
Consejo: Si vas a aprender hazlo con una visión, es decir, con que finalidad quieres aprender a programar? Cuando uno no tiene claro esto, se suele abandonar esta practica.

Saludos