Python Essentials - Módulo 2
Python Essentials - Módulo 2
TU PRIMER PROGRAMA
¡Hola, Mundo!
Como se muestran algunos conceptos y términos fundamentales, estos fragmentos
de código no serán complejos ni difíciles. Ejecuta el código en la ventana del editor
a la derecha. Si todo sale bien, veras la línea de texto en la ventana de consola. El
código que has ejecutado debería parecerte familiar. Viste algo muy similar cuando
te guiamos a través de la configuración del entorno IDLE.
print("¡Hola, Mundo!")
La palabra print.
Un paréntesis de apertura.
Una comilla.
Una línea de texto: ¡Hola, Mundo!
Otra comilla.
Un paréntesis de cierre.
Cada uno de los elementos anteriores juega un papel muy importante en el código.
La función print()
Mira la línea de código a continuación:
print("¡Hola, Mundo!")
La palabra print que puedes ver aquí es el nombre de una función. Eso no significa
que dondequiera que aparezca esta palabra, será siempre el nombre de una
función. El significado de la palabra proviene del contexto en el cual se haya
utilizado la palabra. Probablemente hayas encontrado el término función muchas
veces antes, durante las clases de matemáticas. Probablemente también puedes
recordar varios nombres de funciones matemáticas, como seno o logaritmo. Las
funciones de Python, sin embargo, son más flexibles y pueden contener más
contenido que sus parientes matemáticos. Una función es una parte separada del
código de computadora el cual es capaz de:
Causar algún efecto (por ejemplo, enviar texto a la terminal, crear un archivo,
dibujar una imagen, reproducir un sonido, etc.); esto es algo completamente
inaudito en el mundo de las matemáticas.
Evaluar un valor o algunos valores (por ejemplo, la raíz cuadrada de un valor
o la longitud de un texto dado); esto es lo que hace que las funciones de
Python sean parientes de los conceptos matemáticos.
Además, muchas de las funciones de Python pueden hacer las dos cosas anteriores
juntas.
¿De dónde provienen las funciones? Pueden venir de Python mismo. La función
print es una de este tipo; dicha función es un valor agregado de Python junto con su
entorno (está integrada); no tienes que hacer nada especial si quieres usarla.
Pueden provenir de uno o varios de los módulos de Python llamados complementos;
algunos de los módulos vienen con Python, otros pueden requerir una instalación
por separado, cual sea el caso, todos deben estar conectados explícitamente con
el código. Puedes escribirlas tú mismo, colocando tantas funciones como desees y
necesites dentro de tu programa para hacerlo más simple, claro y elegante. El
nombre de la función debe ser significativo; el nombre de la función print es
evidente, imprime en la terminal. Si vas a utilizar alguna función ya existente, no
podrás modificar su nombre, pero cuando comiences a escribir tus propias
funciones, debes considerar cuidadosamente la elección de nombres.
Un efecto.
Un resultado.
print("¡Hola, Mundo!")
print("¡Hola, Mundo!")
Como se puede ver, la cadena está delimitada por comillas; de hecho, las comillas
forman la cadena, recortan una parte del código y le asignan un significado
diferente. Podemos imaginar que las comillas significan algo así: el texto entre
nosotros no es un código. No está diseñado para ser ejecutado, y se debe tomar tal
como está. Casi cualquier cosa que ponga dentro de las comillas se tomará de
manera literal, no como código, sino como datos. Existe más de una forma de como
especificar una cadena dentro del código de Python, pero por ahora, esta será
suficiente. Hasta ahora, has aprendido acerca de dos partes importantes del código,
la función y la cadena. Hemos hablado de ellos en términos de sintaxis, pero ahora
es el momento de discutirlos en términos de semántica.
El nombre de la función print junto con los paréntesis y los argumentos, forman
la invocación de la función.
print("¡Hola, Mundo!")
¿Qué sucede cuando Python encuentra una invocación como la que está a
continuación?
nombreFunción(argumento)
Objetivos
Familiarizarse con la función print() y sus capacidades de formateo.
Experimentar con el código de Python.
Escenario
El comando print(), el cual es una de las directivas más sencillas de Python,
simplemente imprime una línea de texto en la pantalla.
En tu primer laboratorio:
TU PRIMER PROGRAMA
La función print()
Tres preguntas importantes deben ser respondidas antes de continuar:
El programa invoca la función print() dos veces, como puedes ver hay dos
líneas separadas en la consola: esto significa que print() comienza su salida
desde una nueva línea cada vez que comienza su ejecución. Puedes cambiar
este comportamiento, pero también puedes usarlo a tu favor.
Cada invocación de print() contiene una cadena diferente, como su
argumento y el contenido de la consola lo reflejan; esto significa que las
instrucciones en el código se ejecutan en el mismo orden en que se colocaron
en el archivo de origen; no se ejecuta la siguiente instrucción hasta que se
complete la anterior.
Como puedes ver, la invocación de print() vacía no esta tan vacía como se
esperaba; genera una línea vacía, su salida es solo una nueva línea. Esta no es la
única forma de producir una nueva línea en la consola de salida.
La función print() – Los caracteres de escape y nueva línea
Hay dos cambios muy sutiles: hemos insertado un par extraño de caracteres dentro
del texto. Se ven así: \n. Curiosamente, mientras tú ves dos caracteres, Python ve
solo uno. La barra invertida (\) tiene un significado muy especial cuando se usa
dentro de las cadenas, es llamado el carácter de escape. La palabra escape debe
entenderse claramente; significa que la serie de caracteres en la cadena se escapa
(detiene) por un momento para introducir una inclusión especial. En otras palabras,
la barra invertida no significa nada, sino que es solo un tipo de anuncio, de que el
siguiente carácter después de la barra invertida también tiene un significado
diferente. La letra n colocada después de la barra invertida proviene de la
palabra newline (nueva línea). Tanto la barra diagonal inversa como la n forman un
símbolo especial denominado carácter de nueva línea (newline character), que
incita a la consola a iniciar una nueva línea de salida.
Vino la lluvia
y se la llevó.
Como se puede observar, aparecen dos nuevas líneas en la canción infantil, en los
lugares donde se ha utilizado \n.
1. Si deseas colocar solo una barra invertida dentro de una cadena, no olvides su
naturaleza de escape: tienes que duplicarla, por ejemplo, la siguiente invocación
causará un error:
print("\")
print("\\")
2. No todos los pares de escape (la barra invertida junto con otro carácter) significan
algo.
La función print() utilizando argumentos múltiples
Hasta ahora se ha probado el comportamiento de la función print() sin argumentos
y con un argumento. También vale la pena intentar alimentar la función print() con
más de un argumento.
Hay una invocación de la función print() pero contiene tres argumentos. Todos ellos
son cadenas. Los argumentos están separados por comas. Se han rodeado de
espacios para hacerlos más visibles, pero no es realmente necesario y no se hará
más. En este caso, las comas que separan los argumentos desempeñan un papel
completamente diferente a la coma dentro de la cadena. El primero es una parte de
la sintaxis de Python, el segundo está destinado a mostrarse en la consola. Si
vuelves a mirar el código, verás que no hay espacios dentro de las cadenas.
Los espacios, removidos de las cadenas, han vuelto a aparecer. Dos conclusiones
surgen de este ejemplo:
Como puedes ver, el argumento de palabra clave end determina los caracteres que
la función print() envía a la salida una vez que llega al final de sus argumentos
posicionales. El comportamiento predeterminado refleja la situación en la que el
argumento de la palabra clave end se usa implícitamente de la siguiente
manera: end="\n".
La función print() ahora utiliza un guión, en lugar de un espacio, para separar los
argumentos generados. El valor del argumento sep también puede ser una cadena
vacía.
Objetivos
Familiarizarse con la función print() y sus capacidades de formato.
Experimentar con el código de Python.
Escenario
Modifica la primera línea de código en el editor, utilizando las palabras
clave sep y end, para que coincida con el resultado esperado. Recuerda, utilizar dos
funciones print(). No cambies nada en la segunda invocación de print().
print("Fundamentos","Programación","en")
print("Python")
Fundamentos***Programación***en...Python
Objetivos
Experimentar con el código Python existente.
Descubrir y solucionar errores básicos de sintaxis.
Familiarizarse con la función print() y sus capacidades de formato.
Escenario
Recomendamos que juegues con el código que hemos escrito para ti y que realices
algunas correcciones. Siéntete libre de modificar cualquier parte del código, pero
hay una condición: aprende de tus errores y saca tus propias conclusiones.
Intenta:
Minimizar el número de invocaciones de la función print() insertando la
secuencia \n en las cadenas.
Hacer la flecha dos veces más grande pero mantener las proporciones.
Duplicar la flecha, colocando ambas flechas lado a lado; una cadena se
puede multiplicar usando el siguiente truco: "string" *
2 producirá "stringstring".
Elimina cualquiera de las comillas y observa detenidamente la respuesta de
Python; presta atención a donde Python ve un error: ¿es el lugar en donde
realmente existe el error?
Haz lo mismo con algunos de los paréntesis.
Cambia cualquiera de las palabras print en otra cosa (por ejemplo de
minúscula a mayúscula, Print).
Reemplaza algunas de las comillas por apóstrofes; observa lo que pasa
detenidamente.
print(" *")
print(" * *")
print(" * *")
print(" * *")
print("*** ***")
print(" * *")
print(" * *")
print(" *****")
LITERALES DE PYTHON
¿Puedes adivinar qué valor representa? Claro que puedes; es ciento veintitrés.
¿Representa algún valor? Tal vez. Puede ser el símbolo de la velocidad de la luz,
por ejemplo. También puede representar la constante de integración. Incluso la
longitud de una hipotenusa en el Teorema de Pitágoras. Existen muchas
posibilidades. No se puede elegir el valor correcto sin algo de conocimiento
adicional. Y esta es la pista: 123 es un literal, y c no lo es. Se utilizan literales para
codificar datos y ponerlos dentro del código.
print("2")
print(2)
Enteros
Tal vez has escuchado del sistema binario, y como es que ese es el sistema que
las computadoras utilizan para almacenar números y como es que pueden realizar
cualquier tipo de operaciones con ellos. No exploraremos las complejidades de los
sistemas numéricos posicionales, pero se puede afirmar que todos los números
manejados por las computadoras modernas son de dos tipos:
El proceso es casi como usar lápiz y papel, es simplemente una cadena de dígitos
que conforman el número, pero hay una condición, no se deben insertar caracteres
que no sean dígitos dentro del número. Tomemos por ejemplo, el número once
millones ciento once mil ciento once. Si tomaras ahorita un lápiz en tu mano,
escribirías el siguiente numero: 11,111,111, o así: 11.111.111, incluso de esta
manera: 11 111 111. Es claro que la separación hace que sea más fácil de leer,
especialmente cuando el número tiene demasiados dígitos. Sin embargo, Python
no acepta estas cosas. Está prohibido. ¿Qué es lo que Python permite? El uso
de guion bajo en los literales numéricos. Por lo tanto, el número se puede escribir
ya sea así: 11111111, o como sigue: 11_111_111. Python 3.6 ha introducido el
guión bajo en los literales numéricos, permitiendo colocar un guión bajo entre dígitos
y después de especificadores de base para mejorar la legibilidad. Esta característica
no está disponible en versiones anteriores de Python. ¿Cómo se codifican los
números negativos en Python? Como normalmente se hace, agregando un signo
de menos. Se puede escribir: -11111111, o -11_111_111. Los números positivos no
requieren un signo positivo antepuesto, pero es permitido, si se desea hacer. Las
siguientes líneas describen el mismo número: +11111111 y 11111111.
print(0o123)
print(0x123)
Flotantes
Ahora es tiempo de hablar acerca de otro tipo, el cual está designado para
representar y almacenar los números que tienen una parte decimal no vacía. Son
números que tienen o pueden tener una parte fraccionaria después del punto
decimal, y aunque esta definición es muy pobre, es suficiente para lo que se desea
discutir.
Cuando se usan términos como dos y medio o menos cero punto cuatro, pensamos
en números que la computadora considera como números punto-flotante:
2.5
-0.4
0.4
Pero no hay que olvidar esta sencilla regla, se puede omitir el cero cuando es el
único dígito antes del punto decimal. En esencia, el valor 0.4 se puede escribir
como:
.4
4.
4
4.0
Se puede pensar que son idénticos, pero Python los ve de una manera
completamente distinta. 4 es un número entero, mientras que 4.0 es un
número punto-flotante. El punto decimal es lo que determina si es flotante. Por otro
lado, no solo el punto hace que un número sea flotante. Se puede utilizar la letra e.
Cuando se desea utilizar números que son muy pequeños o muy grandes, se puede
implementar la notación científica.
3E8
6.62607E-34
0.0000000000000000000001
print(0.0000000000000000000001)
Este es el resultado:
1e-22
Python siempre elige la presentación más corta del número, y esto se debe de tomar
en consideración al crear literales.
Cadenas
Las cadenas se emplean cuando se requiere procesar texto (como nombres de
cualquier tipo, direcciones, novelas, etc.), no números. Ya conoces un poco acerca
de ellos, por ejemplo, que las cadenas requieren comillas así como los flotantes
necesitan punto decimal.
Sin embargo, hay una cuestión. ¿Cómo se puede codificar una comilla dentro de
una cadena que ya está delimitada por comillas?
¿Cómo se puede hacer esto sin generar un error? Existen dos posibles soluciones.
Codificando cadenas
Ahora, la siguiente pregunta es: ¿Cómo se puede insertar un apóstrofe en una
cadena la cual está limitada por dos apóstrofes? A estas alturas ya se debería tener
una posible respuesta o dos.
¿Sabes cómo hacerlo? Haz clic en Revisar para saber si estas en lo cierto:
''
""
Valores booleanos
Para concluir con los literales de Python, existen dos más. No son tan obvios como
los anteriores y se emplean para representar un valor muy abstracto; la veracidad.
Cada vez que se le pregunta a Python si un número es más grande que otro, el
resultado es la creación de un tipo de dato muy específico; un valor booleano. El
nombre proviene de George Boole, el autor de Las Leyes del Pensamiento, las
cuales definen el Algebra Booleana; una parte del algebra que hace uso de dos
valores: Verdadero y Falso, denotados como 1 y 0. Un programador escribe un
programa, y el programa hace preguntas. Python ejecuta el programa, y provee las
respuestas. El programa debe ser capaz de reaccionar acorde a las respuestas
recibidas.
True
False
Objetivos
Familiarizarse con la función print() y sus capacidades de formato.
Practicar el codificar cadenas.
Experimentar con el código de Python.
Escenario
Escribe una sola línea de código, utilizando la función print(), así como los
caracteres de nueva línea y escape, para obtener la salida esperada de tres líneas.
"Estoy"
""aprendiendo""
"""Python"""
RESUMEN DE LA SECCIÓN
Puntos clave
1. Literales son notaciones para representar valores fijos en el código. Python tiene
varios tipos de literales, es decir, un literal puede ser un número (por ejemplo, 123),
o una cadena (por ejemplo, "Yo soy un literal.").
3. Los Enteros (o simplemente int) son uno de los tipos numéricos que soporta
Python. Son números que no tienen una parte fraccionaria, por ejemplo, 256, o -
1 (enteros negativos).
5. Para codificar un apóstrofe o una comilla dentro de una cadena se puede utilizar
el carácter de escape, por ejemplo, 'I\'m happy.', o abrir y cerrar la cadena utilizando
un conjunto de símbolos distintos al símbolo que se desea codificar, por
ejemplo, "I'm happy." para codificar un apóstrofe, y 'Él dijo "Python", no
"typhoon"' para codificar comillas.
6. Los Valores Booleanos son dos objetos constantes Verdadero y Falso empleados
para representar valores de verdad (en contextos numéricos 1 es True, mientras
que 0 es False). Existe un literal especial más utilizado en Python: el literal None.
Este literal es llamado un objeto de NonType (ningún tipo), y puede ser utilizado
para representar la ausencia de un valor.
Ejercicio 1
"Hola", "007"
Ejercicio 3
1011
print(2+2)
Deberías de ver el número cuatro. Sin tomar esto con mucha seriedad, has
descubierto que Python puede ser utilizado como una calculadora. No una muy útil,
y definitivamente no una de bolsillo, pero una calculadora sin duda alguna. Tomando
esto más seriamente, nos estamos adentrado en el terreno de
los operadores y expresiones.
Se comenzará con los operadores que están asociados con las operaciones
aritméticas más conocidas:
+, -, *, /, //, %, **
El orden en el que aparecen no es por casualidad. Cuando los datos y operadores
se unen, forman juntos expresiones. La expresión más sencilla es el literal.
print(2 ** 3)
print(2 ** 3.)
print(2. ** 3)
print(2. ** 3.)
print(2 * 3)
print(2 * 3.)
print(2. * 3)
print(2. * 3.)
print(6 / 3)
print(6 / 3.)
print(6. / 3)
print(6. / 3.)
Deberías de poder observar que hay una excepción a la regla. El resultado
producido por el operador de división siempre es flotante, sin importar si a primera
vista el resultado es flotante: 1 / 2, o si parece ser completamente entero: 2 / 1.
¿Esto ocasiona un problema? Sí, en ocasiones se podrá necesitar que el resultado
de una división sea entero, no flotante. Afortunadamente, Python puede ayudar con
eso.
print(6 // 3)
print(6 // 3.)
print(6. // 3)
print(6. // 3.)
print(6 // 4)
print(6. // 4)
Imagina que se utilizó / en lugar de //. Si, sería 1.5 en ambos casos. Eso está claro.
Pero, ¿qué resultado se debería esperar con una división //? Lo que se obtiene son
dos unos, uno entero y uno flotante. El resultado de la división entera siempre se
redondea al valor entero inferior más cercano del resultado de la división no
redondeada. Esto es muy importante: el redondeo siempre va hacia abajo.
print(-6 // 4)
print(6. // -4)
Algunos de los valores son negativos. Esto obviamente afectara el resultado. ¿Pero
cómo? El resultado es un par de dos negativos. El resultado real (no redondeado)
es -1.5 en ambo casos. Sin embargo, los resultados se redondean. El redondeo se
hace hacia el valor inferior entero, dicho valor es -2, por lo tanto los resultados son: -
2 y -2.0. La división entera también se le suele llamar en inglés floor division.
print(14 % 4)
print(12 % 4.5)
3.0; no 3 pero 3.0 (la regla aun funciona: 12 // 4.5 da 2.0; 2.0 * 4.5 da 9.0; 12 -
9.0 da 3.0).
No intentes:
Dividir entre cero.
Realizar una división entera entre cero.
Encontrar el residuo de una división entre cero.
Operadores: suma
El símbolo del operador de suma es el + (signo de más), el cual está completamente
alineado a los estándares matemáticos.
print(-4 + 4)
print(-4. + 8)
Pero el operador negativo puede ser utilizado de una forma diferente, observa la
última línea de código del siguiente fragmento:
print(-4 - 4)
print(4. - 8)
print(-1.1)
print(+2)
2+3*5
print(9 % 6 % 2)
El resultado debe ser 1. El operador tiene un enlazado hacia la izquierda. Pero hay
una excepción interesante.
print(2 ** 2 ** 3)
2 ** 2 → 4; 4 ** 3 → 64
2 ** 3 → 8; 2 ** 8 → 256
Lista de prioridades
Como eres nuevo a los operadores de Python, no se presenta por ahora una lista
completa de las prioridades de los operadores. En lugar de ello, se mostrarán solo
algunos, y se irán expandiendo conforme se vayan introduciendo operadores
nuevos.
Prioridad Operador
1 +, - unario
2 **
3 *, /, %
4 +, - binario
Se han enumerado los operadores en orden de la más alta (1) a la más baja (4)
prioridad.
Intenta solucionar la siguiente expresión:
print(2 * 3 % 5)
Operadores y paréntesis
Por supuesto, se permite hacer uso de paréntesis, lo cual cambiará el orden natural
del cálculo de la operación. De acuerdo con las reglas aritméticas, las sub-
expresiones dentro de los paréntesis siempre se calculan primero. Se pueden
emplear tantos paréntesis como se necesiten, y seguido son utilizados para mejorar
la legibilidad de una expresión, aun si no cambian el orden de las operaciones.
RESUMEN DE LA SECCIÓN
Puntos clave
1. Una expresión es una combinación de valores (o variables, operadores,
llamadas a funciones) las cuales son evaluadas y dan como resultado un valor, por
ejemplo, 1+2.
2. Los operadores son símbolos especiales o palabras clave que son capaces de
operar en los valores y realizar operaciones matemáticas, por ejemplo, el * multiplica
dos valores: x*y.
4. Un operador unario es un operador con solo un operando, por ejemplo, -1, o +3.
5. Un operador binario es un operador con dos operados, por ejemplo, 4+5,
o 12%5.
Ejercicio 1
16 8.0 8
Ejercicio 2
-0.5 0.5 0 -1
Ejercicio 3
-2 2 512
Un nombre.
Un valor (el contenido del contenedor).
Aquí se muestran algunos nombres de variable que son correctos, pero que no
siempre son convenientes:
Además, Python permite utilizar no solo las letras latinas, sino caracteres
específicos de otros idiomas que utilizan otros alfabetos.
Palabras clave
Observa las palabras que juegan un papel muy importante en cada programa de
Python.
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del',
'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda',
'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
import
No se puede tener una variable con ese nombre, está prohibido, pero se puede
hacer lo siguiente:
Import
Creando variables
¿Qué se puede poner dentro de una variable? Cualquier cosa. Se puede utilizar una
variable para almacenar cualquier tipo de los valores que ya se han mencionado, y
muchos más de los cuales aún no se han explicado. El valor de la variable en lo que
se ha puesto dentro de ella. Puede variar tanto como se necesite o requiera. El valor
puede ser entero, después flotante, y eventualmente ser una cadena. Una variable
se crea cuando se le asigna un valor. A diferencia de otros lenguajes de
programación, no es necesario declararla. Si se le asigna cualquier valor a una
variable no existente, la variable será automáticamente creada. No se necesita
hacer algo más. La creación o su sintaxis es muy simple: solo utiliza el nombre de
la variable deseada, después el signo de igual (=) y el valor que se desea colocar
dentro de la variable.
var = 1
print(var)
Utilizando variables
Se tiene permitido utilizar cuantas declaraciones de variables sean necesarias para
lograr el objetivo del programa, por ejemplo:
var = 1
balance_cuenta = 1000.0
nombreCliente = 'John Doe'
print(var, balance_cuenta, nombreCliente)
print(var)
Sin embargo, no se permite utilizar una variable que no exista, (en otras palabras,
una variable a la cual no se le ha dado un valor).
var = 1
print(Var)
var = "3.7.1"
print("Versión de Python: " + var)
var = 1
print(var)
var = var + 1
print(var)
1
2
La primera línea del código crea una nueva variable llamada var y le asigna el valor
de 1.
var = 100
var = 200 + 300
print(var)
a = 3.0
b = 4.0
c = (a ** 2 + b ** 2) ** 0.5
print("c =", c)
c = √ a2 + b2
c = 5.0
LABORATORIO: VARIABLES
Objetivos
Familiarizarse con el concepto de almacenar y trabajar con diferentes tipos
de datos en Python.
Experimentar con el código en Python.
Escenario
A continuación una historia:
Érase una vez en la Tierra de las Manzanas, Juan tenía tres manzanas, María tenía
cinco manzanas, y Adán tenía seis manzanas. Todos eran muy felices y vivieron
por muchísimo tiempo. Fin de la Historia.
Tu tarea es:
Crear las variables: Juan, María, y Adán.
Asignar valores a las variables. El valor debe de ser igual al número de
manzanas que cada quien tenía.
Una vez almacenados los números en las variables, imprimir las variables en
una línea, y separar cada una de ellas con una coma.
Después se debe crear una nueva variable llamada totalManzanas y se debe
igualar a la suma de las tres variables anteriores.
Imprime el valor almacenado en totalManzanas en la consola.
Experimenta con tu código: crea nuevas variables, asigna diferentes valores
a ellas, y realiza varias operaciones aritméticas con ellas (por ejemplo, +, -,
*, /, //, etc.). Intenta poner una cadena con un entero juntos en la misma línea,
por ejemplo, "Número Total de Manzanas:" y totalManzanas.
Operadores abreviados
Es tiempo de explicar el siguiente conjunto de operadores que harán la vida del
programador/desarrollador más fácil. Muy seguido, se desea utilizar la misma
variable al lado derecho y al lado izquierdo del operador =.
x=x*2
Python ofrece una manera más corta de escribir operaciones como estas, lo cual se
puede codificar de la siguiente manera:
x *= 2
oveja+= 1
i = i + 2 * j ⇒ i += 2 * j
x = x ** 2 ⇒ x **= 2
Objetivos
Familiarizarse con el concepto de variables y trabajar con ellas.
Realizar operaciones básicas y conversiones.
Experimentar con el código en Python.
Escenario
Millas y kilómetros son unidades de longitud o distancia.
Millas a kilómetros.
Kilómetros a millas.
No se debe cambiar el código existente. Escribe tu código en los lugares indicados
con ###. Prueba tu programa con los datos que han sido provistos en el código
fuente. Pon mucha atención a lo que está ocurriendo dentro de la función print().
Analiza cómo es que se proveen múltiples argumentos para la función, y como es
que se muestra el resultado. Nota que algunos de los argumentos dentro de la
función print() son cadenas (por ejemplo "millas son", y otros son variables (por
ejemplo millas). Hay una cosa interesante más que está ocurriendo. ¿Puedes ver
otra función dentro de la función print()? Es la función round(). Su trabajo es
redondear la salida del resultado al número de decimales especificados en el
paréntesis, y regresar un valor flotante (dentro de la función round() se puede
encontrar el nombre de la variable, el nombre, una coma, y el número de decimales
que se desean mostrar). Intenta escribir diferentes convertidores, por ejemplo, un
convertidor de USD a EUR, un convertidor de temperatura, etc. Intenta mostrar los
resultados combinando cadenas y variables. Intenta utilizar y experimentar con la
función round() para redondear tus resultados a uno, dos o tres decimales. Revisa
que es lo que sucede si no se provee un dígito al redondear.
kilometros = 12.25
millas = 7.38
millas_a_kilometros = ###
kilometros_a_millas = ###
print(millas, " millas son ", round(millas_a_kilometros, 2), " kilómetros ")
print(kilometros, " kilómetros son ", round(kilometros_a_millas, 2), " millas ")
Objetivos
Familiarizarse con el concepto de los números, operadores y operaciones
aritméticas en Python.
Realizar cálculos básicos.
Escenario
Observa el código en el editor: lee un valor flotante, lo coloca en una variable
llamada x, e imprime el valor de la variable llamada y.
3x3 - 2x2 + 3x – 1
Datos de Muestra
x=0
x=1
x = -1
Salida Esperada
y = -1.0
y = 3.0
y = -9.0
RESUMEN DE LA SECCIÓN
1. Una variable es una ubicación nombrada reservada para almacenar valores en
la memoria. Una variable es creada o inicializada automáticamente cuando se le
asigna un valor por primera vez.
var = 2
print(var)
var = 3
print(var)
var += 1
print(var)
var = "007"
print("Agente " + var)
Ejercicio 1
var = 2
var = 3
print(var)
3
Ejercicio 2
my_var
m
101
averylongvariablename
m101
m 101
Del
del
my_var
m
101 # incorrecto (comienza con un digito)
averylongvariablename
m101
m 101 # incorrecto (contiene un espacio)
Del
del # incorrecto (es una palabra clave)
Ejercicio 3
a = '1'
b = "1"
print(a + b)
11
Ejercicio 4
a=6
b=3
a /= 2 * b
print(a)
1.0
2*b=6
a = 6 → 6 / 6 = 1.0
COMENTARIOS
LABORATORIO: COMENTARIOS
Objetivos
Familiarizarse con el concepto de comentarios en Python.
Utilizar y no utilizar los comentarios.
Reemplazar los comentarios con código.
Experimentar con el código de Python.
Escenario
El código en el editor contiene comentarios. Intenta mejorarlo: agrega o quita
comentarios donde consideres que sea apropiado (en ocasiones el remover un
comentario lo hace más legible), además, cambia el nombre de las variables donde
consideres que esto mejorará la comprensión del código. Los comentarios son muy
importantes. No solo hacen que el programa sea más fácil de entender, pero
también sirven para deshabilitar aquellas partes de código que no son
necesarias (por ejemplo, cuando se necesita probar cierta parte del código, e ignorar
el resto). Los buenos programadores describen cada parte importante del código, y
dan nombres significativos a variables, debido a que en ocasiones es mucho más
sencillo dejar el comentario dentro del código mismo. Es bueno utilizar nombres de
variables legibles, y en ocasiones es mejor dividir el código en partes con nombres
(por ejemplo en funciones). En algunas situaciones, es una buena idea escribir los
pasos de cómo se realizaron los cálculos de una forma sencilla y clara. Una cosa
más: puede ocurrir que un comentario contenga una pieza de información incorrecta
o errónea, nunca se debe de hacer eso a propósito.
a = 2 # numero de horas
segundos = 3600 # número de segundos en una hora
RESUMEN DE LA SECCIÓN
Puntos clave
1. Los comentarios pueden ser utilizados para colocar información adicional en el
código. Son omitidos al momento de la ejecución. Dicha información es para los
lectores que están manipulando el código. En Python, un comentario es un
fragmento de texto que comienza con un #. El comentario se extiende hasta el final
de la línea.
3. Cuando sea posible, se deben auto comentar los nombres de las variables, por
ejemplo, si se están utilizando dos variables para almacenar la altura y longitud de
algo, los nombres altura y longitud son una mejor elección que mivar1 y mivar2.
4. Es importante utilizar los comentarios para que los programas sean más fáciles
de entender, además de emplear variables legibles y significativas en el código. Sin
embargo, es igualmente importante no utilizar nombres de variables que sean
confusos, o dejar comentarios que contengan información incorrecta.
5. Los comentarios pueden ser muy útiles cuando tu estas leyendo tu propio código
después de un tiempo (es común que los desarrolladores olviden lo que su propio
código hace), y cuando otros están leyendo tu código (les puede ayudar a
comprender que es lo que hacen tus programas y como es que lo hacen).
Ejercicio 1
# print("Cadena #1")
print("Cadena #2")
Cadena #2
Ejercicio 2
# Esto es
un comentario
en varias líneas #
print("Hola!")
La función input()
Ahora se introducirá una nueva función, la cual pareciese ser un reflejo de la
función print(). ¿Por qué? Bueno, print() envía datos a la consola. Esta nueva
función obtiene datos de ella. print() no tiene un resultado utilizable. La importancia
de esta nueva función es que regresa un valor muy utilizable. La función se
llama input(). El nombre de la función lo dice todo. La función input() es capaz de
leer datos que fueron introducidos por el usuario y pasar esos datos al programa en
ejecución. El programa entonces puede manipular los datos, haciendo que el código
sea verdaderamente interactivo. Todos los programas leen y procesan datos. Un
programa que no obtiene datos de entrada del usuario es un programa sordo.
Observa el ejemplo:
print("Dime algo...")
algo = input()
print("Mmm...", algo, "...¿en serio?")
La función input() al ser invocada con un argumento, contiene una cadena con un
mensaje. El mensaje será mostrado en consola antes de que el usuario tenga
oportunidad de escribir algo. Después de esto input() hará su trabajo. Esta variante
de la invocación de la función input() simplifica el código y lo hace más claro.
La última línea lo explica todo, se intentó aplicar el operador ** a 'str' (una cadena)
acompañado por un 'float' (valor flotante). Esto está prohibido. Esto debe de ser
obvio. ¿Puedes predecir el valor de "ser o no ser" elevado a la 2 potencia? No
podemos. Python tampoco puede. ¿Habremos llegado a un punto muerto? ¿Existirá
alguna solución? Claro que la hay.
Esto es muy simple y muy efectivo. Sin embargo, estas funciones se pueden invocar
directamente pasando el resultado de la función input() directamente. No hay
necesidad de emplear variables como almacenamiento intermedio. ¿Puedes
imaginar como la cadena introducida por el usuario fluye desde la
función input() hacía la función print()?
Concatenación
El signo de + (más), al ser aplicado a dos cadenas, se convierte en un operador de
concatenación:
string + string
Simplemente concatena (junta) dos cadenas en una. Además, puede ser utilizado
más de una vez en una misma expresión. En contraste con el operador aritmético,
el operador de concatenación no es conmutativo, por ejemplo, "ab" + "ba" no es lo
mismo que "ba" + "ab". No olvides, si se desea que el signo + sea un concatenador,
no un sumador, solo se debe asegurar que ambos argumentos sean cadenas. No
se pueden mezclar los tipos de datos aquí.
Replicación
El signo de * (asterisco), cuando es aplicado a una cadena y a un número (o a un
número y cadena) se convierte en un operador de replicación.
cadena * número
número * cadena
Este sencillo programa "dibuja" un rectángulo, haciendo uso del operador (+), pero
en un nuevo rol:
str(número)
Se ha modificado un poco para mostrar cómo es que la función str() trabaja. Gracias
a esto, podemos pasar el resultado entero a la función print() como una sola cadena,
sin utilizar las comas. Ya conoces los tipos de datos básicos y un conjunto de
operadores fundamentales. Sabes cómo organizar la salida y cómo obtener datos
del usuario.
Objetivos
Familiarizarse con la entrada y salida de datos en Python.
Evaluar expresiones simples.
Escenario
La tarea es completar el código para evaluar y mostrar el resultado de cuatro
operaciones aritméticas básicas. El resultado debe ser mostrado en consola. Quizá
no podrás proteger el código de un usuario que intente dividir entre cero. Por ahora,
no hay que preocuparse por ello.
Objetivos
Familiarizarse con los conceptos de números, operadores y expresiones
aritméticas en Python.
Comprender la precedencia y asociatividad de los operadores de Python, así
como el correcto uso de los paréntesis.
Escenario
La tarea es completar el código para poder evaluar la siguiente expresión:
Datos de Prueba
Entrada de muestra: 1
Salida esperada:
y = 0.6000000000000001
Entrada de muestra: 10
Salida esperada:
y = 0.09901951266867294
Entrada de muestra: -5
Salida esperada:
y = -0.19258202567760344
Objetivos
Mejorar la habilidad de implementar números, operadores y operaciones
aritméticas en Python.
Utilizar la función print() y sus capacidades de formateo.
Aprender a expresar fenómenos del día a día en términos de un lenguaje de
programación.
Escenario
La tarea es preparar un código simple para evaluar o encontrar el tiempo final de un
periodo de tiempo dado, expresándolo en horas y minutos. Las horas van de 0 a 23
y los minutos de 0 a 59. Por ejemplo, si el evento comienza a las 12:17 y dura 59
minutos, terminará a las 13:16. No te preocupes si tu código no es perfecto, está
bien si acepta una hora inválida, lo más importante es que el código produzca una
salida correcta acorde a la entrada dada. Pista: utilizar el operador % puede ser
clave para el éxito.
Datos de Prueba
Entrada de muestra:
12
17
59
Entrada de muestra:
0
1
2939
RESUMEN DE LA SECCIÓN
Puntos clave
1. La función print() envía datos a la consola, mientras que la función input() obtiene
datos de la consola.
2. La función input() viene con un parámetro inicial: un mensaje de tipo cadena para
el usuario. Permite escribir un mensaje antes de la entrada del usuario, por ejemplo:
Ejercicio 1
55
Ejercicio 2
<class 'str'>