2.1.
1 Tu primer programa
Es hora de comenzar a escribir código real y funcional en Python. Por el momento será
muy sencillo.
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, verás la línea de
texto en la ventana de consola.
Como alternativa, inicia IDLE, crea un nuevo archivo fuente de Python, coloca este código,
nombra el archivo y guárdalo. Ahora ejecútalo. Si todo sale bien, verás el texto contenido
entre comillas en la ventana de la consola IDLE. 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.
play_arrow
sync
download
light_modedark_mode
1
2
print("¡Hola, Mundo!")
Console terminalsync
Ahora dedicaremos un poco de tiempo para mostrarte y explicarte lo que estás viendo y por
que se ve así.
Como puedes ver, el primer programa consta de las siguientes partes:
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.
2.1.2 La función print()
Observa la línea de código de abajo:
1
2
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 que sus
parientes matemáticos.
Una función (en este contexto) 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 (por ejemplo, la raíz cuadrada de un valor o la longitud de un
texto dado) y devolverlo como el resultado de la función; 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?
expand_less
De Python mismo
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 (por ejemplo, pedirle a alguien algo) si quieres usarla;
expand_less
De módulos
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 (te
mostraremos cómo hacer esto pronto);
expand_less
De tu código
Puedes escribirlas tú mismo, colocando tantas funciones como desees y necesites dentro
de su 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.
2.1.3 Argumentos de funciones
Como se dijo anteriormente, una función puede tener:
Un efecto;
Un resultado.
También existe un tercer componente de la función, muy importante - el o
los argumento(s).
Las funciones matemáticas usualmente toman un argumento. por ejemplo, sen(x) toma una
x, que es la medida de un ángulo.
Las funciones de Python, por otro lado, son más versátiles. Dependiendo de las necesidades
individuales, pueden aceptar cualquier cantidad de argumentos - tantos como sea necesario
para realizar sus tareas. Nota: Cuando dijimos cualquier número, eso incluye el cero -
algunas funciones de Python no necesitan ningún argumento.
print("¡Hola, Mundo!")
A pesar del número de argumentos necesarios o proporcionados, las funciones de Python
demandan fuertemente la presencia de un par de paréntesis - el de apertura y de cierre,
respectivamente.
Si deseas entregar uno o más argumentos a una función, colócalos dentro de los
paréntesis. Si vas a utilizar una función que no tiene ningún argumento, aún tiene que tener
los paréntesis.
Nota: para distinguir las palabras comunes de los nombres de funciones, coloca un par de
paréntesis vacíos después de sus nombres, incluso si la función correspondiente requiere
uno o más argumentos. Esta es una medida estándar.
La función de la que estamos hablando aquí es print().
¿La función print() en nuestro ejemplo tiene algún argumento?
Por supuesto que si, pero ¿qué son los argumentos?
Una cadena como el argumento de la
función print()
El único argumento entregado a la función print() en este ejemplo es una cadena:
print("¡Hola, Mundo!")
Como puedes 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. Intenta jugar con esta cadena en particular - puedes modificarla,
Ingresa contenido nuevo, o borra parte del contenido existente.
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.
2.1.4 Invocación de funciones
El nombre de la función (print en este caso) junto con los paréntesis y los argumento(s),
forman la invocación de la función.
1
2
print("¡Hola, Mundo!")
Discutiremos esto con más profundidad pronto, pero arrojemos un poco de luz sobre esto
ahora.
¿Qué sucede cuando Python encuentra una invocación como la que está a continuación?
function_name(argument)
Veamos:
Primero, Python comprueba si el nombre especificado es legal (explora sus datos
internos para encontrar una función existente del nombre; si esta búsqueda falla,
Python aborta el código)
En segundo lugar, Python comprueba si los requisitos de la función para el número
de argumentos le permiten invocar la función de esta manera (por ejemplo, si una
función específica exige exactamente dos argumentos, cualquier invocación que
entregue solo un argumento se considerará errónea y abortará la ejecución del
código)
Tercero, Python deja el código por un momento y salta dentro de la función que se
desea invocar; por lo tanto, también toma los argumento(s) y los pasa a la función;
Cuarto, la función ejecuta el código, provoca el efecto deseado (si lo hubiera),
evalúa el (los) resultado(s) deseado(s) y termina la tarea;
Finalmente, Python regresa al código (al lugar inmediatamente después de la
invocación) y reanuda su ejecución.
2.1.5 LAB Trabajando con la función print()
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:
Utiliza la función print() para imprimir la linea ¡Hola, Mundo! en la pantalla.
Usa comillas dobles alrededor de la cadena.
Habiendo hecho eso, usa la función print() nuevamente, pero esta vez imprime tu
nombre.
Elimina las comillas dobles y ejecuta tu código. Mira la reacción de Python. ¿Qué
tipo de error arroja?
Luego, elimina los paréntesis, vuelve a colocar las comillas dobles y ejecuta tu
código nuevamente. ¿Qué tipo de error arroja esta vez?
Experimenta todo lo que puedas. Cambia las comillas dobles a comillas simples, usa
múltiples funciones print() en la misma línea, y luego en diferentes líneas. Mira
qué pasa.
play_arrow
sync
download
light_modedark_mode
1
Console terminalsync
Solución de muestra
2.1.6 La función print() y su efecto, argumentos, y valores retornados
Hay que responder a tres preguntas importantes lo antes posible:
1. ¿Qué efecto tiene la función print()?
El efecto es muy útil y muy espectacular. La función:
toma sus argumentos (puede aceptar más de un argumento y también puede aceptar
menos de un argumento)
los convierte a un formato legible si es necesario (como puedes sospechar, las
cadenas no requieren esta acción, ya que la cadena ya es legible)
y envía los datos resultantes al dispositivo de salida (normalmente la consola); en
otras palabras, todo lo que pongas en la función print() se aparecerá en tu pantalla.
No es de extrañar entonces que, de ahora en adelante, utilices print() muy intensamente
para ver los resultados de sus operaciones y evaluaciones.
2. ¿Qué argumentos espera print()?
Cualquiera. Pronto te mostraremos que print() puede operar con prácticamente todos los
tipos de datos que ofrece Python. Cadenas, números, caracteres, valores lógicos, objetos -
cualquiera de estos se puede pasar con éxito a print().
3. ¿Qué valor devuelve la función print()?
Ninguno. Su efecto es suficiente.
2.1.7 Instrucciones
Ya has visto un programa de computadora que contiene una invocación de función. La
invocación de una función es uno de los muchos tipos posibles de instrucciones de Python.
Por supuesto, cualquier programa complejo generalmente contiene muchas más
instrucciones que una. La pregunta es: ¿Cómo se acopla más de una instrucción en el
código de Python?
La sintaxis de Python es bastante específica en esta área. A diferencia de la mayoría de los
lenguajes de programación, Python requiere que no haya más de una instrucción por
línea.
Una línea puede estar vacía (por ejemplo, puede no contener ninguna instrucción) pero no
debe contener dos, tres o más instrucciones. Esto está estrictamente prohibido.
Nota: Python hace una excepción a esta regla - permite que una instrucción se extienda por
más de una línea (lo que puede ser útil cuando el código contiene construcciones
complejas).
Vamos a expandir el código un poco, puedes verlo en el editor. Ejecútalo y observa lo que
aparece en la consola.
play_arrow
sync
download
light_modedark_mode
1
2
3
print("La Witsi Witsi Araña subió a su telaraña.")
print("Vino la lluvia y se la llevó.")
Console terminalsync
Tu consola de Python ahora debería verse así:
La Witsi Witsi Araña subió a su telaraña.
Vino la lluvia y se la llevó.
Output
Esta es una buena oportunidad para hacer algunas observaciones:
El programa invoca a la función print() dos veces, y puedes ver dos líneas
separadas en la consola - esto significa que print() comienza su salida desde una
nuevalí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 refleja - esto significa que las instrucciones en el código
se ejecutan en el mismo orden en el que se han colocado en el archivo fuente; no
se ejecuta ninguna instrucción posterior hasta que se completa la anterior (hay
algunas excepciones a esta regla, pero puede ignorarlas por ahora.)
Hemos cambiado un poco el ejemplo - hemos agregado una invocación vacía de la
función print(). La llamamos vacía porque no hemos entregado ningún argumento a la
función.
Puedes verlo en la ventana del editor. Ejecuta el código.
¿Qué sucede?
play_arrow
sync
download
light_modedark_mode
1
2
3
4
print("La Witsi Witsi Araña subió a su telaraña.")
print()
print("Vino la lluvia y se la llevó.")
Console terminalsync
Si todo va bien, deberías ver algo como esto:
La Witsi Witsi Araña subió a su telaraña.
Vino la lluvia y se la llevó.
Output
Como puedes ver, la invocación vacía de print() no está tan vacía como podrías haber
esperado - genera una línea vacía o (esta interpretación también es correcta) genera una
nuevalínea.
Esta no es la única forma de producir una nuevalínea en la consola de salida. Ahora le
mostraremos otra manera.
2.1.8 Caracteres de escape y nueva línea en Python
Hemos modificado el código de nuevo. Obsérvalo con cuidado.
Hay dos cambios muy sutiles - hemos insertado un par extraño de caracteres dentro del
texto. Se ven así: \n.
play_arrow
sync
download
light_modedark_mode
1
2
3
4
print("La Witsi Witsi Araña\nsubió a su telaraña.")
print()
print("Vino la lluvia\ny se la llevó.")
Console terminalsync
Curiosamente, mientras puedes ver dos caracteres, Python ve uno.
La barra invertida (\) tiene un significado muy especial cuando se usa dentro de cadenas -
se llama carácter de escape.
La palabra escape debe entenderse específicamente - significa que la serie de caracteres en
la cadena se escapa por un momento (un momento muy breve) para introducir una inclusión
especial.
En En otras palabras, la barra invertida no significa nada en sí misma, sino que es solo una
especie de anuncio de que el siguiente carácter después de la barra invertida también tiene
un significado diferente.
La la letra n colocada después de la barra invertida proviene de la palabra newline.
Tanto la barra invertida como n forman un símbolo especial llamado un carácter de
nuevalínea, que insta a la consola a iniciar una nuevalínea de salida.
Ejecuta el código. Tu consola ahora debería verse así:
La Witsi Witsi Araña
subió a su telaraña.
Vino la lluvia
y se la llevó.
Output
Como se puede observar, aparecen dos nuevas líneas en la canción infantil, en los lugares
donde se ha utilizado \n.
Esta convención tiene dos consecuencias importantes:
1. Si deseas colocar solo una barra invertida dentro de una cadena, no olvides su naturaleza
de escape - tienes que duplicarla. Por ejemplo, una invocación como esta provocará un
error:
print("\")
mientras que esta no lo hará:
print("\\")
2. No todos los pares de escape (la barra invertida junto con otro carácter) significan algo.
Experimenta con tu código en el editor, ejecútalo y ve qué sucede.
play_arrow
sync
download
light_modedark_mode
1
2
3
4
print("La Witsi Witsi Araña\nsubió a su telaraña.")
print()
print("Vino la lluvia\nay se la llevó.")
Console terminalsync
2.1.9 Usando múltiples argumentos
Hasta ahora hemos probado el comportamiento de la función print() sin argumentos y
con un argumento. También vale la pena intentar alimentar a la función print() con más de
un argumento.
Mira la ventana del editor. Esto es lo que vamos a probar ahora:
play_arrow
sync
download
light_modedark_mode
1
2
print("La Witsi Witsi Araña" , "subió" , "a su telaraña.")
Console terminalsync
Hay una invocación de la función print(), pero contiene tres argumentos. Todos ellos son
cadenas.
Los argumentos están separados por comas. Los hemos rodeado de espacios para hacerlos
más visibles, pero no es realmente necesario, y no lo haremos más.
En este caso, las comas al separar los argumentos juega un papel completamente diferente
al de la coma dentro de la cadena. El primero es parte de la sintaxis de Python, mientras que
el segundo está diseñado para mostrarse en la consola.
Si observas el código nuevamente, verás que hay no hay espacios dentro de las cadenas.
Ejecuta el código y ve qué sucede.
La consola ahora debería mostrar el siguiente texto:
La Witsi Witsi Araña subió a su telaraña.
Output
Los espacios, eliminados de las cadenas, han vuelto a aparecer. ¿Puedes explicar por qué?
Dos conclusiones emergen de este ejemplo:
La función print() invocada con más de un argumento los muestra todos en una
sola línea.
La función print() pone un espacio entre los argumentos de salida por iniciativa
propia.
2.1.10 Argumentos posicionales
Ahora que sabes un poco sobre las costumbres de la función print(), te mostraremos
cómo cambiarlas.
Deberías poder predecir la salida sin ejecutar el código en el editor.
play_arrow
sync
download
light_modedark_mode
1
2
3
print("Mi nombre es", "Python.")
print("Monty Python.")
Console terminalsync
La forma en que estamos pasando los argumentos a la función print() es la más común en
Python, y se llama la forma posicional. Este nombre proviene del hecho de que el
significado del argumento está dictado por su posición (por ejemplo, el segundo argumento
se mostrará después del primero, no al revés).
Ejecuta el código y comprueba si el resultado coincide con tus predicciones.
2.1.11 Argumentos de palabra clave
Python ofrece otro mecanismo para el paso de argumentos, que puede ser útil cuando
deseas convencer a la función print() para que cambie un poco su comportamiento.
No vamos a explicarlo en profundidad ahora. Planeamos hacerlo cuando hablemos de
funciones. Por ahora, simplemente queremos mostrarte cómo funciona. Siéntete libre de
usarlo en tus propios programas.
El mecanismo se llama argumentos de palabras clave. El nombre proviene del hecho de
que el significado de estos argumentos se toma no de su ubicación (posición) sino de la
palabra especial (palabra clave) utilizada para identificarlos.
La función print() tiene dos argumentos de palabra clave que puedes usar para tus
propósitos. El primero se llama end.
En la ventana del editor puedes ver un ejemplo muy simple de cómo usar un argumento de
palabra clave.
play_arrow
sync
download
light_modedark_mode
1
2
3
print("Mi nombre es", "Python.", end=" ")
print("Monty Python.")
Console terminalsync
Para usarlo, es necesario conocer algunas reglas:
Un argumento de palabra clave consta de tres elementos: una palabra clave se
identifica el argumento (end aquí); un signo de igual (=); y un valor asignado a ese
argumento;
cualquier argumento de palabra clave debe colocarse después del último
argumento posicional (esto es muy importante)
En nuestro ejemplo, hemos utilizado el argumento de palabra clave end, y lo hemos
configurado como cadena que contiene un espacio.
Ejecuta el código para ver cómo funciona.
La consola ahora debería estar mostrando el siguiente texto:
Mi nombre es Python. Monty Python.
Output
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 palabra
clave end se usa implícitamente de la siguiente manera: end="\n".
Y ahora es el momento de intentar algo más difícil.
Si miras con atención, verás que hemos usado el argumento end, pero la cadena que se le
asignó está vacía (no contiene ningún carácter).
¿Qué sucederá ahora? Ejecuta el programa en el editor para averiguarlo.
play_arrow
sync
download
light_modedark_mode
1
2
3
print("Mi nombre es ", end="")
print("Monty Python.")
Console terminalsync
Como el argumento end se ha establecido a nada, la función print() tampoco genera nada,
una vez que se han agotado sus argumentos posicionales.
La consola ahora debería mostrar el siguiente texto:
Mi nombre es Monty Python.
Output
Nota: no se han enviado líneas nuevas a la salida.
La cadena asignada al argumento de palabra clave end puede ser de cualquier longitud.
Experimenta con él si quieres.
Dijimos anteriormente que la función print() separa sus argumentos de salida con espacios.
Este comportamiento también se puede cambiar.
El argumento de palabra clave que puede hacer esto se denomina sep (como
en separador).
Mira el código en el editor, y ejecútalo.
play_arrow
sync
download
light_modedark_mode
1
2
print("Mi", "nombre", "es", "Monty", "Python.", sep="-")
Console terminalsync
El argumento sep produce los siguientes resultados:
Mi-nombre-es-Monty-Python.
Output
La función print() ahora usa un guión, en lugar de un espacio, para separar los argumentos
de salida.
Nota: el valor del argumento sep también puede ser una cadena vacía. Pruébalo tu mismo.
Ambos argumentos de palabra clave pueden mezclarse en una invocación, como aquí en
la ventana del editor.
play_arrow
sync
download
light_modedark_mode
1
2
3
print("Mi", "nombre", "es", sep="_", end="*")
print("Monty", "Python.", sep="*", end="*\n")
Console terminalsync
El ejemplo no tiene mucho sentido, pero presenta de forma visible las interacciones
entre end y sep.
¿Puedes predecir el resultado?
Ejecuta el código y comprueba si coincide con tus predicciones.
Ahora que comprendes la función print(), estás listo para considerar cómo almacenar y
procesar datos en Python.
Sin print(), no podrías ver ningún resultado.
2.1.12 LAB La función print() y sus argumentos
Escenario
Modifica la primera línea de código en el editor, usando las palabras claves
reservadas sep y end, para que se obtenga la salida esperada. Emplea dos
funciones print() en el editor.
No cambies nada en la segunda invocación del print().
Salida Esperada
Programming***Essentials***in...Python
Output
play_arrow
sync
download
light_modedark_mode
1
2
3
print("Programming","Essentials","in")
print("Python")
Console terminalsync
Solución de muestra
2.1.13 LAB Dando formato a la salida
Escenario
Te recomendamos encarecidamente que juegues con el código que hemos escrito para y
realiza algunos (quizás incluso destructivos) cambios. 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 \n en las
cadenas;
hacer que la flecha sea el doble de grande (pero mantener las proporciones)
duplica la flecha, colocando ambas flechas una al lado de la otra; nota: una cadena
se puede multiplicar usando el siguiente truco: "string" *
2 producirá "stringstring" (pronto contaremos más al respecto)
elimina cualquiera de las comillas y observe detenidamente la respuesta de Python;
presta atención a dónde Python ve un error - ¿es este el lugar donde realmente existe
el error?
haz lo mismo con algunos de los paréntesis;
cambia cualquiera de las palabras print por otra cosa, que difiera solo en
mayúsculas y minúsculas (por ejemplo, Print) - qué sucede ahora?
reemplaza algunas de las comillas con apóstrofes; observa lo que sucede con
cuidado.
play_arrow
sync
download
light_modedark_mode
1
2
3
4
5
6
7
8
9
10
11
print(" *")
print(" * *")
print(" * *")
print(" * *")
print("*** ***")
print(" * *")
print(" * *")
print(" *****")
Console terminalsync
Solución de muestra
Completado
2.1.14 RESUMEN DE SECCIÓN
2.1.14 RESUMEN DE SECCIÓN
1. La función print() es una función integrada imprime/envía un mensaje específico a la
pantalla/ventana de consola.
2. Las funciones integradas, al contrario de las funciones definidas por el usuario, están
siempre disponibles y no tienen que ser importadas. Python 3.7.1 viene con 69 funciones
incorporadas. Puedes encontrar su lista completa en orden alfabético en Python Standard
Library.
3. Para llamar a una función (invocación de función), debe utilizarse el nombre de la
función seguido de un paréntesis. Puedes pasar argumentos a una función colocándolos
dentro de los paréntesis. Se deben separar los argumentos con una coma, por
ejemplo, print("¡Hola,", "Mundo!"). Una función print() "vacía" imprime una línea
vacía a la pantalla.
4. Las cadenas de Python están delimitadas por comillas, por ejemplo, "Soy una
cadena" (comillas dobles), o 'Yo soy una cadena, también' (comillas simples).
5. Los programas de computadora son colecciones de instrucciones. Una instrucción es un
comando para realizar una tarea específica cuando se ejecuta, por ejemplo, para imprimir
un determinado mensaje en la pantalla.
6. En las cadenas de Python la barra diagonal inversa (\) es un carácter especial que
anuncia que el siguiente carácter tiene un significado diferente, por ejemplo, \
n (el carácter de nuevalínea) comienza una nuevalínea de salida.
7. Los argumentos posicionales son aquellos cuyo significado viene dictado por su
posición, por ejemplo, el segundo argumento se emite después del primero, el tercero se
emite después del segundo, etc.
8. Los argumentos de palabra clave son aquellos cuyo significado no está dictado por su
ubicación, sino por una palabra especial (palabra clave) que se utiliza para identificarlos.
9. Los parámetros end y sep se pueden usar para dar formato la salida de la
función print(). El parámetro sep especifica el separador entre los argumentos emitidos.
Por ejemplo, print("H", "E", "L", "L", "O", sep="-"), mientras que el
parámetro end especifica que imprimir al final de la declaración de impresión.
2.1.15 CUESTIONARIO DE SECCIÓN
Pregunta 1: ¿Cuál es la salida del siguiente programa?
1
2
3
print("Mi\nnombre\nes\nBond.", end=" ")
print("James Bond.")
Revisar
Pregunta 2: ¿Cuál es la salida del siguiente programa?
1
2
print(sep="&", "fish", "chips")
Revisar
Pregunta 3: ¿Cuál de las siguientes print() invocaciones de función generarán
un SyntaxError?
1
2
3
4
5
6
print('Greg\'s book.')
print("'Greg's book.'")
print('"Greg\'s book."')
print("Greg\'s book.")
print('"Greg's book."')
Revisar