0% encontró este documento útil (0 votos)
232 vistas203 páginas

Python Essentials 1. The Official OpenEDG Python Institute Beginners Course 2023-Páginas-1

Cargado por

Alberto
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
232 vistas203 páginas

Python Essentials 1. The Official OpenEDG Python Institute Beginners Course 2023-Páginas-1

Cargado por

Alberto
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 203

Machine Translated by Google

Machine Translated by Google

Acerca de este libro electrónico

Si bien ePUB es un estándar abierto ampliamente utilizado para la publicación de libros electrónicos, el
soporte y las funciones pueden variar de un dispositivo a otro. Se han hecho todos los esfuerzos posibles
para garantizar que este libro se muestre fielmente en todos los dispositivos, pero puede ser necesario ajustar la
configuración de su dispositivo en particular para una legibilidad óptima.
Hay muchos ejemplos de código empleado a lo largo de este libro. Debido a la naturaleza fluida del texto en
formato ePUB, es posible que este código, que está escrito línea por línea, no siempre se muestre
correctamente. Por ejemplo, los comentarios que comienzan con // pueden pasar a la siguiente línea. Si está
intentando recrear el código que ve en el libro electrónico y descubre que no funciona como se esperaba,
asegúrese de seguir los procedimientos de formato correctos como se describe en este libro electrónico y en
la Guía de estilo PEP 8 para código Python.
Machine Translated by Google

Conceptos básicos de Python 1

por

El Instituto OpenEDG Python


Machine Translated by Google
Machine Translated by Google

Grupo de Educación Abierta y Desarrollo


1013 Center Road, Suite 405
Wilmington, Delaware, EE.UU.

19805, Estados Unidos

Publicado por primera vez en EE. UU. en 2023 por el Open Education and Development Group

Copyright © 2023 Grupo de Educación y Desarrollo Abierto

ISBN: 979­8­9877622­0­2

Reservados todos los derechos. Este libro no puede copiarse ni reproducirse, total o parcialmente, sin el
permiso expreso por escrito del Open Education and Development Group. Si bien los autores y el editor
han tomado todas las precauciones en la preparación de este libro, no asumen ninguna responsabilidad
por errores u omisiones. Además, los autores y el editor no asumen ninguna responsabilidad por los
daños que resulten del uso de la información contenida en este libro.
Machine Translated by Google

Créditos de las
imágenes Retrato de Guido Van Rossum en la sede de Dropbox en 2014 CC BY­
SA 4.0, fotografía de Daniel Stroud.

Diseño de portada
Konrad Papka

Marcas comerciales y descargo de responsabilidad

El editor ha hecho todo lo posible para proporcionar información precisa. Todos los términos de este libro
que son marcas comerciales conocidas se escriben con mayúscula. El Open Education and
Development Group no garantiza la exactitud de dichas marcas comerciales.
El Open Education and Development Group y sus subsidiarias, incluido el OpenEDG Python Institute,
es una organización independiente sin vínculos de afiliación con ninguna otra organización,
incluida la Python Software Foundation.
No se implica ninguna garantía de idoneidad en cuanto a la exactitud de la información contenida en
este libro, aunque se han hecho todos los esfuerzos posibles para garantizar que sea lo más precisa
posible. Ni los autores ni el editor asumen responsabilidad ante ninguna persona o entidad que sufra
pérdidas o daños como resultado del uso de la información contenida en este documento.
Todos los ejemplos de código del libro se han probado en Python 3.4, 3.6, 3.7, 3.8 y 3.9 y deberían
funcionar con cualquier versión posterior de Python 3.x.

Compra al por mayor y diseño de libro personalizado Este


libro se puede comprar al por mayor en formato ePUB o PDF. Además, es posible personalizar el diseño
del libro para adaptarlo a sus necesidades. Para analizar estas opciones, envíe un correo electrónico a
[email protected].
Machine Translated by Google

CONTENIDO
BIENVENIDO A ESENCIALES DE PYTHON 1
Aprenda Python: el lenguaje de hoy y del mañana

INTRODUCCIÓN
Sobre el curso
Programa de estudios

Prepárese para el examen PCEP­30­0x

MÓDULO 1: INTRODUCCIÓN A PYTHON Y LA PROGRAMACIÓN INFORMÁTICA


SECCIÓN 1.1 – INTRODUCCIÓN A LA PROGRAMACIÓN ¿Cómo funciona un
programa de computadora?
Compilación versus interpretación: ventajas y desventajas SECCIÓN 1.2 –
INTRODUCCIÓN A PYTHON Python: una herramienta, no un reptil
¿Quién creó Python?

Un proyecto de programación por


hobby Hay más de un Python SECCIÓN
1.3 – DESCARGA E INSTALACIÓN DE PYTHON Comience su viaje a Python

MÓDULO 2: TIPOS DE DATOS DE PYTHON, VARIABLES, OPERADORES Y OPERACIONES BÁSICAS DE E/S SECCIÓN 2.1 – EL mensaje
"¡HOLA MUNDO!"

PROGRAMA 2.1.1 Su primer programa 2.1.2 La función print() 2.1.3 Argumentos de función

2.1.4 Invocación de función LABORATORIO


1 Trabajando con la función print() 2.1.5
La función print() y su efecto,
argumentos y valores devueltos 2.1.6

Instrucciones 2.1.7 Escape de Python y caracteres de nueva


línea 2.1.8 Uso de múltiples argumentos 2.1.9 Argumentos posicionales 2.1.10 Argumentos de palabras clave
LABORACIÓN 2 La

función print() y sus argumentos LABORACIÓN 3 Formateo de la


salida 2.1 RESUMEN DE LA SECCIÓN 2.1
SECCIÓN SECCIÓN 2.2 DEL EXAMEN :
LITERALES DE PYTHON

2.2.1 Literales – los datos en sí mismos


2.2.2 Enteros
2.2.3 Flotantes
2.2.4 Cadenas
2.2.5 Valores booleanos
LAB 4 Literales de Python – cadenas
Machine Translated by Google

2.2 RESUMEN DE LA SECCIÓN 2.2


EXAMEN DE LA SECCIÓN
SECCIÓN 2.3 – OPERADORES: HERRAMIENTAS DE MANIPULACIÓN DE DATOS 2.3.1 Python como

calculadora 2.3.2 Operadores básicos


2.3.3 Operadores y sus
prioridades 2.3 RESUMEN DE LA SECCIÓN 2.3
EXAMEN DE LA SECCIÓN SECCIÓN
2.4 – VARIABLES 2.4.1
Variables – datos cuadros con forma 2.4.2

Nombres de variables 2.4.3 Cómo crear una variable


2.4.4 Cómo usar una variable
2.4.5 Cómo asignar un nuevo valor a una
variable ya existente 2.4.6 Resolver

problemas matemáticos simples LABORATORIO 5 Variables 2.4.7 Operadores de acceso


directo LABORATORIO 6 Variables: un conversor simple
LABORATORIO 7

Operadores y expresiones 2.4


RESUMEN DE LA SECCIÓN 2.4 EXAMEN DE LA
SECCIÓN SECCIÓN 2.5 – COMENTARIOS 2.5.1
Comentarios: ¿por qué, cuándo y
cómo?

2.5.2 Marcado de fragmentos de código


LABORATORIO 8
Comentarios 2.5 RESUMEN DE LA
SECCIÓN 2.5 PRUEBA DE
SECCIÓN SECCIÓN 2.6 – INTERACCIÓN CON EL USUARIO 2.6.1 La función

input() 2.6.2 La función input() con un


argumento 2.6.3 El resultado de la entrada Función () 2.6.4 La función
input() – operaciones prohibidas 2.6.5 Conversión de tipos
(conversiones de tipos)

2.6.6 Más sobre input() y conversión de tipos 2.6.7 Operadores de


cadena 2.6.8 Conversiones de
tipos nuevamente LABORATORIO 9 Entrada y
salida simples LABORATORIO 10 Operadores
y expresiones LABORATORIO 11 Operadores y
expresiones 2 2.6 RESUMEN DE LA SECCIÓN 2.6
EXAMEN DE LA SECCIÓN

MÓDULO 3: VALORES BOOLEANOS, EJECUCIÓN CONDICIONAL, BUCLES, LISTAS Y PROCESAMIENTO DE LISTAS, OPERACIONES

LÓGICAS Y BITS SECCIÓN 3.1 – TOMA DE DECISIONES EN PYTHON 3.1.1 Preguntas y respuestas
Machine Translated by Google

3.1.2 Comparación: operador de igualdad 3.1.3


Ejercicios 3.1.4

Operadores 3.1.5
Haciendo uso de las respuestas LAB 12
Variables Preguntas y respuestas 3.1.6 Condiciones y
ejecución condicional 3.1.7 Análisis de muestras de código

3.1.8 Pseudocódigo e introducción al loops


LABORATORIO 13 Operadores de comparación y ejecución
condicional LABORATORIO 14 Fundamentos de la declaración if­else LABORATORIO
15 Fundamentos de la declaración if­elif­else 3.1 RESUMEN DE LA
SECCIÓN 3.1 EXAMEN DE LA SECCIÓN SECCIÓN 3.2 – BUCLES EN
PYTHON 3.2.1 Looping de su código
con while 3.2. 2 Un bucle
infinito 3.2.3 El bucle while : más ejemplos LABORATORIO 16

Adivina el número secreto 3.2.4 Looping de tu código


con for 3.2.5 Más sobre el
bucle for y la función range() con tres argumentos
LABORATORIO 17 Fundamentos del for bucle –

contando mississippily 3.2.5 Las sentencias break


y continue LABORATORIO 18 La sentencia break – Atascado en un bucle LABORATORIO 19 La sentencia continue
– el Feo Devorador de Vocales LABORATORIO 20 La sentencia continue – el Pretty
Vowel Eater 3.2.6 El bucle while y el rama else 3.2.7 El bucle for y

la rama else LABORATORIO 21 Fundamentos del bucle while


LABORATORIO 22 La hipótesis de Collatz 3.2 RESUMEN DE LA SECCIÓN 3.2
EXAMEN DE LA SECCIÓN SECCIÓN 3.3 – OPERACIONES LÓGICAS Y DE BIT EN
PYTHON 3.3.1 Lógica informática 3.3.2 Expresiones lógicas 3.3.
3 Valores lógicos frente a bits individuales 3.3.4 Operadores
bit a bit 3.3.5 ¿Cómo tratamos con bits individuales?

3.3.6 Desplazamiento binario a la izquierda y desplazamiento


binario a la derecha 3.3 RESUMEN
DE LA SECCIÓN 3.3
EXAMEN DE LA SECCIÓN SECCIÓN

3.4 – LISTAS 3.4.1 ¿Por qué necesitamos listas?


3.4.2 Indexar listas 3.4.3
Acceder al contenido de una lista 3.4.4
Eliminar elementos de una lista 3.4.5 Los índices
negativos son legales LABORATORIO 23 Los
conceptos básicos de las listas
Machine Translated by Google

3.4.6 Funciones versus métodos 3.4.7

Agregar elementos a una lista: append() e insert()


3.4.8 Uso de listas 3.4.9 Listas en
acción LABORATORIO 24
Los conceptos básicos de las listas: los Beatles 3.4
RESUMEN DE LA SECCIÓN 3.4
EXAMEN DE LA SECCIÓN
SECCIÓN 3.5 – CLASIFICACIÓN DE LISTAS SIMPLES: EL ALGORITMO DE ORDENACIÓN DE BURBUJA
3.5.1 Clasificación por burbujas

3.5.2 Clasificación de una


lista 3.5.3 Clasificación por burbujas – versión interactiva 3.5
RESUMEN DE LA SECCIÓN 3.5
EXAMEN DE LA SECCIÓN
SECCIÓN 3.6 – OPERACIONES EN LISTAS
3.6.1 La vida interna de las listas 3.6.2
Porciones poderosas 3.6.3

Porciones: índices negativos 3.6.4 Los


operadores dentro y no dentro 3.6.5 Listas: algunos
programas simples PRACTICA 25 Operando con
listas: conceptos básicos 3.6 RESUMEN DE LA
SECCIÓN 3.6 PRUEBA DE LA
SECCIÓN SECCIÓN 3.7 –
LISTAS EN APLICACIONES AVANZADAS
3.7.1 Listas en listas 3.7.2

Arreglos bidimensionales 3.7.3 Naturaleza


multidimensional de las listas: aplicaciones avanzadas 3.7 RESUMEN DE LA SECCIÓN

MÓDULO 4: FUNCIONES, TUPLAS, DICCIONARIOS, EXCEPCIONES Y PROCESAMIENTO DE DATOS SECCIÓN 4.1 – FUNCIONES
4.1.1 ¿Por qué

necesitamos funciones?

4.1.2 Descomposición 4.1.3


¿De dónde vienen las funciones?
4.1.4 Su primera función 4.1.5
Cómo funcionan las funciones 4.1
RESUMEN DE LA SECCIÓN 4.1
EXAMEN DE LA SECCIÓN
SECCIÓN 4.2 – CÓMO SE COMUNICAN LAS FUNCIONES CON SU ENTORNO

4.2.1 Funciones parametrizadas 4.2.2 Paso

de parámetros posicionales 4.2.3 Paso de


argumentos de palabras clave 4.2.4 Combinación
de argumentos posicionales y de palabras clave 4.2.5 Funciones
parametrizadas: más detalles 4.2 RESUMEN DE LA SECCIÓN
Machine Translated by Google

4.2 SECCIÓN EXAMEN


SECCIÓN 4.3 – DEVOLVER UN RESULTADO DE UNA FUNCIÓN 4.3.1 Efectos y resultados: la instrucción
de devolución 4.3.2 Algunas palabras sobre Ninguno 4.3.3 Efectos y
resultados: listas y funciones LABORATORIO
26 Un año bisiesto: escribir tus propias funciones LABORATORIO

27 Cuántos días: escribir y usar tus propias funciones LABORATORIO


28 Día del año: escribir y usar tus propias funciones LABORATORIO 29 Números primos:
cómo encontrarlos LABORATORIO 30 Conversión del consumo de combustible 4.3
RESUMEN DE LA SECCIÓN 4.3 EXAMEN DE LA SECCIÓN

SECCIÓN 4.4 – ALCANCE EN PYTHON 4.4.1


Funciones y alcances 4.4.2 Funciones
y alcances: la palabra clave
global 4.4.3 Cómo interactúa la función con sus argumentos 4.4

RESUMEN DE LA SECCIÓN 4.4


EXAMEN DE SECCIÓN SECCIÓN 4.5 – CREACIÓN DE FUNCIONES
MULTIPARÁMETRO 4.5.1 Funciones de muestra: Evaluación del IMC 4.5.2
Funciones de muestra: Triángulos 4.5.3
Funciones de muestra:
Factoriales 4.5.4 Números de Fibonacci 4.5.5 Recursión 4.5 RESUMEN DE LA SECCIÓN 4.5 EXAMEN DE

SECCIÓN SECCIÓN 4.6 – TUPLAS Y DICCIONARIOS 4.6.1


Tipos de secuencias y mutabilidad 4.6.2 Tuplas
4.6.3 Diccionarios 4.6.4 Métodos y funciones del
diccionario 4.6.5 Las tuplas y los
diccionarios pueden
funcionar juntos 4.6 RESUMEN DE LA
SECCIÓN 4.6 EXAMEN DE
LA SECCIÓN SECCIÓN 4.7 – EXCEPCIONES 4.7.1 Errores: el pan de cada día

del desarrollador 4.7.2 Cuando los datos no son lo que


deberían ser 4.7.3
El rama try­except 4.7.4

La excepción confirma la regla 4.7.5 Cómo lidiar con más


de una excepción 4.7.6 La excepción predeterminada y cómo usarla
4.7.7 Algunas excepciones útiles 4.7.8
Por qué no puedes evitar las
pruebas tu código 4.7.9 Cuando Python cierra los

ojos 4.7.10 Pruebas, tests y testers 4.7.11 Depuración de


impresiones
Machine Translated by Google

4.7.12 Algunos consejos útiles


4.7.13 Pruebas unitarias: un nivel superior de codificación 4.7
RESUMEN DE LA SECCIÓN 4.7
EXAMEN DE LA SECCIÓN

APÉNDICES

APÉNDICE A: CONSEJOS DE LABORATORIO

APÉNDICE B: SOLUCIONES DE MUESTRAS DE LABORATORIO


APÉNDICE C: RESPUESTAS
APÉNDICE D: PROGRAMA DEL EXAMEN PCEP
Machine Translated by Google

BIENVENIDO A ESENCIALES DE PYTHON 1


Machine Translated by Google

Aprenda Python: el lenguaje de hoy y del mañana Este curso es el primero de


una serie de dos cursos Python Essentials . Cubre todo lo que necesita saber para
comenzar a diseñar, escribir, ejecutar, depurar y mejorar programas Python en el nivel básico.
También lo prepara completamente para el examen de certificación PCEP ( Programador
Python certificado de nivel inicial) del Instituto Python.
Machine Translated by Google

INTRODUCCIÓN
Python es uno de los lenguajes de programación de más rápido crecimiento en el mundo y se utiliza en casi
todos los sectores e industrias, desde los juegos hasta la medicina y la física nuclear. Es esencial que cualquier
aspirante a programador tenga al menos un conocimiento básico de Python.
Afortunadamente, Python también es uno de los lenguajes de programación más fáciles de aprender. Con su enfoque
en palabras y sintaxis del mundo real, un principiante de Python puede comenzar a escribir programas simples en
cuestión de minutos.

Objetivos de este libro


Este libro está diseñado para enseñarle los conceptos básicos de la programación Python, incluso si no tiene
experiencia en programación.
Además, lo prepara para tomar el examen PCEP Python Certified Entry­Level Python Programmer, que
se puede tomar a través de la plataforma de pruebas OpenEDG TestNow™.
Al final de este libro, encontrará el programa de estudios completo para el examen PCEP Python Certified Entry­Level
Python Programmer.

Herramientas de aprendizaje

Edube
También se puede acceder al material que se encuentra en este libro en línea en www.edube.org. Aquí es posible
realizar otros cursos como JavaScript Essentials o C/C++ Essentials y avanzar a los cursos intermedios y
avanzados de Python. Además, a través de la plataforma Edube, puedes adquirir bonos de examen y programar un
examen.

Salvadera
La plataforma educativa Edube ofrece una zona de pruebas de programación interactiva, donde puede probar los
ejemplos de código que se muestran en este libro. Sandbox estará disponible tan pronto como cree una cuenta en
Edube.
Machine Translated by Google

Sobre el curso
¡Bienvenido a Python Essentials 1! Este curso ha sido diseñado y desarrollado por el OpenEDG Python
Institute. en asociación con Cisco Networking Academy.
El curso ha sido creado para cualquiera que quiera aprender Python y técnicas de programación
modernas. Atraerá especialmente a:

aspirantes a programadores y estudiantes interesados en aprender a programar por diversión y para


tareas relacionadas
con el trabajo; estudiantes que buscan adquirir habilidades y conocimientos fundamentales para un
puesto laboral de nivel inicial como desarrollador de
software, analista de datos o evaluador; profesionales de la industria que deseen explorar tecnologías
que estén conectadas con Python o
que lo utilicen como base; líderes de equipo, gerentes de productos y gerentes de proyectos que
desean comprender la terminología y los procesos en el ciclo de desarrollo de software para
administrar y comunicarse de manera más efectiva con los equipos de producción y desarrollo.

Durante el curso, tendrá acceso a materiales prácticos, laboratorios, cuestionarios, evaluaciones y


pruebas para aprender a utilizar las habilidades y conocimientos adquiridos al estudiar los recursos y realizar
tareas de codificación, e interactuar con algunos desafíos de programación de la vida real. y situaciones.
Machine Translated by Google

Programa de estudios

En este curso aprenderás:

los conceptos universales de programación informática; la


sintaxis y semántica del lenguaje Python; habilidades prácticas
para resolver desafíos típicos de implementación; cómo utilizar los elementos
más importantes de la biblioteca estándar de Python; cómo instalar su entorno de ejecución;
cómo diseñar, desarrollar, probar y depurar
programas simples de Python.

El curso se divide en cuatro módulos:


Módulo 1
Introducción a Python y la programación informática; Módulo 2
Tipos de
datos, variables, operaciones básicas de entrada­salida y operadores básicos; Módulo 3
Valores
booleanos, ejecución condicional, bucles, listas y procesamiento de listas, operaciones lógicas y bit a bit; Módulo
4 Funciones,
tuplas,
diccionarios, excepciones y procesamiento de datos.
Machine Translated by Google

Prepárese para el examen PCEP­30­0x Sumérgete en la

programación, aprende Python desde cero y prepárate para la certificación PCEP (Certified Entry­Level Python
Programmer) Python Essentials 1 está alineado con la PCEP
( Certificación Certified Entry­Level Python Programmer), un profesional. credencial que
demuestra la comprensión del titular de la sintaxis y la semántica del lenguaje Python, así como su
competencia en el uso de los elementos más esenciales del lenguaje, las herramientas y los recursos para diseñar,
desarrollar y refactorizar programas Python simples.

El titular de la certificación conoce la sintaxis del lenguaje Python a un nivel que le permite trabajar con variables,
operadores, mecanismos de flujo de control y funciones, así como también comprende los fundamentos del
sistema de tipos de datos de Python, manejo de excepciones, resolución de problemas, depuración, y el
entorno de ejecución.

PCEP (la certificación de Programador Python certificado de nivel inicial) es un paso intermedio para la certificación
PCAP (Asociado certificado en programación Python) y el punto de partida para iniciar una carrera en desarrollo
de software, programación Python y tecnologías relacionadas.
Obtener la certificación PCEP lo ayudará a destacarse de otros candidatos y a poner un pie en la puerta.

Para obtener más información sobre la certificación PCEP – Programador certificado de Python de nivel inicial , visite
www.PythonInstitute.org.
Machine Translated by Google
Machine Translated by Google

MÓDULO 1: INTRODUCCIÓN A PYTHON Y


PROGRAMACIÓN DE COMPUTADORAS
Machine Translated by Google

SECCIÓN 1.1 – INTRODUCCIÓN A LA PROGRAMACIÓN


¡Hola y bienvenidos al Módulo Uno! Comenzaremos aprendiendo sobre algunos de los conceptos
universales de la programación, como lista de instrucciones, archivo fuente, elementos del lenguaje,
compilación e interpretación. ¿Listo? ¡Empecemos!
Machine Translated by Google

¿Cómo funciona un programa de computadora?


Un programa hace que una computadora sea utilizable. Sin un programa, una computadora, incluso la más poderosa,
no es más que un objeto. De manera similar, sin un intérprete, un piano no es más que una caja de madera.

Las computadoras pueden realizar tareas muy complejas, pero esta habilidad no es innata. La naturaleza de una
computadora es bastante diferente.
Sólo puede ejecutar operaciones extremadamente simples. Por ejemplo, una computadora no puede comprender por
sí sola el valor de una función matemática complicada, aunque esto no está fuera de lo posible en un futuro
cercano.
Las computadoras contemporáneas sólo pueden evaluar los resultados de operaciones muy fundamentales, como
sumar o dividir, pero pueden hacerlo muy rápido y pueden repetir estas acciones prácticamente cualquier número
de veces.

Imagina que quieres saber la velocidad media que has alcanzado durante un viaje largo. Conoces la distancia,
conoces el tiempo, necesitas la velocidad.
Naturalmente, la computadora podrá calcular esto, pero no es consciente de cosas como la distancia, la velocidad
o el tiempo. Por lo tanto, es necesario indicarle a la computadora que:

aceptar un número que represente la distancia; aceptar


un número que represente el tiempo de viaje; dividir el
primer valor por el segundo y almacenar el resultado en la memoria; mostrar el resultado
(que representa la velocidad promedio) en un formato legible.

Estas cuatro acciones simples forman un programa. Por supuesto, estos ejemplos no están formalizados y están muy
lejos de lo que la computadora puede entender, pero son lo suficientemente buenos como para traducirlos a un
idioma que la computadora pueda aceptar.
El idioma es la palabra clave.

Lenguajes naturales versus lenguajes de programación


Un lenguaje es un medio (y una herramienta) para expresar y registrar pensamientos. Hay muchos idiomas a nuestro
alrededor. Algunas de ellas no requieren ni hablar ni escribir, como el lenguaje corporal; es posible expresar tus
sentimientos más profundos con mucha precisión sin decir una palabra.
Otro idioma que utilizas cada día es tu lengua materna, que utilizas para manifestar tu voluntad y reflexionar sobre la
realidad. Las computadoras también tienen su propio lenguaje, llamado lenguaje de máquina , que es muy
rudimentario.
Una computadora, incluso la más sofisticada técnicamente, carece incluso de un rastro de inteligencia.
Se podría decir que es como un perro bien entrenado: responde sólo a un conjunto predeterminado de órdenes
conocidas.

Los comandos que reconoce son muy simples. Podemos imaginar que el ordenador responde a órdenes del tipo "tomar
ese número, dividirlo por otro y guardar el resultado".
Un conjunto completo de comandos conocidos se denomina lista de instrucciones, a veces abreviada como IL.
Los diferentes tipos de computadoras pueden variar según el tamaño de sus IL y las instrucciones pueden ser
completamente diferentes en diferentes modelos.
Nota: los lenguajes de máquina son desarrollados por humanos.
Machine Translated by Google

Actualmente, ninguna computadora es capaz de crear un nuevo idioma. Sin embargo, eso puede cambiar pronto.
Así como las personas usan varios lenguajes muy diferentes, las máquinas también tienen muchos lenguajes diferentes.
La diferencia, sin embargo, es que los lenguajes humanos se desarrollaron de forma natural.

Además, todavía están evolucionando y cada día se crean nuevas palabras a medida que las viejas desaparecen.
Estos lenguajes se llaman lenguajes naturales.

¿Qué constituye una lengua?


Podemos decir que cada lenguaje (máquina o natural, da igual) consta de los siguientes elementos:

Un alfabeto: un conjunto de símbolos utilizados para formar palabras de un determinado idioma (por ejemplo, el alfabeto
latino para el inglés, el alfabeto cirílico para el ruso, el kanji para el japonés, etc.)

Un léxico: (también conocido como diccionario) un conjunto de palabras que el idioma ofrece a sus usuarios (por
ejemplo, la palabra "computadora" proviene del diccionario del idioma inglés, mientras que "cmoptrue" no; la palabra "chat"
está presente tanto en inglés como en Diccionarios de francés, pero sus significados son diferentes)

Una sintaxis: un conjunto de reglas (formales o informales, escritas o sentidas intuitivamente) que se utilizan para determinar
si una determinada cadena de palabras forma una oración válida (por ejemplo, "soy una pitón" es una frase sintácticamente
correcta, mientras que "soy una pitón" "no lo es)

Semántica: un conjunto de reglas que determinan si una determinada frase tiene sentido (por ejemplo, "Me comí un donut" tiene
sentido, pero "Un donut me comió" no).

Lenguaje de máquina versus lenguaje de alto nivel


El IL es, de hecho, el alfabeto de un lenguaje de máquina. Este es el conjunto de símbolos más simple y principal que podemos
usar para dar comandos a una computadora. Es la lengua materna de la computadora.

Desafortunadamente, esta lengua materna está muy lejos de ser una lengua materna humana. Ambos (computadoras
y humanos) necesitamos algo más, un lenguaje común para las computadoras y los humanos, o un puente entre dos
mundos diferentes.

Necesitamos un lenguaje en el que los humanos puedan escribir sus programas y un lenguaje que las computadoras puedan usar
para ejecutar los programas, uno que sea mucho más complejo que el lenguaje de máquina y, sin embargo, mucho más simple
que el lenguaje natural.

Estos lenguajes suelen denominarse lenguajes de programación de alto nivel. Son al menos algo similares a los
naturales en que utilizan símbolos, palabras y convenciones legibles para los humanos. Estos lenguajes permiten a los humanos
expresar comandos a computadoras que son mucho más complejos que los ofrecidos por los IL.

Un programa escrito en un lenguaje de programación de alto nivel se denomina código fuente (a diferencia del código de máquina
ejecutado por computadoras). De manera similar, el archivo que contiene el código fuente se llama archivo fuente.

Compilación versus interpretación


La programación informática es el acto de componer los elementos del lenguaje de programación seleccionado en el
orden que causará el efecto deseado. El efecto puede ser diferente en cada caso concreto: depende de la imaginación, el
conocimiento y la experiencia del programador.

Por supuesto, dicha composición tiene que ser correcta en muchos sentidos:
Machine Translated by Google

alfabéticamente – un programa debe estar escrito en una escritura reconocible, como latina, cirílica, etc.
léxicamente – cada
lenguaje de programación tiene su diccionario y es necesario dominarlo; afortunadamente, es mucho más
simple y pequeño que el diccionario de cualquier lenguaje natural; sintácticamente : cada idioma tiene sus
reglas y deben obedecerse; semánticamente : el programa tiene que tener sentido.

Desafortunadamente, un programador también puede cometer errores con cada uno de los cuatro sentidos anteriores.
Cada uno de ellos puede hacer que el programa se vuelva completamente inútil.
Supongamos que ha escrito un programa con éxito. ¿Cómo persuadimos a la computadora para que lo ejecute? Tienes que
renderizar tu programa en lenguaje de máquina. Afortunadamente, la traducción puede realizarse mediante una
computadora, lo que hace que todo el proceso sea rápido y eficiente.
Hay dos formas diferentes de transformar un programa de un lenguaje de programación de alto nivel a un lenguaje de
máquina:

Compilación : el programa fuente se traduce una vez (sin embargo, este acto debe repetirse cada vez que modifica el
código fuente) obteniendo un archivo (por ejemplo, un archivo .exe si el código está destinado a ejecutarse en MS Windows)
que contiene el código de máquina. . Ahora puedes distribuir el archivo en todo el mundo; El programa que realiza esta
traducción se llama compilador o traductor.
Machine Translated by Google

Interpretación : usted (o cualquier usuario del código) puede traducir el programa fuente cada vez que deba ejecutarse.
El programa que realiza este tipo de transformación se llama intérprete, ya que interpreta el código cada vez que desea
ejecutarlo. También significa que no se puede simplemente distribuir el código fuente tal cual, porque el usuario final
también necesita el intérprete para ejecutarlo.
Debido a algunas razones muy fundamentales, un lenguaje de programación de alto nivel en particular está diseñado
para caer en una de estas dos categorías.
Hay muy pocos lenguajes que puedan compilarse e interpretarse. Por lo general, un lenguaje de programación
se proyecta con este factor en la mente de sus constructores: ¿será compilado o interpretado?

¿Qué hace el intérprete?


Supongamos una vez más que ha escrito un programa. Ahora existe como un archivo de computadora: un programa de
computadora es en realidad un fragmento de texto, por lo que el código fuente generalmente se coloca en archivos de texto.
Nota: tiene que ser texto puro, sin adornos como diferentes fuentes, colores, imágenes incrustadas u otros medios.
Ahora tienes que invocar al intérprete y dejar que lea tu archivo fuente.
El intérprete lee el código fuente de una manera común en la cultura occidental: de arriba a abajo y de izquierda a derecha.
Hay algunas excepciones: se tratarán más adelante en este
curso.

En primer lugar, el intérprete comprueba si todas las líneas siguientes son correctas (utilizando los cuatro aspectos
tratados anteriormente).
Si el compilador encuentra un error, finaliza su trabajo inmediatamente. El único resultado en este caso es un mensaje
de error.
El intérprete le informará dónde se encuentra el error y qué lo provocó. Sin embargo, estos mensajes pueden ser
engañosos, ya que el intérprete no es capaz de seguir sus intenciones exactas y puede detectar errores a cierta distancia
de sus causas reales.
Por ejemplo, si intenta utilizar una entidad con un nombre desconocido, provocará un error, pero el error se descubrirá en el
lugar donde intenta utilizar la entidad, no donde se introdujo el nombre de la nueva entidad.
Machine Translated by Google

En otras palabras, el motivo real suele ubicarse un poco antes en el código, por ejemplo, en el lugar donde
tenías que informar al intérprete que ibas a utilizar la entidad del
nombre.

Si la línea se ve bien, el intérprete intenta ejecutarla (nota: cada línea generalmente se ejecuta por
separado, por lo que el trío "leer­comprobar­ejecutar" se puede repetir muchas veces, más veces que el
número real de líneas en el archivo fuente). , ya que algunas partes del código pueden ejecutarse más de una
vez).
También es posible que una parte importante del código se ejecute correctamente antes de que el intérprete
encuentre un error. Este es un comportamiento normal en este modelo de ejecución.
Quizás te preguntes ahora: ¿cuál es mejor? ¿El modelo "compilador" o el modelo "interpretador"? No hay una
respuesta obvia. De haberlo habido, uno de estos modelos habría dejado de existir hace mucho tiempo.
Ambos tienen sus ventajas y sus desventajas.
Machine Translated by Google

Compilación versus interpretación: ventajas y


desventajas
Compilacion
Ventajas

La ejecución del código traducido suele ser más rápida; Sólo el usuario
debe tener el compilador; el usuario final puede utilizar el código sin él; El código traducido se almacena en
lenguaje de máquina; como es muy difícil de entender, es probable que sus propios inventos y trucos de
programación sigan siendo su secreto.

Desventajas

La compilación en sí puede ser un proceso que consume mucho tiempo: es posible que no puedas ejecutar tu
código inmediatamente después de realizar una modificación;
Debes tener tantos compiladores como plataformas de hardware quieras que sea tu código.
ejecutarse en.

Interpretación
Ventajas

Puede ejecutar el código tan pronto como lo complete; no hay fases adicionales de traducción; El código se
almacena

utilizando un lenguaje de programación, no un lenguaje de máquina; esto significa que se puede ejecutar en
computadoras que utilizan diferentes lenguajes de máquina; no compila su código por separado para cada
arquitectura diferente.

Desventajas

No espere que la interpretación aumente su código a alta velocidad: su código compartirá la potencia de la
computadora con el intérprete, por lo que no puede ser realmente rápido; Tanto usted
como el usuario final deben tener el intérprete para ejecutar su código.

¿Qué significa todo esto para ti?

Python es un lenguaje interpretado. Esto significa que hereda todas las ventajas y desventajas descritas.
Por supuesto, añade algunas de sus características únicas a ambos conjuntos.

Si desea programar en Python, necesitará el intérprete de Python. No podrás ejecutar tu código sin él.
Afortunadamente, Python es gratuito. Esta es una de sus ventajas más importantes.

Por razones históricas, los lenguajes diseñados para ser utilizados en forma de interpretación a menudo se denominan
lenguajes de secuencias de comandos, mientras que los programas fuente codificados con ellos se denominan
secuencias de comandos. Bien, conozcamos a Python.
Machine Translated by Google

SECCIÓN 1.2 – INTRODUCCIÓN A PYTHON


Aquí aprenderemos un poco sobre la historia de Python, las diferentes versiones e
implementaciones de Python y el impacto que ha tenido Python en la programación moderna.
Vamos a empezar.
Machine Translated by Google

Python: una herramienta, no un reptil

¿Qué es Python?
Python es un lenguaje de programación de alto nivel, interpretado, orientado a objetos y ampliamente
utilizado con semántica dinámica, utilizado para programación de propósito general.
Y si bien es posible que conozcas a Python como una serpiente grande, el nombre del lenguaje de
programación Python proviene de una antigua serie de sketches de comedia televisiva de la BBC llamada
Monty Python's Flying Circus.

En el apogeo de su éxito, el equipo de Monty Python presentaba sus sketches ante audiencias en vivo de
todo el mundo, incluido el Hollywood Bowl.
Dado que Monty Python se considera uno de los dos nutrientes fundamentales para un programador (el otro es
la pizza), el creador de Python nombró el lenguaje en honor al programa de televisión.
Machine Translated by Google

¿Quién creó Python?


Una de las características sorprendentes de Python es el hecho de que en realidad es el trabajo de una sola persona.
Por lo general, los nuevos lenguajes de programación son desarrollados y publicados por grandes empresas que
emplean a muchos profesionales y, debido a las normas de derechos de autor, es muy difícil nombrar a las personas
involucradas en el proyecto. Python es una excepción.
No hay muchas lenguas cuyos autores sean conocidos por su nombre. Python fue creado por Guido van Rossum,
Nació en 1956 en Haarlem, Países Bajos. Por supuesto, Guido van Rossum no desarrolló ni evolucionó todos los
componentes de Python por sí mismo.
La velocidad con la que Python se ha extendido por el mundo es el resultado del trabajo continuo de miles (muchas
veces anónimos) programadores, testers, usuarios (muchos de ellos no son especialistas en TI) y entusiastas,
pero hay que decir que la misma La primera idea (la semilla de la que surgió Python) surgió en una sola cabeza: la
de Guido.
Machine Translated by Google

Un proyecto de programación por hobby Las circunstancias

en las que se creó Python son un poco desconcertantes. Según Guido van Rossum:

En diciembre de 1989, estaba buscando un proyecto de programación "hobby" que me mantuviera


ocupado durante la semana cercana a Navidad. Mi oficina (...) estaría cerrada, pero tenía una
computadora en casa y poco más entre manos. Decidí escribir un intérprete para el nuevo
lenguaje de programación en el que había estado pensando últimamente: un descendiente
de ABC que atraería a los hackers de Unix/C. Elegí Python como título provisional para el
proyecto, ya que me encontraba en un estado de ánimo ligeramente irreverente (y un gran admirador
de Flying Circus de Monty Python).
— Guido van Rossum

Objetivos de Python

En 1999, Guido van Rossum definió sus objetivos para Python:

un lenguaje sencillo e intuitivo tan potente como el de los principales competidores; código abierto,
para que cualquiera pueda contribuir a su desarrollo; código que es tan
comprensible como el inglés simple; Adecuado para tareas
cotidianas, permitiendo tiempos de desarrollo cortos.

Unos 20 años después, está claro que todas estas intenciones se han cumplido. Algunas fuentes dicen que Python es
el lenguaje de programación más popular del mundo, mientras que otras afirman que es el segundo o el tercero.

De cualquier manera, todavía ocupa un alto rango entre los diez primeros de la popularidad del lenguaje de
programación PYPL y el índice de la comunidad de programación TIOBE.
Python ya no es un lenguaje joven. Es maduro y digno de confianza. No es una maravilla de un solo éxito.
Es una estrella brillante en el firmamento de la programación y el tiempo dedicado a aprender Python es una
muy buena inversión.

¿Qué hace que Python sea tan especial?

¿Por qué Python?

¿Cómo es posible que los programadores, jóvenes y mayores, experimentados y novatos, quieran utilizarlo?
¿Cómo sucedió que las grandes empresas adoptaron Python e implementaron sus productos estrella
usándolo?
Hay muchas razones; ya hemos enumerado algunas de ellas, pero vamos a enumerarlas nuevamente de una
manera más práctica:

es fácil de aprender : el tiempo necesario para aprender Python es más corto que el de muchos
otros lenguajes; esto significa que es posible iniciar la programación real más rápido; es fácil
de enseñar : la carga de trabajo docente es menor que la que se necesita en otros idiomas;
esto significa que el profesor puede poner más énfasis en técnicas de programación generales
(independientes del lenguaje), sin desperdiciar energía en trucos exóticos, excepciones extrañas y
reglas incomprensibles;
Machine Translated by Google

es fácil de usar para escribir software nuevo; a menudo es posible escribir código más rápido cuando se usa
Python; es fácil
de entender ; también suele ser más fácil comprender más rápido el código de otra persona si está
escrito en Python; es fácil de obtener,
instalar y desplegar : Python es gratuito, abierto y multiplataforma; No todos los idiomas pueden presumir de
eso.

Rivales de Python Python

tiene dos competidores directos, con propiedades y predisposiciones comparables. Estos son:

Perl : un lenguaje de programación escrito originalmente por Larry Wall;


Ruby : un lenguaje de programación escrito originalmente por Yukihiro Matsumoto.

El primero es más tradicional y conservador que Python, y se parece a algunos de los lenguajes antiguos derivados del
lenguaje de programación C clásico.
Por el contrario, este último es más innovador y está más lleno de ideas nuevas que Python. El propio Python se
encuentra en algún lugar entre estas dos creaciones.

Internet está lleno de foros con infinitas discusiones sobre la superioridad de uno de estos tres sobre los demás, por
si deseas conocer más sobre cada uno de ellos.

¿Dónde podemos ver Python en acción?


Lo vemos todos los días y en casi todas partes. Se utiliza ampliamente para implementar servicios
complejos de Internet como motores de búsqueda, herramientas y almacenamiento en la nube, redes sociales, etc.
Siempre que utiliza cualquiera de estos servicios, en realidad está muy cerca de Python, aunque no lo sepa.

Muchas herramientas de desarrollo están implementadas en Python. Cada vez se escriben más
aplicaciones de uso cotidiano en Python. Muchos científicos han abandonado las costosas herramientas
propietarias y se han pasado a Python. Muchos evaluadores de proyectos de TI han comenzado a utilizar Python para
llevar a cabo procedimientos de prueba repetibles. La lista es larga.

¿Por qué no Python?


A pesar de la creciente popularidad de Python, todavía hay algunos nichos en los que Python está ausente o rara vez
se ve:

programación de bajo nivel (a veces llamada programación "cercana al metal"): si desea implementar un
controlador o motor gráfico extremadamente efectivo, no usaría Python; Aplicaciones para dispositivos móviles:
aunque este territorio todavía está esperando a ser conquistado por Python, lo más probable es que suceda
algún día.
Machine Translated by Google

Hay más de un Python


Python 2 frente a Python
3 Hay dos tipos principales de Python, llamados Python 2 y Python 3.
Python 2 es una versión anterior del Python original. Desde entonces, su desarrollo se ha
detenido intencionalmente, aunque eso no significa que no haya actualizaciones. Por el contrario, las
actualizaciones se publican periódicamente, pero no pretenden modificar el lenguaje de forma significativa.
Prefieren corregir errores y agujeros de seguridad recién descubiertos. El camino de desarrollo de Python 2
ya ha llegado a un callejón sin salida, pero el propio Python 2 todavía está muy vivo.
Python 3 es la versión más nueva (o para ser más precisos, la actual) del lenguaje. Está siguiendo su propio
camino evolutivo, creando sus propios estándares y hábitos.
Estas dos versiones de Python no son compatibles entre sí. Los scripts de Python 2 no se ejecutarán en un
entorno de Python 3 y viceversa, por lo que si desea que un intérprete de Python 3 ejecute el antiguo
código de Python 2, la única solución posible es reescribirlo, no desde cero, por supuesto. ya que gran
parte del código puede permanecer intacto, pero debe revisar todo el código para encontrar todas las posibles
incompatibilidades. Desafortunadamente, este proceso no se puede automatizar completamente.
Es demasiado difícil, consume demasiado tiempo, es demasiado caro y es demasiado arriesgado migrar
una antigua aplicación Python 2 a una nueva plataforma, e incluso es posible que reescribir el código
introduzca nuevos errores. Es más fácil y sensato dejar estos sistemas en paz y mejorar el intérprete
existente, en lugar de intentar trabajar dentro del código fuente que ya funciona.
Python 3 no es sólo una mejor versión de Python 2: es un lenguaje completamente diferente, aunque muy
similar a su predecesor. Cuando los miras desde lejos, parecen iguales, pero cuando los miras de cerca,
notas muchas diferencias.
Si está modificando una solución Python antigua existente, es muy probable que esté codificada en Python
2. Esta es la razón por la que Python 2 todavía está en uso. Hay demasiadas aplicaciones Python 2 existentes
como para descartarlas por completo.
NOTA

Si va a iniciar un nuevo proyecto de Python, debe usar Python 3, y esta es la versión de Python que se
usará durante este curso.
Es importante recordar que puede haber diferencias mayores o menores entre las versiones
posteriores de Python 3 (por ejemplo, Python 3.6 introdujo claves de diccionario ordenadas de forma
predeterminada en la implementación de CPython); sin embargo, la buena noticia es que todas las versiones
más nuevas de Python 3 son compatible con versiones anteriores de Python 3. Siempre que sea
significativo e importante, siempre intentaremos resaltar esas diferencias en el curso.
Todos los ejemplos de código que encontrará durante el curso han sido probados con Python 3.4, Python
3.6, Python 3.7, Python 3.8 y Python 3.9.

Implementaciones de Python
Además de Python 2 y Python 3, existe más de una versión de cada uno.
Siguiendo la página wiki de Python, una implementación de Python se refiere a "un programa o
entorno que brinda soporte para la ejecución de programas escritos en el lenguaje Python, como lo
representa la implementación de referencia CPython".
La implementación tradicional de Python, llamada CPython, es la versión de referencia del lenguaje
informático Python de Guido van Rossum, y la mayoría de las veces se la llama simplemente "Python". Cuando usted
Machine Translated by Google

Escuche el nombre CPython, lo más probable es que se use para distinguirlo de otras implementaciones alternativas no
tradicionales.

Pero primero lo primero. Están los Pythons que son mantenidos por las personas reunidas en torno a la PSF (Python
Software Foundation), una comunidad que tiene como objetivo desarrollar, mejorar, expandir y popularizar Python y su
entorno. El presidente del PSF es el propio Guido von Rossum, y por eso estos Pythons se llaman canónicos.
También se consideran Pythons de referencia, ya que cualquier otra implementación del lenguaje debe seguir todos
los estándares establecidos por la PSF.

Guido van Rossum utilizó el lenguaje de programación "C" para implementar la primera versión de su lenguaje y esta decisión
sigue vigente. Todos los Python procedentes del PSF están escritos en lenguaje "C". Hay muchas razones para este
enfoque. Uno de ellos (probablemente el más importante) es que gracias a él, Python puede ser portado y migrado fácilmente
a todas las plataformas con la capacidad de compilar y ejecutar programas en lenguaje "C" (prácticamente todas las
plataformas tienen esta característica, lo que abre muchas posibilidades de expansión). oportunidades para Python).

Es por eso que la implementación de PSF a menudo se denomina CPython. Este es el Python más influyente entre
todos los Python del mundo.

Este componente es una tarjeta invertida compuesta de tarjetas invertidas que contienen una imagen de visualización.
Seleccione la imagen de la cara frontal para pasar a la cara posterior de estas tarjetas y mostrar el texto asociado.

Cython es una de las posibles soluciones al rasgo más doloroso de Python: la falta de eficiencia. Los cálculos matemáticos
grandes y complejos se pueden codificar fácilmente en Python (mucho más fácil que en "C" o cualquier otro lenguaje
tradicional), pero la ejecución del código resultante puede llevar mucho tiempo.

¿Cómo se reconcilian estas dos contradicciones? Una solución es escribir tus ideas matemáticas usando Python, y cuando
estés absolutamente seguro de que tu código es correcto y produce resultados válidos, puedes traducirlo a "C".
Ciertamente, "C" se ejecutará mucho más rápido que Python puro.
Machine Translated by Google

Esto es lo que Cython pretende hacer: traducir automáticamente el código Python (limpio y claro, pero no demasiado
rápido) a código "C" (complicado y comunicativo, pero ágil).
Otra versión de Python se llama Jython.
"J" es para "Java". Imagine un Python escrito en Java en lugar de C. Esto es útil, por ejemplo, si desarrolla sistemas
grandes y complejos escritos completamente en Java y desea agregarles algo de flexibilidad de Python. Puede resultar
difícil integrar el CPython tradicional en un entorno de este tipo, ya que C y Java viven en mundos
completamente diferentes y no comparten muchas ideas comunes.

Jython puede comunicarse con la infraestructura Java existente de manera más efectiva. Por eso algunos proyectos
lo encuentran útil y necesario.
Nota: la implementación actual de Jython sigue los estándares de Python 2. Hasta el momento, no existe ningún
Jython que se ajuste a Python 3.

El logotipo de PyPy es un acertijo. ¿Puedes solucionarlo? Significa: un Python dentro de un Python. En otras
palabras, representa un entorno Python escrito en un lenguaje similar a Python llamado
RPython (Python restringido). En realidad, es un subconjunto de Python.
El código fuente de PyPy no se ejecuta en forma de interpretación, sino que se traduce al lenguaje de programación C
y luego se ejecuta por separado.
Machine Translated by Google

Esto es útil porque si desea probar cualquier característica nueva que pueda introducirse (pero que no es
necesario) en la implementación principal de Python, es más fácil verificarla con PyPy que con CPython. Esta
es la razón por la que PyPy es más una herramienta para personas que desarrollan Python que para el resto del mundo.
usuarios.

Por supuesto, esto no hace que PyPy sea menos importante o menos serio que CPython.
Además, PyPy es compatible con el lenguaje Python 3.
Hay muchas más Pythons diferentes en el mundo. Los encontrarás si miras, pero este curso se centrará
en CPython.

MicroPython es una implementación eficiente de software de código abierto de Python 3 que está optimizada
para ejecutarse en microcontroladores. Incluye un pequeño subconjunto de la biblioteca estándar de Python,
pero en gran medida incluye una gran cantidad de funciones, como mensajes interactivos o números enteros de
precisión arbitraria, así como módulos que brindan al programador acceso a hardware de bajo nivel.
Creado originalmente por Damien George, un programador australiano, quien en el año 2013 realizó una
exitosa campaña en Kickstarter y lanzó la primera versión de MicroPython con una placa de desarrollo
impulsada por STM32F4 llamada pyboard.
En 2017, se utilizó MicroPython para crear CircuitPython, otro lenguaje de programación de código
abierto que se ejecuta en el hardware del microcontrolador, que es un derivado del lenguaje MicroPython.
Machine Translated by Google
Machine Translated by Google

SECCIÓN 1.3 – DESCARGA E INSTALACIÓN DE PYTHON


Aquí hablaremos sobre las formas de obtener, instalar y configurar Python en su computadora local.
Esta sección es opcional, ya que a lo largo del curso podrás lanzar, probar y experimentar con todos
tus programas Python en Edube Interactive™, el entorno de programación que hemos integrado
con la plataforma de aprendizaje y estos recursos de estudio.
Aún así, si puede descargar e instalar Python en su máquina local, lo recomendamos encarecidamente.
Machine Translated by Google

Comienza tu viaje con Python

Cómo obtener Python y cómo usarlo Hay varias formas


de obtener su propia copia de Python 3, según el sistema operativo que utilice.

Lo más probable es que los usuarios de Linux ya tengan Python instalado ; este es el escenario más probable, ya que
muchos componentes del sistema operativo Linux utilizan intensivamente la infraestructura de Python.
Por ejemplo, algunos distribuidores pueden acoplar sus herramientas específicas al sistema y muchas de estas
herramientas, como los administradores de paquetes, suelen estar escritas en Python. Algunas partes de los
entornos gráficos disponibles en el mundo Linux también pueden usar Python.
Si es un usuario de Linux, abra la terminal/consola y escriba:

python3

en el símbolo del shell, presione Entrar y espere. Si ves algo como esto:

entonces no tienes que hacer nada más.


Si Python 3 no está, consulte la documentación de Linux para saber cómo usar su administrador de paquetes para
descargar e instalar un nuevo paquete; el que necesita se llama python3 o su nombre comienza con ese.

Todos los usuarios que no sean Linux pueden descargar una copia en https://www.python.org/downloads/.

Cómo descargar, instalar y configurar Python


Debido a que el navegador le dice al sitio que ingresó el sistema operativo que usa, el único paso que debe seguir es
hacer clic en la versión de Python adecuada que desee.
En este caso, seleccione Python 3. El sitio siempre le ofrece la última versión.
Si es usuario de Windows, inicie el archivo .exe descargado y siga todos los pasos.
Deje la configuración predeterminada que sugiere el instalador por ahora, con una excepción: mire la casilla de
verificación llamada Agregar Python 3.x a PATH y márquela.
Machine Translated by Google

Esto facilitará las cosas.


Si es usuario de macOS, es posible que ya haya preinstalado una versión de Python 2 en su computadora,
pero como trabajaremos con Python 3, aún deberá descargar e instalar el archivo .pkg correspondiente desde el
sitio de Python.

Comenzando a trabajar con Python Ahora que tiene Python

3 instalado, es hora de comprobar si funciona y utilizarlo por primera vez.

Este será un procedimiento muy sencillo, pero debería ser suficiente para convencerte de que el entorno Python
es completo y funcional.
Hay muchas formas de utilizar Python, especialmente si vas a ser desarrollador de Python.
Para comenzar su trabajo, necesita las siguientes herramientas:

un editor que le ayudará a escribir el código (debe tener algunas características especiales, no
disponibles en herramientas simples); este editor dedicado le brindará más que el equipo de sistema
operativo estándar; una
consola en la que puedes ejecutar el código recién escrito y detenerlo a la fuerza cuando se salga de
control; una
herramienta llamada depurador, capaz de ejecutar tu código paso a paso, lo que te permitirá inspeccionarlo
en cada momento de ejecución.

Además de sus muchos componentes útiles, la instalación estándar de Python 3 contiene una aplicación muy
simple pero extremadamente útil llamada IDLE.
IDLE es un acrónimo: Entorno Integrado de Desarrollo y Aprendizaje.
Navegue por los menús de su sistema operativo, busque IDLE en algún lugar debajo de Python 3.x y ejecútelo.
Esto es lo que deberías ver:
Machine Translated by Google

Tu primer programa antes de tu primer programa...


Ahora es el momento de escribir y ejecutar su primer programa Python 3. Será muy sencillo, por ahora.
El primer paso es crear un nuevo archivo fuente y llenarlo con código. Haga clic en Archivo en el menú IDLE y elija Nuevo
archivo.

Como puede ver, IDLE le abre una nueva ventana. Puede usarlo para escribir y modificar su código.

Esta es la ventana del editor. Su único propósito es ser un lugar de trabajo en el que se trata su código fuente. No confunda
la ventana del editor con la ventana del shell. Realizan diferentes funciones.

La ventana del editor actualmente no tiene título, pero es una buena práctica comenzar a trabajar nombrando el archivo fuente.

Haga clic en Archivo (en la nueva ventana), luego haga clic en Guardar como..., seleccione una carpeta para el nuevo archivo
(el escritorio es un buen lugar para sus primeros intentos de programación) y elija un nombre para el nuevo archivo.
Machine Translated by Google

Nota: no establezca ninguna extensión para el nombre del archivo que va a utilizar. Python necesita que sus archivos tengan
la extensión .py , por lo que debes confiar en los valores predeterminados de la ventana de diálogo. El uso de la extensión .py
estándar permite que el sistema operativo abra correctamente estos archivos.

Ahora coloque solo una línea en la ventana del editor recién abierta y con nombre.
La línea se ve así:

imprimir("Hisssssss...")

Puede utilizar el portapapeles para copiar el texto en el archivo.


No vamos a explicar el significado del programa ahora. Encontrará una discusión detallada en el
próximo capítulo.
Mire más de cerca las comillas. Éstas son la forma más simple de comillas (neutrales, rectas, tontas, etc.)
que se usan comúnmente en los archivos fuente. No intente utilizar comillas tipográficas (curvas, rizadas,
inteligentes, etc.), utilizadas por procesadores de texto avanzados, ya que Python no las acepta.

Guarde el archivo (Archivo ­> Guardar) y ejecute el programa (Ejecutar ­> Ejecutar módulo).
Si todo va bien y no hay errores en el código, la ventana de la consola te mostrará los efectos que provoca la
ejecución del programa.
En este caso, el programa silba.
Intente ejecutarlo una vez más. Y una vez más.
Ahora cierre ambas ventanas y regrese al escritorio.
Machine Translated by Google

Cómo estropear y arreglar tu código Ahora


inicia IDLE nuevamente.

Haga clic en Archivo, Abrir, señale el archivo que guardó anteriormente y deje que IDLE lo lea.
Intente ejecutarlo nuevamente presionando F5 cuando la ventana del editor esté activa.

Como puede ver, IDLE puede guardar su código y recuperarlo cuando lo necesite nuevamente.
IDLE contiene una característica adicional y útil.

Primero, elimine el paréntesis de cierre.


Luego ingrese el paréntesis nuevamente.

Tu código debería verse como el que aparece aquí abajo:

Sisssss...

Cada vez que coloques el paréntesis de cierre en tu programa, IDLE mostrará la parte del texto limitada con un par de
paréntesis correspondientes. Esto le ayudará a recordar colocarlos en parejas.

Elimine el paréntesis de cierre nuevamente. El código se vuelve erróneo. Ahora contiene un error de sintaxis. IDLE
no debería permitirle ejecutarlo.
Machine Translated by Google

Intente ejecutar el programa nuevamente. IDLE le recordará que guarde el archivo modificado. Sigue las
instrucciones.

Mire todas las ventanas con atención.


Aparece una nueva ventana: dice que el intérprete ha encontrado un EOF (fin de archivo), aunque (en su opinión)
el código debería contener algo más de texto.
La ventana del editor muestra claramente dónde sucedió.

Corrija el código ahora. Debe tener un aspecto como este:

imprimir("Hisssssss...")

Ejecútelo para ver si vuelve a "silbar".


Estropeemos el código una vez más. Elimine una letra de la palabra imprimir. Ejecute el código presionando F5. ¿Que
pasa ahora? Como puede ver, Python no puede reconocer la instrucción.

Es posible que hayas notado que el mensaje de error generado para el error anterior es bastante diferente al primero.
Machine Translated by Google

Esto se debe a que la naturaleza del error es diferente y el error se descubre en una etapa diferente de interpretación.

La ventana del editor no proporcionará ninguna información útil sobre el error, pero las ventanas de la consola sí.

El mensaje (en rojo) muestra (en las líneas siguientes):

el rastreo (que es la ruta que recorre el código a través de diferentes partes del programa; puedes ignorarlo
por ahora, ya que está vacío en un código tan simple); la ubicación del error (el nombre del
archivo que contiene el error, el número de línea y el nombre del módulo); nota: el número puede ser
engañoso, ya que Python generalmente muestra el lugar donde nota por primera vez los efectos del error, no
necesariamente el error en sí; el contenido de la línea errónea; nota: la ventana del editor de
IDLE no muestra números de línea, pero muestra la ubicación actual del cursor en la esquina inferior
derecha; Úselo para localizar la línea errónea en un código fuente largo; el nombre del error y una breve
explicación.

Experimente creando nuevos archivos y ejecutando su código. Intente mostrar un mensaje diferente en la pantalla, por
ejemplo, ¡rugido!, maullido o incluso tal vez un gruñido. Intente estropear y corregir su código; vea qué sucede.
Machine Translated by Google

MÓDULO 2: TIPOS DE DATOS DE PYTHON, VARIABLES,


OPERADORES Y OPERACIONES BÁSICAS DE E/S
Machine Translated by Google

SECCIÓN 2.1 – EL mensaje "¡HOLA MUNDO!" PROGRAMA ¡ Bienvenidos al Módulo dos! En la


primera sección, aprenderemos sobre los elementos más esenciales de la sintaxis y la semántica del lenguaje Python
y los usaremos para crear su primer programa Python: "¡Hola, mundo!".
Machine Translated by Google

2.1.1 Su primer programa Es hora de comenzar a

escribir código Python real y funcional. Será muy sencillo por el momento.

Como le mostraremos algunos conceptos y términos fundamentales, estos fragmentos de código no serán tan serios
ni complejos.
Ejecute el siguiente código. Si todo va bien aquí, verá la línea de texto en la ventana de la consola.

Alternativamente, inicie IDLE, cree un nuevo archivo fuente de Python, rellénelo con este código, asigne un nombre
al archivo y guárdelo. Ahora ejecútelo. Si todo va bien, verá el texto entre comillas en la ventana de la consola
IDLE. El código que ha ejecutado debería resultarle familiar. Viste algo muy similar cuando te guiamos a través de la
configuración del entorno IDLE.

1 print("¡Hola mundo!")
2

Ahora dedicaremos algo de tiempo a mostrarte y explicarte lo que realmente estás viendo y por qué se ve así.

Como puedes ver, este primer programa consta de las siguientes partes:

la palabra imprimir;
un paréntesis de apertura; una
comilla; una línea de
texto: ¡Hola, mundo!; otra comilla; un
paréntesis de cierre.

Cada uno de estos juega un papel muy importante en el código.


Machine Translated by Google

2.1.2 La función imprimir()


Mira esta línea de código:

1 print("¡Hola mundo!")
2

La palabra print que puedes ver aquí es el nombre de una función. Eso no significa que dondequiera que aparezca la
palabra siempre sea el nombre de una función. El significado de la palabra proviene del contexto en el que se ha
utilizado.

Probablemente te hayas encontrado con el término función muchas veces antes, durante las clases de matemáticas.
Probablemente también puedas enumerar varios nombres de funciones matemáticas, como seno o registro.
Las funciones de Python, sin embargo, son más flexibles y pueden contener más contenido que sus hermanas
matemáticas.
Una función (en este contexto) es una parte separada del código informático capaz de:

causar algún efecto (por ejemplo, enviar texto al 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 determinado) y devolverlo como
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 funciones de Python pueden hacer estas dos cosas juntas.

¿De dónde vienen las funciones?

Del propio Python: pueden provenir del propio Python; la función de impresión es una de este tipo; dicha
función es un valor agregado recibido junto con Python y su entorno (está integrado); no tienes
que hacer nada especial (por ejemplo, pedirle nada a nadie) si quieres utilizarlo; De módulos: pueden
provenir de uno o más complementos de Python
denominados módulos; algunos de los módulos vienen con Python, otros pueden requerir una instalación por
separado; cualquiera que sea el caso, todos deben estar conectados explícitamente con su código (le
mostraremos cómo hacerlo pronto); Desde tu código: puedes escribirlas tú mismo, colocando tantas funciones
como quieras 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 de impresión es evidente).
Por supuesto, si va a utilizar cualquier función ya existente, no tiene influencia sobre su nombre, pero cuando comience
a escribir sus propias funciones, debe considerar cuidadosamente la elección de los nombres.
Machine Translated by Google

2.1.3 Argumentos de función Como


dijimos antes, una función puede tener:

Un efecto;
un resultado.

También hay un tercer componente funcional muy importante: los argumentos.


Las funciones matemáticas suelen tener un argumento. Por ejemplo, sin(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 número de argumentos, tantos como sean necesarios para realizar sus tareas.
Nota: Cuando dijimos cualquier número, eso incluye cero; algunas funciones de Python no necesitan ningún
argumento.

print("¡Hola mundo!")

A pesar de la cantidad de argumentos necesarios/proporcionados, las funciones de Python exigen fuertemente la


presencia de un par de paréntesis : de apertura y cierre, respectivamente.
Si desea entregar uno o más argumentos a una función, colóquelos entre paréntesis. Si vas a utilizar una
función que no acepta ningún argumento, aún debes tener los paréntesis.

Nota: para distinguir palabras comunes de nombres de funciones, coloque un par de paréntesis
vacíos después de sus nombres, incluso si la función correspondiente quiere uno o más argumentos. Esta
es una convención estándar.
La función de la que estamos hablando aquí es print().
¿La función print() de nuestro ejemplo tiene algún argumento?
Por supuesto que sí, pero ¿qué son?

Una cadena como argumento de la función print() El único argumento


entregado a la función print() en este ejemplo es una cadena: print("Hello, World!")

Como puede ver, la cadena está delimitada por comillas (de hecho, las comillas forman la cadena), cortan una
parte del código y le asignan un significado diferente.
Puedes imaginar que las comillas dicen algo como: el texto entre nosotros no es código. No está destinado a ser
ejecutado y debes tomarlo tal como está.
Casi todo lo que pongas entre comillas se tomará literalmente, no como código, sino como datos. Intente jugar con esta
cadena en particular: modifíquela, ingrese contenido nuevo, elimine parte del contenido existente.

Hay más de una forma de especificar una cadena dentro del código de Python, pero por ahora, esta es 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 hacerlo en términos de
semántica.
Machine Translated by Google

2.1.4 Invocación de función


El nombre de la función (impreso en este caso) junto con los paréntesis y los argumentos forman la invocación de la
función.

1 print("¡Hola mundo!")
2

Discutiremos esto con más profundidad pronto, pero arrojemos un poco de luz ahora mismo.
¿Qué sucede cuando Python encuentra una invocación como ésta?

nombre_función(argumento)

Vamos a ver:

Primero, Python verifica si el nombre especificado es legal (explora sus datos internos para encontrar una
función existente con el nombre; si esta búsqueda falla, Python aborta el código); segundo, Python
verifica si se cumplen los requisitos de la función para el número de argumentos. le permite
invocar la función de esta manera (por ejemplo, si una función específica exige exactamente dos
argumentos, cualquier invocación que proporcione solo un argumento se considerará errónea y abortará la
ejecución del código). En tercer lugar, Python abandona su código por un
momento y salta a la función que desea invocar; por supuesto, también toma sus argumentos y los pasa a la
función; cuarto, la función ejecuta su código, provoca el efecto deseado (si lo hay), evalúa los resultados
deseados (si los hay) y finaliza su tarea; finalmente, Python regresa a su código (al lugar justo después de la
invocación) y reanuda su ejecución.
Machine Translated by Google

PRACTICA 1 Trabajar con la función print() El comando print() , que es una de

las directivas más sencillas de Python, simplemente imprime una línea en la pantalla.

En su primer laboratorio:

Utilice la función print() para imprimir la línea ¡Hola, Python! a la pantalla. Utilice comillas dobles alrededor de la
cadena.
Una vez hecho esto, use la función print() nuevamente, pero esta vez imprima su nombre.
Elimine las comillas dobles y ejecute su código. Mira la reacción de Python. ¿Qué tipo de error se arroja?

Luego, elimine los paréntesis, vuelva a colocar las comillas dobles y ejecute su código nuevamente.
¿Qué tipo de error se arroja esta vez?

Experimenta todo lo que puedas. Cambie comillas dobles a comillas simples, use múltiples
funciones print() en la misma línea y luego en líneas diferentes. Mira qué pasa.

Solución de muestra
Machine Translated by Google

2.1.5 La función print() y su efecto, argumentos y valores devueltos

Es necesario responder lo antes posible a tres preguntas importantes: 1. ¿Qué


efecto causa 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 por humanos si es necesario (como puede 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 coloques en la función print() aparecerá en tu pantalla.

No es de extrañar, entonces, que a partir de ahora utilice print() de manera muy intensiva para ver los
resultados de sus operaciones y evaluaciones.
2. ¿Qué argumentos espera print() ?
Cualquier. Pronto le mostraremos que print() es capaz de operar con prácticamente todos los tipos de datos que
ofrece Python. Cadenas, números, caracteres, valores lógicos, objetos: cualquiera de estos puede
pasarse exitosamente a print().
3. ¿Qué valor devuelve la función print() ?
Ninguno. Su efecto es suficiente.
Machine Translated by Google

2.1.6 Instrucciones
Ya has visto un programa de computadora que contiene una invocación de función. Una invocación de
función es uno de los muchos tipos posibles de instrucción de Python.
Por supuesto, cualquier programa complejo suele contener muchas más instrucciones que una. La pregunta
es: ¿cómo se combinan más de una instrucción en el código 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 pueda haber más de una instrucción en una línea.
Una línea puede estar vacía (es decir, 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 en más de una línea (lo
que puede resultar útil cuando su código contiene construcciones complejas).
Ampliemos un poco el código. Ejecútelo y observe lo que ve.

1 print("La araña diminuta trepó por la tromba marina.") print("Cayó la lluvia y arrasó la araña.")
2
3

Su consola Python ahora debería verse así:

La pequeña araña trepó por la tromba marina.


Cayó la lluvia y se llevó a la araña.

Esta es una buena oportunidad para hacer algunas observaciones:

el programa invoca 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 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 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 que se colocaron 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 de función print() vacía . Lo llamamos vacío
porque no hemos entregado ningún argumento a la función.
puedes verlo aqui. Ejecute el código.

¿Lo que sucede?

1 print("La araña diminuta trepó por la tromba marina.") print() print(" Cayó la lluvia y se llevó a la
2 araña.")
3
4

Si todo va bien, deberías ver algo como esto:

La pequeña araña trepó por la tromba marina.


Machine Translated by Google

Cayó la lluvia y se llevó a la araña.


Como puede ver, la invocación de print() vacía no es tan vacía como esperaba: genera una
línea vacía o (esta interpretación también es correcta) genera una nueva línea.
Esta no es la única forma de generar una nueva línea en la consola de salida. Ahora le
mostraremos otra forma.
Machine Translated by Google

2.1.7 Escape de Python y caracteres de nueva línea Hemos


modificado el código nuevamente. Míralo con atención.
Hay dos cambios muy sutiles: hemos insertado un par de caracteres extraños dentro de la rima. Se ven así: \n.

1 print("La araña diminuta \n trepó por la tromba marina.") print() print("Cayó la lluvia\ny se llevó a la
2 araña.")
3
4

Curiosamente, aunque puedes ver dos caracteres, Python ve uno.


La barra invertida (\) tiene un significado muy especial cuando se usa dentro de cadenas; esto 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 otras palabras, la barra invertida no significa nada en sí misma, sino que es sólo una especie
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 nueva línea.
Tanto la barra invertida como la n forman un símbolo especial llamado carácter de nueva línea, que insta a
la consola a iniciar una nueva línea de salida.
Ejecute el código. Tu consola ahora debería verse así:

La pequeña araña trepó por la


tromba marina.
Cayó la lluvia y se llevó a la
araña.

Como puede ver, 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


desea poner solo una barra invertida dentro de una cadena, no olvide su naturaleza de escape: debe duplicarla. Por
ejemplo, una invocación como esta provocará un error:

imprimir("\")

mientras que este no lo hará:

imprimir("\\")

2. No todos los pares de escape (la barra invertida junto con otro carácter) significan algo.
Experimente con su código, ejecútelo y vea qué sucede.

1 print("La araña diminuta \n trepó por la tromba marina.") print() print("Cayó la lluvia\ny se llevó a la
2 araña.")
3
4
Machine Translated by Google

2.1.8 Uso de 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 la función print() con más de un argumento.
Esto es lo que vamos a probar ahora:

1 print("La pequeña araña" , "trepó" , "la tromba marina.")


2

Hay una invocación de la función print() , pero contiene tres argumentos. Todos ellos son
cuerdas.
Los argumentos están separados por comas. Los hemos rodeado de espacios para hacerlos más
visibles, pero realmente no es necesario y ya no lo haremos.
En este caso, las comas que separan los argumentos juegan un papel completamente diferente a la coma dentro de
la cadena. El primero es parte de la sintaxis de Python, mientras que el segundo está pensado para mostrarse en la
consola.

Si vuelves a mirar el código, verás que no hay espacios dentro de las cadenas.
Ejecute el código y vea qué sucede.
La consola ahora debería mostrar el siguiente texto:
La pequeña araña trepó por la tromba marina.

Los espacios, eliminados de las cuerdas, han vuelto a aparecer. ¿Puedes explicar porque?
De este ejemplo surgen dos conclusiones: una
función print() invocada con más de un argumento los genera todos en una línea;

la función print() pone un espacio entre los argumentos generados por su propia iniciativa.
Machine Translated by Google

2.1.9 Argumentos posicionales Ahora que


sabes un poco sobre las costumbres de la función print() , te mostraremos cómo cambiarlas.

Debería poder predecir el resultado sin ejecutar el código.

1 print("Mi nombre es", "Python.") print("Monty


2 Python.")
3

La forma en que pasamos los argumentos a la función print() es la más común en Python y se
llama forma posicional. Este nombre proviene del hecho de que el significado del argumento está dictado
por su posición (por ejemplo, el segundo argumento aparecerá después del primero, y no al revés).

Ejecute el código y verifique si el resultado coincide con sus predicciones.


Machine Translated by Google

2.1.10 Argumentos de palabras clave Python ofrece

otro mecanismo para pasar argumentos, que puede ser útil cuando desea convencer a la función print() para que
cambie un poco su comportamiento.
No vamos a explicarlo en profundidad ahora. Planeamos hacer esto cuando hablamos 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 surge del hecho de que el significado de
estos argumentos no se toma de su ubicación (posición) sino de la palabra especial (palabra clave) utilizada para
identificarlos.
La función print() tiene dos argumentos de palabras clave que puede utilizar para sus propósitos. El primero se llama
fin.

A continuación se muestra un ejemplo muy sencillo de cómo utilizar un argumento de palabra clave.

1 print("Mi nombre es", "Python.", end=" ") print("Monty Python.")


2
3

Para poder utilizarlo es necesario conocer algunas reglas:

un argumento de palabra clave consta de tres elementos: una palabra clave que identifica el argumento
(termina aquí); un signo 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, utilizamos el argumento de la palabra clave final y lo configuramos en una cadena que
contiene un espacio.
Ejecute el código para ver cómo funciona.

La consola ahora debería mostrar el siguiente texto:

Mi nombre es Pitón. Monty Python.

Como puede ver, el argumento de la palabra clave final 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 final se utiliza
implícitamente de la siguiente manera: end="\n".
Y ahora es el momento de intentar algo más difícil.
Si observa con atención, verá que hemos utilizado el argumento final , pero la cadena asignada está vacía (no contiene
ningún carácter).
¿Que pasará ahora? Ejecute el programa para averiguarlo.

1 print("Mi nombre es ", end="") print("Monty


2 Python.")
3

Como el argumento final se ha establecido en nada, la función print() tampoco genera nada, una vez que se han agotado
sus argumentos posicionales.
Machine Translated by Google

La consola ahora debería mostrar el siguiente texto:


Mi nombre es Monty Python.

Nota: no se han enviado nuevas líneas a la salida.


La cadena asignada al argumento de la palabra clave final puede tener cualquier longitud. Experimenta con
ello si quieres.
Dijimos anteriormente que la función print() separa sus argumentos generados con espacios.
Este comportamiento también se puede cambiar.

El argumento de palabra clave que puede hacer esto se llama sep (como en separador).
Mire el siguiente código y ejecútelo.

1 print("Mi", "nombre", "es", "Monty", "Python.", sep="­")


2

El argumento sep ofrece los siguientes resultados:


Mi­nombre­es­Monty­Python.

La función print() ahora usa un guión, en lugar de un espacio, para separar los argumentos
generados.
Nota: el valor del argumento sep también puede ser una cadena vacía. Pruébelo usted mismo.
Ambos argumentos de palabras clave se pueden mezclar en una invocación, como aquí.

1 print("Mi", "nombre", "es", sep="_", end="*") print("Monty",


2 "Python.", sep="*", end="*\n" )
3

El ejemplo no tiene mucho sentido, pero presenta visiblemente las interacciones entre
end y sep.
¿Puedes predecir el resultado?
Ejecute el código y vea si coincide con sus predicciones.
Ahora que comprende la función print() , está listo para considerar cómo almacenar y procesar datos
en Python.
Sin print(), no podrías ver ningún resultado.
Machine Translated by Google

LABORATORIO 2 La función print() y sus argumentos Modifique la primera línea


de código, usando las palabras clave sep y end , para que coincida con el resultado esperado.
Utilice las dos funciones print() .
No cambie nada en la segunda invocación de print() .

Salida esperada
Programación***Esenciales***en...Python

Código

1 print("Programación","Esenciales","en") print("Python")
2
3

Solución de muestra
Machine Translated by Google

LABORATORIO 3 Formateo del resultado Le

recomendamos encarecidamente que juegue con el código que hemos escrito para usted y que haga
algunas modificaciones (tal vez incluso destructivas). Siéntete libre de modificar cualquier parte del código,
pero hay una condición: aprende de tus errores y saca tus propias conclusiones.
Intentar:

minimizar el número de invocaciones de la función print() insertando la secuencia \n en las cadenas;


haga la
flecha dos veces más grande (pero mantenga las proporciones)
duplique la flecha, colocando ambas flechas una al lado de la otra; nota: una cadena se puede
multiplicar usando el siguiente truco: "cadena" * 2 producirá "cadenacadena" (le contaremos más
sobre esto pronto)
elimine las comillas y observe cuidadosamente la respuesta de Python; Preste 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; cambie cualquiera de
las palabras impresas por otra cosa, diferenciándose solo en mayúsculas y minúsculas (por ejemplo,
Imprimir) . ¿Qué sucede
ahora? reemplace algunas de las citas con apóstrofes; observa atentamente lo que sucede.

Código

1 imprimir(" *") imprimir("


2 * *" ) imprimir(" * *")
3 imprimir(" * *")
4 imprimir("*** ***") imprimir("
5 * *") imprimir(" * * ")
6 imprimir(" *****")
7
8
9

Solución de muestra
Machine Translated by Google

2.1 RESUMEN DE LA SECCIÓN

1. La función print() es una función incorporada . Imprime/envía un mensaje específico a la pantalla/ventana de


consola.

2. Las funciones integradas, a diferencia de las funciones definidas por el usuario, siempre están disponibles
y no es necesario importarlas. Python 3.8 viene con 69 funciones integradas. Puede encontrar su lista
completa en orden alfabético en la Biblioteca estándar de Python.
3. Para llamar a una función (este proceso se conoce como invocación de función o llamada de función), debe usar el
nombre de la función seguido de paréntesis. Puede pasar argumentos a una función colocándolos entre paréntesis.
Debe separar los argumentos con una coma, por ejemplo, print("Hola", "mundo!"). Una función print()
"vacía" genera una línea vacía en la pantalla.

4. Las cadenas de Python están delimitadas por comillas, por ejemplo, "Soy una cadena" (comillas dobles) o "Yo
también soy una cadena" (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, imprimir un determinado mensaje en la pantalla.
6. En las cadenas de Python, la barra invertida (\) es un carácter especial que anuncia que el siguiente carácter tiene
un significado diferente, por ejemplo, \n (el carácter de nueva línea) inicia una nueva línea de salida.
7. Los argumentos posicionales son aquellos cuyo significado viene dictado por su posición, por ejemplo, el segundo
argumento se genera después del primero, el tercero se genera después del segundo, etc.
8. Los argumentos de palabras clave son aquellos cuyo significado no viene dictado por su ubicación, sino por una
palabra especial (palabra clave) utilizada para identificarlos.
9. Los parámetros end y sep se pueden utilizar para formatear la salida de la función print() .
El parámetro sep especifica el separador entre los argumentos generados, por ejemplo , print("H", "E", "L", "L",
"O", sep="­"), mientras que el parámetro end especifica en qué imprimir el final de la declaración
impresa.
Machine Translated by Google

2.1 EXAMEN DE SECCIÓN

Pregunta 1: ¿Cuál es el resultado del siguiente programa?

1 print("Mi\nnombre\nis\nBond.", end=" ") print("James


2 Bond.")
3

Pregunta 2: ¿Cuál es el resultado del siguiente programa?

1 print(sep="&", "pescado", "chips")


2

Pregunta 3: ¿Cuál de las siguientes invocaciones de la función print() provocará un error de sintaxis?
print('El libro de Greg.') print("'El
libro de Greg.'") print('"El libro de
Greg.') print("El libro de Greg.")
print('"El libro de Greg.') libro."')

Controlar
Machine Translated by Google

SECCIÓN 2.2 – LITERALES DE PYTHON


Ahora es el momento de hablar sobre los literales de Python.
Machine Translated by Google

2.2.1 Literales – los datos en sí mismos


Ahora que conoce un poco algunas de las potentes funciones que ofrece la función print() , es hora de
aprender sobre algunas cuestiones nuevas y un nuevo término importante: el literal.

Un literal son datos cuyos valores están determinados por el propio literal.
Como se trata de un concepto difícil de entender, un buen ejemplo puede resultar útil.
Eche un vistazo al siguiente conjunto de dígitos:
123

¿Puedes adivinar qué valor representa? Por supuesto que puedes: son ciento veintitrés.
Pero ¿qué pasa con esto?

¿Representa algún valor? Tal vez. Puede ser el símbolo de la velocidad de la luz, por ejemplo. También puede ser la
constante de la integración. O incluso la longitud de una hipotenusa en el sentido del teorema de Pitágoras. Hay
muchas posibilidades.
No se puede elegir el correcto sin algunos conocimientos adicionales.
Y esta es la pista: 123 es literal y c no lo es.

Utiliza literales para codificar datos e incluirlos en su código. Ahora le mostraremos algunas convenciones que debe
obedecer al usar Python.
Comencemos con un experimento simple: eche un vistazo al siguiente fragmento.

1 imprimir("2")
2 imprimir(2)
3

La primera línea parece familiar. La segunda parece errónea por la visible falta de comillas.

Intenta ejecutarlo.

Si todo va bien, ahora verás dos líneas idénticas.


¿Qué pasó? ¿Qué significa?
A través de este ejemplo, encontrará dos tipos diferentes de literales:

una cadena, que ya conoces, y un número


entero , algo completamente nuevo.

La función print() los presenta exactamente de la misma manera; este ejemplo es obvio, ya que su representación
legible por humanos también es la misma. Internamente, en la memoria de la computadora, estos dos valores se
almacenan de maneras completamente diferentes: la cadena existe simplemente como una cadena, una serie de letras.

El número se convierte en una representación de máquina (un conjunto de bits). La función print() puede mostrarlos a
ambos en una forma legible para los humanos.

Ahora vamos a dedicar algo de tiempo a analizar los literales numéricos y su vida interna.
Machine Translated by Google

2.2.2 Números enteros

Quizás ya sepa un poco sobre cómo las computadoras realizan cálculos con números. Quizás haya oído hablar
del sistema binario y sepa que es el sistema que utilizan las computadoras para almacenar números y que
esas computadoras pueden realizar cualquier operación con ellos.
No exploraremos aquí las complejidades de los sistemas numéricos posicionales, pero diremos que los
números que manejan las computadoras modernas son de dos tipos:

los números enteros, es decir, los que carecen de parte fraccionaria; y


números de coma flotante (o simplemente flotantes), que contienen (o pueden contener) la parte
fraccionaria.

Esta definición no es del todo exacta, pero sí suficiente por ahora. La distinción es muy importante y el
límite entre estos dos tipos de números es muy estricto. Ambos tipos de números difieren significativamente en
cómo se almacenan en la memoria de una computadora y en el rango de valores aceptables.

La característica del valor numérico que determina su clase, rango y aplicación se denomina tipo .

Si codifica un literal y lo coloca dentro del código Python, la forma del literal determina la representación
(tipo) que Python usará para almacenarlo en la memoria.
Por ahora, dejemos de lado los números de punto flotante (volveremos a ellos pronto) y consideremos la
cuestión de cómo Python reconoce los números enteros.
El proceso es casi como escribirlos con un lápiz sobre papel: es simplemente una cadena de dígitos que
forman el número. Pero hay una reserva: no debes insertar ningún carácter que no sean dígitos dentro del
número.
Tomemos, por ejemplo, el número once millones ciento once mil ciento once. Si ahora mismo tomaras un
lápiz en la mano, escribirías el número así: 11.111.111, o así: 11.111.111, o incluso así: 11 111
111.
Está claro que esta disposición facilita la lectura, especialmente cuando el número consta de muchos dígitos.
Sin embargo, Python no acepta cosas como estas. Está prohibido. Sin embargo, lo que Python permite es el
uso de guiones bajos en literales numéricos.* Por lo tanto, puedes escribir este
número así: 11111111, o así: 11_111_111.
NOTA Python 3.6 ha introducido guiones bajos en literales numéricos, lo que permite la colocación de guiones
bajos simples entre dígitos y después de los especificadores de base para mejorar la legibilidad. Esta
característica no está disponible en versiones anteriores de Python.
¿Y cómo codificamos números negativos en Python? Como de costumbre, añadiendo un signo menos.
Puedes escribir: ­11111111 o ­11_111_111.
Los números positivos no necesitan estar precedidos por el signo más, pero está permitido si así lo deseas. Las
siguientes líneas describen el mismo número: +11111111 y 11111111.

Números octales y hexadecimales


Hay dos convenciones adicionales en Python que son desconocidas en el mundo de las matemáticas.
El primero nos permite usar números en una representación octal .
Si un número entero está precedido por un prefijo 0O o 0o (cero­o), se tratará como un valor octal. Esto
significa que el número debe contener dígitos tomados únicamente del rango [0..7].
Machine Translated by Google

0o123 es un número octal con un valor (decimal) igual a 83.


La función print() realiza la conversión automáticamente. Prueba esto:

1 imprimir(0o123)
2

La segunda convención nos permite utilizar números hexadecimales . Estos números deben ir precedidos del
prefijo 0x o 0X (cero­x). 0x123 es un número
hexadecimal con un valor (decimal) igual a 291. La función print() también puede gestionar estos valores. Prueba
esto:

1 imprimir (0x123)
2
Machine Translated by Google

2.2.3 Flotadores
Ahora toca hablar de otro tipo, que está diseñado para representar y almacenar los números que (como diría un
matemático) tienen una fracción decimal no vacía.
Son los números que tienen (o pueden tener) una parte fraccionaria después del punto decimal, y aunque dicha
definición es muy pobre, ciertamente es suficiente para lo que deseamos discutir.
Siempre que utilizamos un término como dos y medio o menos cero coma cuatro, pensamos en números que la
computadora considera números de punto flotante :
2.5
­0,4

Nota: dos y medio parece normal cuando lo escribes en un programa, aunque si tu idioma nativo prefiere usar
una coma en lugar de un punto en el número, debes asegurarte de que tu número no contenga ninguna coma .

Python no aceptará eso o (en casos muy raros pero posibles) puede malinterpretar sus intenciones, ya que la
coma en sí tiene su propio significado reservado en Python.
Si desea utilizar sólo un valor de dos y medio, deberá escribirlo como se muestra anteriormente. Nota una vez más: hay
un punto entre 2 y 5, no una coma.
Como probablemente puedas imaginar, el valor de cero coma cuatro podría escribirse en Python como:
0,4

Pero no olvides esta sencilla regla: puedes omitir el cero cuando sea el único dígito delante o después del punto decimal.

En esencia, puedes escribir el valor 0,4 como:


.4

Por ejemplo: el valor de 4,0 podría escribirse como:


4.

Esto no cambiará ni su tipo ni su valor.

Ints versus flotadores

El punto decimal es esencial para reconocer números de punto flotante en Python.


Mira estos dos números:

4
4.0

Puedes pensar que son exactamente iguales, pero Python los ve de una manera completamente diferente. 4 es un

número entero , mientras que 4,0 es un número de punto flotante .


La cuestión es qué hace flotar.
Por otro lado, no sólo los puntos flotan. También puedes utilizar la letra e.
Cuando quieras utilizar números que sean muy grandes o muy pequeños, puedes utilizar la notación científica.

Tomemos, por ejemplo, la velocidad de la luz, expresada en metros por segundo. Escrito directamente quedaría así:
300000000.
Machine Translated by Google

Para evitar escribir tantos ceros, los libros de texto de física utilizan una forma abreviada, que probablemente ya
habrás visto: 3 x 108.
Dice: tres veces diez elevado a ocho.
En Python, el mismo efecto se logra de una manera ligeramente diferente; eche un vistazo:
3E8

La letra E (también puedes usar la letra e minúscula ; proviene de la palabra exponente) es un registro conciso de la
frase multiplicada por diez elevado a la potencia de.
Nota:

el exponente (el valor después de la E) tiene que ser un número entero;


la base (el valor delante de E) puede ser un número entero o un flotante.

Codificación de
flotadores Veamos cómo se utiliza esta convención para registrar números que son muy pequeños (en el sentido
de su valor absoluto, que es cercano a cero).
Una constante física llamada constante de Planck (y denotada como h), según los libros de texto, tiene el valor de:
6,62607 x 10­34.

Si desea utilizarlo en un programa, debe escribirlo de esta manera:


6.62607E­34

Nota: el hecho de que haya elegido una de las formas posibles de codificar valores flotantes no significa que Python la
presentará de la misma manera.
A veces, Python puede elegir una notación diferente a la suya.
Por ejemplo, digamos que ha decidido utilizar el siguiente literal flotante:
0.0000000000000000000001

Cuando ejecuta este literal a través de Python:

print(0.0000000000000000000001)

este es el resultado:

1e­22

Python siempre elige la forma más económica de presentación del número y debes tener esto en cuenta al crear
literales.
Machine Translated by Google

2.2.4 Cadenas Las


cadenas se utilizan cuando necesita procesar texto (como nombres de todo tipo, direcciones,
novelas, etc.), no números.
Ya sabes un poco sobre ellos, por ejemplo, que las cadenas necesitan comillas de la misma manera que los flotantes necesitan puntos.

Ésta es una cadena muy típica: "Soy una cadena".


Sin embargo, hay un problema. El problema es cómo codificar una cita dentro de una cadena que ya está
delimitada por comillas.
Supongamos que queremos imprimir un mensaje muy simple que diga:
Me gusta "monty python"

¿Cómo lo hacemos sin generar error? Hay dos posibles soluciones.


El primero se basa en el concepto que ya conocemos del carácter de escape, que debes recordar se reproduce mediante
la barra invertida. La barra invertida también puede escapar de las comillas. Una comilla precedida por una
barra invertida cambia su significado: no es un delimitador, sino solo una comilla. Esto funcionará según lo previsto:

1 print("Me gusta \"Monty Python\"")


2

Nota: hay dos comillas escapadas dentro de la cadena. ¿Puedes ver ambas?
La segunda solución puede resultar un poco sorprendente. Python puede usar un apóstrofe en lugar de
una cita. Cualquiera de estos caracteres puede delimitar cadenas, pero debes ser coherente.
Si abre una cadena con una comilla, debe cerrarla con una comilla.
Si comienzas una cadena con un apóstrofe, debes terminarla con un apóstrofe.
Este ejemplo también funcionará:

1 imprimir('Me gusta "Monty Python"')


2

Nota: no es necesario escapar aquí.

Codificación de
cadenas Ahora, la siguiente pregunta es: ¿cómo se incrusta un apóstrofe en una cadena colocada entre
apóstrofes?
Ya deberías saber la respuesta, o para ser precisos, dos posibles respuestas.
Intente imprimir una cadena que contenga el siguiente mensaje:
Soy Monty Python.

1 print('Soy Monty Python.')


2

¿Sabes como hacerlo? Haga clic en Verificar para ver si tenía razón:
Verificar (soluciones de muestra)
Machine Translated by Google

Como puede ver, la barra invertida es una herramienta muy poderosa: puede escapar no solo de las comillas, sino también
de los apóstrofes.

Ya lo hemos mostrado, pero queremos enfatizar este fenómeno una vez más: una cadena puede
estar vacía ; puede que no contenga ningún carácter.
Una cadena vacía sigue siendo una cadena:
''
""
Machine Translated by Google

2.2.5 valores booleanos


Para concluir con los literales de Python, hay dos adicionales.
No son tan obvios como los anteriores, ya que se utilizan para representar un valor muy abstracto: la veracidad.

Cada vez que le preguntas a Python si un número es mayor que otro, la pregunta da como resultado la creación
de algunos datos específicos: un valor booleano .
El nombre proviene de George Boole (1815­1864), autor de la obra fundamental, Las leyes del pensamiento, que
contiene la definición de álgebra de Boole , una parte del álgebra que utiliza sólo dos valores distintos: Verdadero y
Falso, denotados como 1 y 0.
Un programador escribe un programa y el programa hace preguntas. Python ejecuta el programa y proporciona
las respuestas. El programa debe poder reaccionar según las respuestas recibidas.

Afortunadamente, las computadoras sólo conocen dos tipos de respuestas:

Sí, es cierto; No,


esto es falso.

Nunca recibirás una respuesta como: No lo sé o Probablemente sí, pero no estoy seguro.
Python, entonces, es un reptil binario .
Estos dos valores booleanos tienen denotaciones estrictas en Python:
Verdadero

FALSO

No puede cambiar nada; debe tomar estos símbolos tal como están, incluida la distinción entre mayúsculas y
minúsculas.
Desafío: ¿Cuál será el resultado del siguiente fragmento de código?

1 imprimir(Verdadero > Falso)


2 imprimir(Verdadero < Falso)
3

Ejecute el código para verificar. ¿Puedes explicar el resultado?


Machine Translated by Google

LABORATORIO 4 Literales de Python: cadenas Escriba

un fragmento de código de una línea, utilizando la función print() , así como los caracteres de nueva línea y de
escape, para que coincida con el resultado esperado generado en tres líneas.

Rendimiento esperado
"Estoy
aprendiendo""
"""Pitón"""
Pista
Solución de muestra
Machine Translated by Google

2.2 RESUMEN DE LA SECCIÓN


1. Los literales son notaciones para representar algunos valores fijos en el código. Python tiene varios tipos de literales; por
ejemplo, un literal puede ser un número (literales numéricos, por ejemplo, 123) o una cadena (literales de cadena, por ejemplo,
"Soy un literal").

2. El sistema binario es un sistema de números que emplea 2 como base. Por lo tanto, un número binario se compone
únicamente de 0 y 1; por ejemplo, 1010 es 10 en decimal.

Los sistemas de numeración octal y hexadecimal, de manera similar, emplean 8 y 16 como bases respectivamente.
El sistema hexadecimal utiliza números decimales y seis letras adicionales.

3. Los números enteros (o simplemente enteros) son uno de los tipos numéricos admitidos por Python. Son números
escritos sin componente fraccionario, por ejemplo 256 o ­1 (enteros negativos).

4. Los números de coma flotante (o simplemente flotantes) son otro de los tipos numéricos admitidos por Python. Son números
que contienen (o pueden contener) un componente fraccionario, por ejemplo 1,27.

5. Para codificar un apóstrofo o una cita dentro de una cadena, puede usar el carácter de escape, por ejemplo,
'Estoy feliz', o abrir y cerrar la cadena usando un conjunto de símbolos opuestos a los que desea codificar. , por
ejemplo, "Estoy feliz". para codificar un apóstrofe, y 'Dijo "Python", no "tifón"' para codificar una comilla (doble).

6. Los valores booleanos son los dos objetos constantes Verdadero y Falso que se utilizan para representar valores
de verdad (en contextos numéricos 1 es Verdadero, mientras que 0 es Falso.
EXTRA

Hay un literal especial más que se usa en Python: el literal Ninguno . Este literal es un objeto NoneType y se
utiliza para representar la ausencia de un valor. Te contaremos más al respecto pronto.
Machine Translated by Google

2.2 EXAMEN DE SECCIÓN


Pregunta 1: ¿Qué tipos de literales son los dos ejemplos siguientes?
"Hola", "007"

Pregunta 2: ¿Qué tipos de literales son los siguientes cuatro ejemplos?


"1,5", 2,0, 528, Falso

Pregunta 3: ¿Cuál es el valor decimal del siguiente número binario?


1011

Controlar
Machine Translated by Google

SECCIÓN 2.3 – OPERADORES: HERRAMIENTAS DE MANIPULACIÓN DE DATOS


En esta sección, hablaremos sobre los operadores de Python.
Machine Translated by Google

2.3.1 Python como calculadora Ahora, le

mostraremos un lado completamente nuevo de la función print() . Ya sabes que la función puede mostrarte
los valores de los literales que se le pasan mediante argumentos.

1 imprimir(2+2)
2

Ejecute el código. ¿Puedes adivinar el resultado?


Deberías ver el número cuatro. Siéntase libre de experimentar con otros operadores.
Sin tomar esto demasiado en serio, acabas de descubrir que Python se puede utilizar como
calculadora. No es muy útil, y definitivamente no es de bolsillo, pero al fin y al cabo es una calculadora.
Tomándolo más en serio, ahora estamos entrando en el ámbito de los operadores y las expresiones.
Machine Translated by Google

2.3.2 Operadores básicos Un operador

es un símbolo del lenguaje de programación, que es capaz de operar sobre los valores.
Por ejemplo, al igual que en aritmética, el signo + (más) es el operador que puede sumar dos números,
dando el resultado de la suma.
Sin embargo, no todos los operadores de Python son tan obvios como el signo más, así que repasemos
algunos de los operadores disponibles en Python y explicaremos qué reglas rigen su uso y cómo interpretar
las operaciones que realizan.
Comenzaremos con los operadores asociados con las operaciones aritméticas más reconocibles:

+
­

/ //
%
**

El orden de aparición no es casual. Hablaremos más sobre ello una vez que los hayamos repasado
todos.
Recuerde: los datos y los operadores cuando se conectan entre sí forman expresiones. La expresión más
simple es un literal en sí mismo.

exponenciación
Mira el siguiente ejemplo:

1 imprimir(2 ** 3)
2 imprimir(2 ** 3.)
3 imprimir(2. ** 3)
4 imprimir(2. ** 3.)
5

Nota: hemos rodeado los asteriscos dobles con espacios en nuestros ejemplos. No es obligatorio, pero mejora
la legibilidad del código.
Los ejemplos muestran una característica muy importante de prácticamente todos los operadores numéricos de Python.

Ejecute el código y observe atentamente los resultados que produce. ¿Puedes ver alguna regularidad aquí?
Recuerde: es posible formular las siguientes reglas basándose en este resultado:

cuando ambos ** argumentos son números enteros, el resultado también es un número


entero; cuando al menos un argumento ** es flotante, el resultado también es flotante.

Ésta es una distinción importante que debemos recordar.

Multiplicación Un
signo * (asterisco) es un operador de multiplicación .
Machine Translated by Google

Ejecute el siguiente código y compruebe si nuestra regla de entero versus flotante sigue funcionando.

1 imprimir(2 * 3)
2 imprimir(2 * 3.)
3 imprimir(2. * 3)
4 imprimir(2. * 3.)
5

División
Un signo / (barra oblicua) es un operador de división .
El valor delante de la barra es un dividendo, el valor detrás de la barra es un divisor.

Ejecute el siguiente código y analice los resultados.

1 imprimir(6/3 )
2 imprimir (6/3 . )
3 imprimir(6./3 ) imprimir
4 ( 6./3. )
5

Deberías ver que hay una excepción a la regla.


El resultado producido por el operador de división es siempre un flotante, independientemente de si el resultado
parece ser un flotante a primera vista: 1/2 , o si parece un entero puro: 2/1 .
¿Es esto un problema? Sí, lo es. A veces sucede que realmente necesitas una división que proporcione un valor entero,
no un valor flotante.
Afortunadamente, Python puede ayudarte con eso.

División entera (división de piso)


Un signo // (doble barra) es un operador de división de enteros . Se diferencia del estándar / operador en dos detalles:

su resultado carece de la parte fraccionaria: está ausente (para números enteros) o siempre es igual a
cero (para flotantes); esto significa que los resultados siempre son
redondeados; se ajusta a la regla de entero versus flotante.

Ejecute el siguiente ejemplo y vea los resultados:

1 imprimir(6 // 3)
2 imprimir(6 // 3.)
3 imprimir(6. // 3)
4 imprimir(6. // 3.)
5

Como puede ver, la división entero por entero da un resultado entero. Todos los demás casos producen flotadores.

Hagamos algunas pruebas más avanzadas.

Mire el siguiente fragmento:


Machine Translated by Google

1 imprimir(6 // 4)
2 imprimir(6. // 4)
3

Imagina que usáramos / en lugar de // . ¿Podrías predecir los resultados?


Sí, sería 1,5 en ambos casos. Eso está claro.
Pero ¿qué resultados deberíamos esperar con // división?
Ejecute el código y compruébelo usted mismo.

Lo que obtenemos son dos unos: un entero y otro flotante.


El resultado de la división de números enteros siempre se redondea al valor entero más cercano que sea menor
que el resultado real (no redondeado).
Esto es muy importante: el redondeo siempre va al número entero menor.
Mire el siguiente código e intente predecir los resultados una vez más:

1 imprimir(­6 // 4)
2 imprimir(6. // ­4)
3

Nota: algunos de los valores son negativos. Obviamente esto afectará el resultado. ¿Pero cómo?
El resultado son dos negativos dos. El resultado real (no redondeado) es ­1,5 en ambos casos. Sin embargo, los
resultados son sujetos de redondeo. El redondeo va hacia el valor entero menor, y el valor entero menor es ­2, por lo
tanto: ­2 y ­2,0.
NOTA

La división de números enteros también se puede llamar división de piso. Definitivamente te encontrarás con este término
en el futuro.

Resto (módulo)
El siguiente operador es bastante peculiar porque no tiene equivalente entre los operadores aritméticos
tradicionales.
Su representación gráfica en Python es el signo % (porcentaje), que puede parecer un poco confuso.
Intente pensar en ello como una barra diagonal (operador de división) acompañada de dos pequeños círculos divertidos.

El resultado del operador es el resto que queda después de la división del número entero.
En otras palabras, es el valor que queda después de dividir un valor por otro para producir un cociente entero.

Nota: al operador a veces se le llama módulo en otros lenguajes de programación.


Eche un vistazo al fragmento; intente predecir su resultado y luego ejecútelo:

1 imprimir(14 % 4)
2

Como puedes ver, el resultado es dos. Esta es la razón por:

14 // 4 da 3 → este es el cociente entero;


Machine Translated by Google

3 * 4 da 12 → como resultado de la multiplicación de cocientes y divisores; 14 –


12 da 2 → este es el resto.

Este ejemplo es algo más complicado:

1 imprimir(12 % 4.5)
2

Cual es el resultado?
Controlar

Como no dividir
Como probablemente sepas, la división por cero no funciona.
No intentes :

realizar una división por cero;


realizar una división de un número entero
por cero; encontrar el resto de una división por cero.

Suma
El operador de suma es el signo + (más), que está totalmente en línea con los estándares matemáticos.
Nuevamente, eche un vistazo al fragmento del siguiente programa:

1 imprimir(­4 + 4)
2 imprimir(­4. + 8)
3

El resultado no debería ser nada sorprendente. Ejecute el código para comprobarlo.

El operador de resta, operadores unarios y binarios El operador de resta


es obviamente el signo – (menos), aunque debes tener en cuenta que este operador también tiene otro
significado: puede cambiar el signo de un número.
Esta es una gran oportunidad para presentar una distinción muy importante
entre operadores unarios y binarios .
En aplicaciones de resta, el operador menos espera dos argumentos: el izquierdo (un
minuendo en términos aritméticos) y el derecho (un sustraendo).
Por este motivo, el operador de resta se considera uno de los operadores binarios, al igual que los
operadores de suma, multiplicación y división.
Pero el operador menos puede usarse de una manera diferente (unaria); eche un vistazo a la última línea
del fragmento:

1 imprimir(­4 – 4)
2 imprimir(4. – 8)
3 imprimir(­1.1)
4
Machine Translated by Google

Por cierto: también existe un operador unario + . Puedes usarlo así:

1 imprimir(+2)
2

El operador conserva el signo de su único argumento: el correcto.


Aunque tal construcción es sintácticamente correcta, usarla no tiene mucho sentido y sería difícil encontrar
una buena justificación para hacerlo.
Eche un vistazo al fragmento anterior: ¿puede adivinar su resultado?
Machine Translated by Google

2.3.3 Operadores y sus prioridades


Hasta ahora, hemos tratado a cada operador como si no tuviera conexión con los demás. Obviamente, una situación
tan ideal y simple es una rareza en la programación real.
Además, muy a menudo encontrarás más de un operador en una expresión, y entonces las cosas ya no serán tan
simples.
Considere la siguiente expresión:
2+3*5

Probablemente recuerdes de la escuela que las multiplicaciones preceden a las sumas.


Seguramente recuerdas que primero debes multiplicar 3 por 5 y, guardando el 15 en tu memoria, luego sumarlo a 2,
obteniendo así el resultado de 17.
El fenómeno que hace que unos operadores actúen antes que otros se conoce como jerarquía de prioridades.

Python define con precisión las prioridades de todos los operadores y supone que los operadores de mayor prioridad
realizan sus operaciones antes que los operadores de menor prioridad.
Entonces, si sabes que * tiene mayor prioridad que +, el cálculo del resultado final debería ser obvio.

Operadores y sus vinculaciones La


vinculación del operador determina el orden de los cálculos realizados por algunos operadores con igual
prioridad, colocados uno al lado del otro en una expresión.
La mayoría de los operadores de Python tienen enlace del lado izquierdo, lo que significa que el cálculo de la
expresión se realiza de izquierda a derecha.

1 imprimir(9 % 6 % 2)
2

Hay dos formas posibles de evaluar esta expresión:

de izquierda a derecha: primero el 9 % 6 da 3, y luego el 3 % 2 da 1; De


derecha a izquierda: el primer 6 % 2 da 0 y luego el 9 % 0 provoca un error fatal.

Ejecute el ejemplo y vea lo que obtiene.

1 imprimir(9 % 6 % 2)
2

El resultado debería ser 1. Este operador tiene enlace por el lado izquierdo. Pero hay una excepción interesante.

Repita el experimento, pero ahora con exponenciación.


Utilice este fragmento de código:

1 imprimir(2 ** 2 ** 3)
2
Machine Translated by Google

Los dos resultados posibles son:

2 ** 2 → 4; 4 ** 3 → 64
2 ** 3 → 8; 2**8 → 256

Ejecute el código. ¿Que ves?


El resultado muestra claramente que el operador de exponenciación utiliza vinculación por el lado derecho.
Esto tiene un efecto interesante. Si el operador de exponenciación utiliza enlace del lado derecho, ¿puedes
adivinar el resultado del siguiente fragmento?

1 imprimir(­3 ** 2)
2 imprimir(­2 ** 3)
3 imprimir(­(3 ** 2))
4

Controlar

Lista de prioridades
Dado que es nuevo en los operadores de Python, no queremos presentarle la lista completa de prioridades de los
operadores en este momento.
En su lugar, le mostraremos un formulario truncado y lo ampliaremos constantemente a medida que introduzcamos nuevos
operadores.
Mira la siguiente tabla:
OPERADOR PRIORITARIO
1 **

2 +, – (nota: los operadores unarios ubicados al lado derecho del operador de potencia se
unario
vinculan con más fuerza)
3 *, /, //, %
4 +, ­ binario
Nota: hemos enumerado los operadores en orden desde la prioridad más alta (1) hasta la más baja
(4).
Intente resolver la siguiente expresión:

1 imprimir(2 * 3 % 5)
2

Ambos operadores (* y %) tienen la misma prioridad, por lo que el resultado sólo se puede adivinar cuando
se conoce la dirección de enlace. ¿Qué opinas? Cual es el resultado?
Controlar

Operadores y paréntesis Por supuesto,


siempre se permite utilizar paréntesis, que pueden cambiar el orden natural de un cálculo.
Machine Translated by Google

De acuerdo con las reglas aritméticas, las subexpresiones entre paréntesis siempre se calculan primero.

Puede utilizar tantos paréntesis como necesite y, a menudo, se utilizan para mejorar la legibilidad de una
expresión, incluso si no cambian el orden de las operaciones.
Aquí se muestra un ejemplo de una expresión con varios paréntesis:

1 imprimir((5 * ((25 % 13) + 100) / (2 * 13)) // 2)


2

Intente calcular el valor que se imprime en la consola. ¿Cuál es el resultado de la función


print() ?
Controlar
Machine Translated by Google

2.3 RESUMEN DE LA SECCIÓN

Conclusiones clave
1. Una expresión es una combinación de valores (o variables, operadores, llamadas a funciones;
aprenderá sobre ellos pronto) que se evalúa como un valor determinado, por ejemplo, 1 + 2.
2. Los operadores son símbolos o palabras clave especiales que pueden operar con los valores y
realizar operaciones (matemáticas), por ejemplo, el operador * multiplica dos valores: x * y.
3. Operadores aritméticos en Python: + (suma), – (resta), * (multiplicación), / (división clásica ­ siempre
devuelve un valor flotante), % (módulo ­ divide el operando izquierdo por el operando derecho y
devuelve el resto de la operación , por ejemplo, 5 % 2 = 1), ** (exponenciación ­ operando izquierdo
elevado a la potencia del operando derecho, por ejemplo, 2 ** 3 = 2 * 2 * 2 = 8), // (división piso/entero
­ devuelve un número resultante de la división, pero redondeado hacia abajo al número entero más
cercano, por ejemplo, 3 // 2,0 = 1,0)
4. Un operador unario es un operador con un solo operando, por ejemplo ­1 o +3.
5. Un operador binario es un operador con dos operandos, por ejemplo, 4 + 5 o 12 % 5.
6. Algunos operadores actúan antes que otros – la jerarquía de prioridades:

el operador ** (exponenciación) tiene la máxima prioridad; luego


el unario + y – (nota: un operador unario a la derecha del operador de exponenciación se vincula
con más fuerza, por ejemplo 4 ** ­1 es igual a 0,25) , luego: *, /
y %, y finalmente,
la prioridad más baja: binario + y ­.

7. Las subexpresiones entre paréntesis siempre se calculan primero, por ejemplo, 15 – 1 * (5 * (1 + 2))
= 0.
8. El operador de exponenciación utiliza enlace por el lado derecho, por ejemplo, 2 ** 2 ** 3 = 256.
Machine Translated by Google

2.3 EXAMEN DE SECCIÓN

Pregunta 1: ¿Cuál es el resultado esperado del siguiente fragmento?

1 imprimir((2 ** 4), (2 * 4.), (2 * 4))


2

Pregunta 2: ¿Cuál es el resultado esperado del siguiente fragmento?

1 imprimir((­2/4 ) , (2/4 ) , (2/4 ) , (­2/4 ) )


2

Pregunta 3: ¿Cuál es el resultado esperado del siguiente fragmento?

1 imprimir((2 % ­4), (2 % 4), (2 ** 3 ** 2))


2

Controlar
Machine Translated by Google

SECCIÓN 2.4 – VARIABLES


Esta parte del curso se centra en las variables: aprenderemos qué son, cómo usarlas y
cuáles son las reglas que las gobiernan. ¿Listo?
Machine Translated by Google

2.4.1 Variables: cuadros con forma de datos Parece bastante obvio

que Python debería permitirle codificar literales que contengan valores numéricos y de texto.

Ya sabes que puedes hacer algunas operaciones aritméticas con estos números: sumar, restar,
etc. Lo harás muchas veces.
Pero es una pregunta bastante normal preguntar cómo almacenar los resultados de estas operaciones,
para poder utilizarlos en otras operaciones, etc.
¿Cómo se guardan los resultados intermedios y se vuelven a utilizar para producir los siguientes?
Python te ayudará con eso. Ofrece "cajas" especiales (o "contenedores", como podemos llamarlas) para
ese propósito, y estas cajas se llaman variables ; el nombre en sí sugiere que el contenido de estos
contenedores se puede variar de (casi) cualquier forma.
¿Qué tiene cada variable de Python?

un nombre;

un valor (el contenido del contenedor)

Comencemos con las cuestiones relacionadas con el nombre de una variable.

Las variables no aparecen en un programa automáticamente. Como desarrollador, debes decidir


cuántas y qué variables usar en tus programas.
También debes nombrarlos.
Machine Translated by Google

2.4.2 Nombres de variables


Si quieres darle un nombre a una variable, debes seguir algunas reglas estrictas:

el nombre de la variable debe estar compuesto por letras mayúsculas o minúsculas, dígitos, _ (guión bajo) y el
carácter
el nombre de la variable debe comenzar con una letra; el
carácter de subrayado es una letra; las letras

mayúsculas y minúsculas se tratan como diferentes (un poco diferente que en el mundo real: Alice y ALICE
son los mismos nombres, pero en Python son dos nombres de variables diferentes y, en consecuencia, dos
variables diferentes); el nombre de la variable no debe ser ninguna de las
palabras reservadas de Python (las palabras clave; explicaremos más sobre esto pronto).

Tenga en cuenta que se aplican las mismas restricciones a los nombres de funciones.

Python no impone restricciones sobre la longitud de los nombres de las variables, pero eso no significa que un
nombre de variable largo sea siempre mejor que uno corto.
Aquí hay algunos nombres de variables correctos, pero no siempre convenientes:

MiVariable
i
yo

t34

Tipo de cambio
encimera

dias_para_navidad
El nombre es demasiado largo y difícilmente legible
_

Estos nombres de variables también son correctos:

Adiós_Señora
sûr_la_mer
Einbahnstraße

permanente

Python te permite usar no sólo letras latinas sino también caracteres específicos de idiomas que usan otros
alfabetos.
Y ahora algunos nombres incorrectos :

10t (no comienza con una letra) !importante


(no comienza con una letra) tipo de cambio (contiene
un espacio).

NOTA
Machine Translated by Google

PEP 8 ­ Guía de estilo para código Python recomienda la siguiente convención de nomenclatura para variables y
funciones en Python:

Los nombres de las variables deben estar en minúsculas, con las palabras separadas por guiones bajos para
mejorar la legibilidad (por ejemplo, var,
mi_variable). Los nombres de funciones siguen la misma convención que los
nombres de variables (por
ejemplo, divertido, mi_función). También es posible usar mayúsculas y minúsculas (por ejemplo, miVariable),
pero solo en contextos donde ese ya es el estilo predominante, para mantener la compatibilidad
con la convención adoptada.

Palabras clave
Eche un vistazo a la lista de palabras que juegan un papel muy especial en cada programa Python.

['Falso', 'Ninguno', 'Verdadero', 'y', 'como', 'afirmar', 'romper', 'clase', 'continuar', 'def', 'del', 'elif', ' else', 'excepto',
'finalmente', 'para', 'de', 'global', 'si', 'importar', 'en', 'es', 'lambda', 'no local', 'no' , 'o', 'pasar', 'subir', 'volver', 'intentar',
'mientras', 'con', 'ceder']

Se denominan palabras clave o (más precisamente) palabras clave reservadas. Están reservados porque no
debes usarlos como nombres: ni para tus variables, ni para funciones, ni para ninguna otra entidad con nombre que
quieras crear.
El significado de la palabra reservada está predefinido y no debe modificarse de ninguna manera.
Afortunadamente, debido al hecho de que Python distingue entre mayúsculas y minúsculas, puedes modificar
cualquiera de estas palabras cambiando el caso de cualquier letra, creando así una nueva palabra, que ya no está reservada.
Por ejemplo, no puedes nombrar tu variable así:

importar

No debe tener una variable nombrada de esa manera; está prohibido. Pero puedes hacer esto en su lugar:

Importar

Estas palabras pueden ser un misterio para usted ahora, pero pronto aprenderá su significado.
Machine Translated by Google

2.4.3 Cómo crear una variable


¿Qué puedes poner dentro de una variable?
Cualquier cosa.

Puede utilizar una variable para almacenar cualquier valor de cualquiera de los tipos ya presentados y muchos
más de los que aún no le hemos mostrado.
El valor de una variable es lo que le has puesto. Puede variar tantas veces como necesites o quieras. Puede ser un
número entero un momento y un flotante un momento después, convirtiéndose finalmente en una cadena.
Hablemos ahora de dos cosas importantes: cómo se crean las variables y cómo poner valores dentro de
ellas (o más bien, cómo darles o pasarles valores ).
RECORDAR

Una variable surge como resultado de asignarle un valor. A diferencia de otros idiomas, no es necesario
declararlo de ninguna forma especial.
Si asigna cualquier valor a una variable inexistente, la variable se creará automáticamente.
No necesitas hacer nada más.
La creación (en otras palabras, su sintaxis) es extremadamente simple: simplemente use el nombre de la
variable deseada, luego el signo igual (=) y el valor que desea poner en la variable.
Eche un vistazo al siguiente fragmento:

1 var = 1
2 imprimir(var)
3

Consta de dos sencillas instrucciones:

El primero de ellos crea una variable llamada var y le asigna un literal con un valor entero igual a 1.

El segundo imprime el valor de la variable recién creada en la consola.

Como puede ver, print() tiene otra faceta: también puede manejar variables. ¿Sabes cuál será el resultado del
fragmento? Ejecute el código para verificar.
Machine Translated by Google

2.4.4 Cómo utilizar una variable


Puedes utilizar tantas declaraciones de variables como necesites para lograr tu objetivo, como esta:

1 var = 1
2 saldo_cuenta = 1000.0 nombre_cliente = 'John
3 Doe' print(var, saldo_cuenta, nombre_cliente)
4 print(var)
5
6

Sin embargo, no está permitido utilizar una variable que no exista (en otras palabras, una variable a la que no se le
asignó un valor).
Este ejemplo provocará un error:

1 var = 1
2 imprimir(Var)
3

¿Sabes por qué? Hemos intentado utilizar una variable llamada Var, que no tiene ningún valor (nota: var y Var son
entidades diferentes y no tienen nada en común en lo que respecta a Python).

RECORDAR

Puede usar la función print() y combinar texto y variables usando el operador + para generar cadenas y variables. Por
ejemplo:

1 var = "3.8.5"
2 print("Versión de Python: " +var)
3

¿Puedes adivinar el resultado del fragmento?


Controlar
Machine Translated by Google

2.4.5 Cómo asignar un nuevo valor a una variable ya existente

¿Cómo se asigna un nuevo valor a una variable que ya existe? Del mismo modo. Sólo necesitas usar el signo igual.

De hecho, el signo igual es un operador de asignación. Aunque esto pueda parecer extraño, el operador tiene
una sintaxis simple y una interpretación inequívoca.
Asigna el valor de su argumento derecho al izquierdo, mientras que el argumento derecho puede ser una
expresión arbitrariamente compleja que involucra literales, operadores y variables ya definidas.
Mira el código:

1 var = 1
2 imprimir(var) var =
3 var + 1
4 imprimir(var)
5

El código envía dos líneas a la consola:

1
2

La primera línea del fragmento crea una nueva variable llamada var y le asigna 1 .
La declaración dice: asigne un valor de 1 a una variable denominada var.
Podemos decirlo más brevemente: asigna 1 a var.
Algunos prefieren leer una declaración como: var se convierte en 1.
La tercera línea asigna a la misma variable el nuevo valor tomado de la propia variable, sumado a 1. Al ver un
registro como ese, un matemático probablemente protestaría: ningún valor puede ser igual a sí mismo más uno. Esto
es una contradicción. Pero Python trata el signo = no como igual, sino como asignado a un valor.

Entonces, ¿cómo se lee ese registro en el programa?


Tome el valor actual de la variable var, agréguele 1 y almacene el resultado en la variable var.
En efecto, el valor de la variable var se ha incrementado en uno, lo que no tiene nada que ver con comparar la
variable con ningún valor.
¿Sabe cuál será el resultado del siguiente fragmento?

1 var = 100
2 var = 200 + 300 imprimir(var)
3
4

Controlar
Machine Translated by Google

2.4.6 Resolver problemas matemáticos simples Ahora deberías poder


construir un programa corto que resuelva problemas matemáticos simples como el teorema de
Pitágoras: El cuadrado de la hipotenusa
es igual a la suma de los cuadrados de los otros dos catetos.
El siguiente código evalúa la longitud de la hipotenusa (es decir, el lado más largo de un triángulo
rectángulo, el opuesto al ángulo recto) utilizando el teorema de Pitágoras:

1 a = 3,0 b =
2 4,0 c = (a **
3 2 + b ** 2) ** 0,5 imprimir("c =", c)
4
5

Nota: necesitamos hacer uso del operador ** para evaluar la raíz cuadrada como: √(x) = x(½)

y
c = √(a2 + b2)
¿Puedes adivinar el resultado del código?
Controlar
Machine Translated by Google

LABORATORIO 5 Variables

Aquí hay una historia


corta: Érase una vez en Appleland, Juan tenía tres manzanas, María tenía cinco manzanas y Adán tenía seis
manzanas. Todos estaban muy felices y vivieron mucho tiempo. Fin de la historia.
Tu tarea es:

crea las variables: juan, maría y adán; asignar valores


a las variables. Los valores deben ser iguales a la cantidad de frutos que poseían Juan, María
y Adán respectivamente; habiendo almacenado los números
en las variables, imprima las variables en una línea y separe cada una de ellas con una coma; ahora
cree una nueva variable llamada
total_apples igual a la suma de las tres variables anteriores; imprime el valor almacenado en
total_apples en la
consola; Experimente con su código: cree nuevas variables,
asígneles diferentes valores y realice varias operaciones aritméticas con ellas (por ejemplo , +, ­, *, /, //,
etc.). Intente imprimir una cadena y un número entero juntos en una línea, por ejemplo, "Número
total de manzanas:" y total_manzanas.

Solución de muestra
Machine Translated by Google

2.4.7 Operadores de acceso directo Es


hora del siguiente conjunto de operadores que hacen la vida del desarrollador más fácil. Muy a menudo,
queremos usar la misma variable tanto en el lado derecho como en el izquierdo del operador = .
Por ejemplo, si necesitamos calcular una serie de valores sucesivos de potencias de 2, podemos usar
una pieza como esta:

1 x=x*2
2

Puedes usar una expresión como esta si no puedes conciliar el sueño y estás tratando de solucionarlo
usando algunos métodos buenos y anticuados:

1 oveja = oveja + 1
2

Python le ofrece una forma abreviada de escribir operaciones como estas, que se pueden codificar de la siguiente
manera:

1 x *= 2
2 ovejas += 1
3

Intentemos presentar una descripción general de estas operaciones. Si op es un operador de dos


argumentos (esta es una condición muy importante) y el operador se usa en el siguiente contexto...:
variable = expresión de operación variable

...entonces se puede simplificar y mostrar de la siguiente manera:

variable op= expresión

Eche un vistazo a los siguientes ejemplos. Asegúrate de entenderlos todos.


EXPRESIÓN OPERADOR DE ATAJO

yo = yo + 2 * j yo += 2 * j
var=var/2 var/= 2
rem = rem % 10 % restante = 10

j = j – (i + var + rem) j ­= (i + var + rem)


X=X**2 x**= 2
Machine Translated by Google

PRAC 6 Variables: un conversor simple Millas y


kilómetros son unidades de longitud o distancia.
Teniendo en cuenta que 1 milla equivale aproximadamente a 1,61 kilómetros, completa el programa para que convierta:

millas a kilómetros;
kilómetros a millas.

No cambie nada en el código existente. Escribe tu código en los lugares indicados por ###.
Pruebe su programa con los datos que le proporcionamos en el código fuente.
Preste especial atención a lo que sucede dentro de la función print() . Analice cómo proporcionamos múltiples
argumentos a la función y cómo generamos los datos esperados.
Tenga en cuenta que algunos de los argumentos dentro de la función print() son cadenas (por ejemplo, "millas es",
mientras que otros son variables (por ejemplo, millas).
CONSEJO

Hay una cosa más interesante sucediendo allí. ¿Puedes ver otra función dentro de la función print() ? Es la
función round() . Su trabajo es redondear el resultado generado al número de decimales especificado entre paréntesis
y devolver un valor flotante (dentro de la función round() puede encontrar el nombre de la variable,
una coma y el número de decimales que buscamos). para). Muy pronto hablaremos de funciones, así que no te
preocupes porque puede que aún no esté todo del todo claro. Sólo queremos despertar tu curiosidad.

Después de completar el laboratorio, abra Sandbox y experimente un poco más. Intente escribir diferentes conversores,
por ejemplo, un conversor de USD a EUR, un conversor de temperatura, etc. ¡Deje volar su imaginación! Intente
generar los resultados combinando cadenas y variables. Intente utilizar y experimentar con la función round() para
redondear sus resultados a uno, dos o tres decimales. Vea lo que sucede si no proporciona ningún número de
dígitos. Recuerde probar sus programas.
Experimenta, saca conclusiones y aprende. Ser curioso.

Rendimiento esperado
7,38 millas son 11,88 kilómetros 12,25 kilómetros
son 7,61 millas

Código

1 kilómetros = 12,25 millas =


2 7,38
3 millas_a_kilómetros = ### kilómetros_a_millas
4 = ### print(millas, "millas son",
5 round(millas_a_kilómetros, 2),
"kilómetros") print(kilómetros, "kilómetros son", round(kilómetros_a_millas, 2 ),
6 "millas")

Solución de muestra
Machine Translated by Google

LABORATORIO 7 Operadores y expresiones


Eche un vistazo al siguiente código: lee un valor flotante , lo coloca en una variable denominada x e imprime el valor
de una variable denominada y. Tu tarea es completar el código para evaluar la siguiente expresión: 3x3 – 2x2 + 3x –
1

El resultado debe asignarse a y.


Recuerde que a la notación algebraica clásica le gusta omitir el operador de multiplicación; debe usarlo
explícitamente. Observe cómo cambiamos el tipo de datos para asegurarnos de que x sea de tipo flotante.
Mantenga su código limpio y legible, y pruébelo utilizando los datos que le hemos proporcionado, asignándolo
cada vez a la variable x (codificándolo). No se desanime por ningún fracaso inicial. Sea persistente e inquisitivo.

Entrada de muestra
x=0
x=1
x = ­1

Salida de muestra

y = ­1,0 y =
3,0 y = ­9,0

Código

1 x = # Codifique sus datos de prueba aquí. x = flotante(x)


2
3 # Escribe tu código aquí. imprimir("y
4 =", y)
5

Solución de muestra
Machine Translated by Google

2.4 RESUMEN DE LA SECCIÓN


1. Una variable es una ubicación con nombre reservada para almacenar valores en la memoria. Una variable se crea o
inicializa automáticamente cuando le asigna un valor por primera vez. (Sección 2.4.1)

2. Cada variable debe tener un nombre único: un identificador. Un nombre de identificador legal debe ser una
secuencia de caracteres que no esté vacía, debe comenzar con un guión bajo (_) o una letra y no puede
ser una palabra clave de Python. El primer carácter puede ir seguido de guiones bajos, letras y dígitos. Los
identificadores en Python distinguen entre mayúsculas y minúsculas.
3. Python es un lenguaje de tipado dinámico , lo que significa que no es necesario declarar variables en él. (Sección 2.4.3)
Para asignar valores a variables, puede utilizar un operador de asignación simple en forma de signo igual (=) , es decir, var
= 1.

4. También puede utilizar operadores de asignación compuestos (operadores de acceso directo) para modificar valores
asignados a variables, por ejemplo: var += 1 o var /= 5 * 2.

5. Puede asignar nuevos valores a variables ya existentes utilizando el operador de asignación o uno de los operadores
compuestos, por ejemplo:

1 var = 2
2 imprimir(var) var =
3 3 imprimir(var)
4 var += 1
5
6 imprimir(var)
7

6. Puede combinar texto y variables usando el operador + y usar la función print() para generar cadenas y variables, por
ejemplo:

1 var = "007"
2 print("Agente " +var)
3
Machine Translated by Google

2.4 EXAMEN DE SECCIÓN

Pregunta 1: ¿Cuál es el resultado del siguiente código?

1 var = 2 var =
2 3 imprimir(var)
3
4

3
2

Pregunta 2: ¿Cuáles de los siguientes nombres de variables son ilegales


en Python? (Seleccione tres respuestas)

mi_var
metro

101

averylongnombredevariable
m101

metro 101

Del

del

Pregunta 3: ¿Cuál es el resultado del siguiente fragmento?

1 a = '1' b =
2 "1" imprimir(a
3 + b)
4

11

Pregunta 4: ¿Cuál es el resultado del siguiente fragmento?

1 a=6b=
2 3 a /= 2
3 * b imprimir(a)
4
5
Machine Translated by Google

1.0
1
9
6
6.0

Controlar
Machine Translated by Google

SECCIÓN 2.5 – COMENTARIOS


En esta sección queremos compartir contigo algunos comentarios sobre comentarios. Aquí aprenderá
por qué es importante documentar su código y por qué debería dejar comentarios. También aprenderá
cómo hacerlo y cuándo los comentarios se consideran una buena práctica. ¡Vamos!
Machine Translated by Google

2.5.1 Comentarios: ¿por qué, cuándo y cómo?


Es posible que desees escribir algunas palabras dirigidas no a Python sino a humanos, generalmente para explicar a
otros lectores del código cómo funcionan los trucos utilizados en el código, o los significados de las variables y,
eventualmente, para mantenerlas almacenadas. información sobre quién es el autor y cuándo se escribió el
programa.
Un comentario insertado en el programa, que se omite en tiempo de ejecución, se denomina comentario.
¿Cómo se deja este tipo de comentario en el código fuente? Debe hacerse de una manera que no obligue a
Python a interpretarlo como parte del código.
Siempre que Python encuentra un comentario en su programa, el comentario es completamente transparente
para él; desde el punto de vista de Python, esto es solo un espacio (independientemente de qué tan largo sea el
comentario real).
En Python, un comentario es un fragmento de texto que comienza con un signo # (almohadilla) y se extiende hasta el
final de la línea.

Si desea un comentario que abarque varias líneas, debe colocar un hash delante de todas ellas.
Como aquí:

1 # Este programa evalúa la hipotenusa c. # a y b son las longitudes de los


2 catetos. a = 3.0 b = 4.0 c = (a ** 2 + b ** 2) ** 0.5 # Usamos ** en lugar
3 de una raíz
4 cuadrada.
5 imprimir("c =", c)

6
7

Los desarrolladores responsables describen cada fragmento de código importante, por ejemplo, explicando el papel
de las variables. Aunque hay que decir que la mejor forma de comentar variables es nombrarlas de forma inequívoca.

Por ejemplo, si una variable particular está diseñada para almacenar el área de algún cuadrado único, el nombre
área_cuadrado obviamente será mejor que tía_jane.
Decimos que el primer nombre es autocomentativo.
Machine Translated by Google

2.5.2 Marcar fragmentos de código Los comentarios

pueden ser útiles en otro aspecto: puede usarlos para marcar un fragmento de código que actualmente no es
necesario por cualquier motivo. Mire el siguiente ejemplo, si descomenta la línea resaltada,
esto afectará la salida del código:

1 # Este es un programa de prueba. x = 1


2
3 y=2#
4 y = y + x imprimir(x
5 + y)
6

Esto suele hacerse durante la prueba de un programa, para aislar el lugar donde podría estar oculto un error.

CONSEJO

Si desea comentar o descomentar rápidamente varias líneas de código, seleccione las líneas que desea
modificar y utilice el siguiente método abreviado de teclado: CTRL + / (Windows) o CMD + / (Mac OS). Es un
truco muy útil, ¿no? Ahora experimente con el siguiente código.

1 # descomentar_yo = 1 #
2 descomentar_yo_también = 3 #
3 descomentar_yo_también = 5
4 print(descomentar_yo, descomentar_yo_también, descomentar_yo_también, sep="\n")
5
Machine Translated by Google

LABORATORIO 8 Comentarios

El código contiene comentarios. Intente mejorarlo: agregue o elimine comentarios cuando lo considere apropiado (sí,
a veces eliminar un comentario puede hacer que el código sea más legible) y cambie los nombres de las variables
cuando crea que esto mejorará la comprensión del código.
NOTA

Los comentarios son muy importantes. Se utilizan no sólo para hacer que sus programas sean más fáciles de
entender, sino también para deshabilitar aquellas piezas de código que actualmente no son necesarias (por ejemplo,
cuando necesita probar sólo algunas partes de su código e ignorar otras). Los buenos programadores
describen cada parte importante del código y dan nombres con comentarios propios a las variables, ya que a veces
es mucho mejor dejar información en el código.
Es bueno usar nombres de variables legibles y, a veces, es mejor dividir el código en partes con nombre (por ejemplo,
funciones). En algunas situaciones, es una buena idea escribir los pasos de los cálculos de forma más clara.

Una cosa más: puede suceder que un comentario contenga información errónea o incorrecta; ¡nunca debes
hacerlo a propósito!

Código

1 #este programa calcula el número de segundos en un número determinado de horas # este programa fue escrito
hace
2 dos días a = 2 # número de horas segundos = 3600 # número de
3 segundos en 1 hora print("Horas: ", a)
4 #imprimiendo el número de horas # print("Segundos en Horas: ", a *
5 segundos) # imprimiendo el número de segundos en un número determinado de
6 horas #aquí también deberíamos imprimir "Adiós", pero un programador no tuvo tiempo de escribir cualquier
código #este es el final del programa que calcula la cantidad de
7 segundos en 3 horas

9
Machine Translated by Google

2.5 RESUMEN DE LA SECCIÓN


1. Los comentarios se pueden utilizar para dejar información adicional en el código. Se omiten en tiempo de ejecución.
La información que queda en el código fuente está dirigida a lectores humanos. En Python, un comentario es un
fragmento de texto que comienza con #. El comentario se extiende hasta el final de la línea.
2. Si desea colocar un comentario que abarque varias líneas, debe colocar # delante de todas. Además, puede utilizar un
comentario para marcar un fragmento de código que no es necesario en este momento (consulte la última línea
del siguiente fragmento), por ejemplo:

1 # Este programa imprime # una


2 introducción en la pantalla. print("¡Hola!") # Invocando
3 la función print() # print("Soy Python.")
4
5

3. Siempre que sea posible y esté justificado, debe dar nombres con comentarios propios a las variables; por
ejemplo, si está utilizando dos variables para almacenar la longitud y el ancho de algo, los nombres de variables
largo y ancho pueden ser una mejor opción que myvar1 y myvar2.
4. Es importante utilizar comentarios para que los programas sean más fáciles de entender y utilizar nombres de variables
legibles y significativos en el código. Sin embargo, es igualmente importante no utilizar nombres de variables que
sean confusos ni dejar comentarios que contengan información errónea o incorrecta.
5. Los comentarios pueden ser importantes cuando usted lee su propio código después de un tiempo (créanos, los
desarrolladores olvidan lo que hace su propio código) y cuando otros leen su código (pueden ayudarlos a comprender
qué hacen sus programas y cómo funcionan). hacerlo más rápido).
Machine Translated by Google

2.5 EXAMEN DE SECCIÓN

Pregunta 1: ¿Cuál es el resultado del siguiente fragmento?

1 # imprimir("Cadena #1")
2 imprimir("Cadena #2")
3

Pregunta 2: ¿Qué pasará cuando ejecute el siguiente código?

1 # Esta es una
2 línea múltiple
3 comentario. #
4 imprimir("¡Hola!")
5

Controlar
Machine Translated by Google

SECCIÓN 2.6 – INTERACCIÓN CON EL USUARIO


En esta sección, aprenderá a hablar con una computadora: se familiarizará con la
función input() , realizará conversiones de tipos y aprenderá a utilizar operadores de cadena.
Machine Translated by Google

2.6.1 La función input() Ahora vamos a presentarle

una función completamente nueva, que parece ser un reflejo de la antigua función print() .

¿Por qué? Bueno, print() envía datos a la consola.


La nueva función obtiene datos de ella.
print() no tiene ningún resultado utilizable. El significado de la nueva función es devolver un resultado muy utilizable.

La función se llama entrada(). El nombre de la función lo dice todo.


La función input() puede leer los datos ingresados por el usuario y devolver los mismos datos al programa en
ejecución.
El programa puede manipular los datos, haciendo que el código sea verdaderamente interactivo.

Prácticamente todos los programas leen y procesan datos. Un programa que no recibe la entrada del usuario
es un programa sordo.
Eche un vistazo a nuestro ejemplo:

1 print("Dime cualquier cosa...") cualquier cosa =


2 input() print("Hmm...", cualquier
3 cosa, "... ¿En serio?")
4

Muestra un caso muy simple de uso de la función input() .


NOTA

El programa solicita al usuario que ingrese algunos datos desde la consola (muy probablemente usando un
teclado, aunque también es posible ingresar datos usando voz o imagen) la función input() se
invoca sin argumentos (esta es la forma más sencilla de usar el función); la función cambiará la consola al modo
de entrada; verá un cursor parpadeante y podrá ingresar algunas pulsaciones de teclas, finalizando
presionando la tecla Enter ; todos los datos ingresados se enviarán a su programa a través del resultado de la
función; nota: es necesario asignar el resultado a una variable; esto es crucial: omitir este paso
provocará la pérdida de los datos ingresados; luego usamos la función print() para generar los datos que
obtenemos, con algunas observaciones

adicionales.

Ejecute el código y deje que la función le muestre lo que puede hacer por usted.

1 print("Dime cualquier cosa...") cualquier cosa =


2 input() print("Hmm...", cualquier
3 cosa, "... ¿En serio?")
4
Machine Translated by Google

2.6.2 La función input() con un argumento La función input() puede hacer


algo más: puede avisar al usuario sin ninguna ayuda de print().

Hemos modificado un poco nuestro ejemplo, mira el código:

1 cualquier cosa = input("Dime cualquier cosa...")


2 print("Hmm...", cualquier cosa, "...¿En serio?")
3

Nota:

la función input() se invoca con un argumento: es una cadena que contiene un mensaje; el mensaje
se mostrará en la consola antes de que el usuario tenga la oportunidad de ingresar algo; input()
entonces hará
su trabajo.

Esta variante de la invocación input() simplifica el código y lo hace más claro.


Machine Translated by Google

2.6.3 El resultado de la función input() Ya lo hemos dicho, pero hay


que decirlo sin ambigüedades una vez más: el resultado de la función input() es una cadena.

Una cadena que contiene todos los caracteres que el usuario ingresa desde el teclado. No es un número entero ni un
flotante.

Esto significa que no debes usarlo como argumento de ninguna operación aritmética, por ejemplo, no puedes
usar estos datos para elevarlos al cuadrado, dividirlos por nada o dividir nada por ellos.

1 cualquier cosa = input("Ingrese un número: ") algo =


2 cualquier cosa ** 2.0 print(cualquier
3 cosa, "a la potencia de 2 es", algo)
4
Machine Translated by Google

2.6.4 La función input() – operaciones prohibidas Mire el siguiente código. Ejecútelo, ingrese

cualquier número y presione Enter.

1 # Probando un mensaje TypeError. cualquier cosa


2 = input("Ingrese un número: ") algo = cualquier cosa ** 2.0
3 print(cualquier cosa, "a la potencia de 2 es",
4 algo)
5

¿Lo que sucede? Python debería haberle dado el siguiente resultado:

Rastreo (última llamada más reciente): Archivo ".main.py",


línea 4, en <módulo> algo = cualquier cosa ** 2.0

TypeError: tipos de operandos no admitidos para ** o pow(): 'str' y 'float'

La última línea de la oración explica todo: intentaste aplicar el operador ** a 'str' (cadena) acompañada de
'float'.
Esto está prohibido.
Esto debería ser obvio: ¿puedes predecir el valor de "ser o no ser" elevado a la potencia de 2?

No podemos. Python tampoco puede.


¿Hemos caído en un punto muerto? ¿Existe una solución a este problema? Por supuesto que sí.
Machine Translated by Google

2.6.5 Fundición de tipos (conversiones de tipos)


Python ofrece dos funciones simples para especificar un tipo de datos y resolver este problema; aquí
están: int() y float().
Sus nombres son autocomentativos:

la función int() toma un argumento (por ejemplo, una cadena: int(string)) e intenta convertirlo
en un número entero; si falla, todo el programa también fallará (existe una solución para esta
situación, pero se la mostraremos un poco más adelante);
la función float() toma un argumento (por ejemplo, una cadena: float(string)) e intenta convertirlo
en un float (el resto es igual).

Esto es muy simple y muy efectivo. Además, puede invocar cualquiera de las funciones pasándoles
los resultados de input() directamente. No es necesario utilizar ninguna variable como
almacenamiento intermedio.
Hemos implementado la idea: eche un vistazo al código.
¿Te imaginas cómo la cadena ingresada por el usuario fluye desde input() hasta print()?
Intente ejecutar el código modificado. No olvide ingresar un número válido.
Marque algunos valores diferentes, pequeños y grandes, negativos y positivos. Zero también es una buena entrada.

1 cualquier cosa = float(input("Ingrese un número: ")) algo =


2 cualquier cosa ** 2.0 print(cualquier
3 cosa, "a la potencia de 2 es", algo)
4
Machine Translated by Google

2.6.6 Más sobre input() y conversión de tipos Tener un equipo formado por el trío

input() – int() – float() abre muchas posibilidades nuevas.

Con el tiempo podrás escribir programas completos, aceptar datos en forma de números, procesarlos y mostrar los
resultados.
Por supuesto, estos programas serán muy primitivos y poco utilizables, ya que no pueden tomar decisiones y, en
consecuencia, no pueden reaccionar de manera diferente ante diferentes situaciones.
Sin embargo, esto no es realmente un problema; Pronto te mostraremos cómo superarlo.
Nuestro siguiente ejemplo se refiere al programa anterior para encontrar la longitud de una hipotenusa.
Ejecutémoslo y hagámoslo capaz de leer las longitudes de las patas desde la consola.
Mira el código: así es como se ve ahora:

1 leg_a = float(input("Ingrese la longitud del primer tramo: ")) leg_b =


2 float(input("Ingrese la longitud del segundo tramo: ")) hipo = (leg_a**2 + leg_b**2) **
3 .5 print(" La longitud de la hipotenusa es", hipo)
4
5

El programa pregunta al usuario la longitud de ambos catetos, evalúa la hipotenusa e imprime el resultado. Ejecútelo
e intente ingresar algunos valores negativos.
Desafortunadamente, el programa no reacciona ante este error evidente. Ignoremos esta debilidad por ahora.
Volveremos a ello pronto.

Tenga en cuenta que en el programa que puede ver, la variable hipo se usa solo para un propósito: guardar el valor
calculado entre la ejecución de la línea de código contigua.
Como la función print() acepta una expresión como argumento, puede eliminar la variable del código.

Así como esto:

1 leg_a = float(input("Ingrese la longitud del primer tramo: ")) leg_b =


2 float(input("Ingrese la longitud del segundo tramo: ")) print("La longitud de la
3 hipotenusa es", (leg_a**2 + leg_b**2) * * .5)
4
Machine Translated by Google

2.6.7 Operadores de cadena Es hora de

volver a estos dos operadores aritméticos: + y *.


Queremos mostrarte que tienen una segunda función. Son capaces de hacer algo más que simplemente sumar y
multiplicar.
Los hemos visto en acción donde sus argumentos son números (flotantes o enteros, no importa).

Ahora vamos a mostrarles que también pueden manejar cadenas, aunque de una manera muy específica.
El signo + (más), cuando se aplica a dos cadenas, se convierte en un operador de concatenación:

1 cuerda + cuerda
2

Simplemente concatena (pega) dos cadenas en una. Por supuesto, al igual que su hermano aritmético, se
puede usar más de una vez en una expresión y, en tal contexto, se comporta de acuerdo con la vinculación
del lado izquierdo.
A diferencia de su hermano aritmético, el operador de concatenación no es conmutativo, es decir, "ab" + "ba" no es
lo mismo que "ba" + "ab".

No lo olvide: si desea que el signo + sea un concatenador, no un sumador, debe asegurarse de que ambos
argumentos sean cadenas.
No puedes mezclar tipos aquí.
Este sencillo programa muestra el signo + en su segundo uso:

1 fnam = input("¿Puedo darme su nombre, por favor? ") lnam = input("¿Puedo darme su
2 apellido, por favor? ") print("Gracias.") print("\nSu nombre es "
3
""
4 + fnam + + nombre + ".")
5

Nota: usar + para concatenar cadenas le permite construir la salida de una manera más precisa que con una función
print() pura , incluso si está enriquecida con los argumentos de palabras clave end= y sep= .
Ejecute el código y vea si el resultado coincide con sus predicciones.

Replicación
El signo * (asterisco), cuando se aplica a una cadena y un número (o a un número y una cadena, ya que
permanece conmutativo en esta posición) se convierte en un operador de replicación:

1 cadena * número número


2 * cadena
3

Replica la cadena la misma cantidad de veces especificada por el número.


Por ejemplo:

"James" * 3 da "JamesJamesJames"
Machine Translated by Google

3 * "an" da "ananan" 5 * "2" (o


"2" * 5) da "22222" (¡no 10!)

RECORDAR
Un número menor o igual a cero produce una cadena vacía.
Este sencillo programa "dibuja" un rectángulo, haciendo uso de un antiguo operador (+) en una nueva función:

1 imprimir("+" + 10 * "­" + "+") imprimir(("|"


2 + imprimir("+" + ""
* 10 + "|\n") * 5, fin="")
3 10 * "­" + "+")
4

Observe la forma en que utilizamos los paréntesis en la segunda línea del código.
¡Intenta practicar para crear otras formas o tu propia obra de arte!
Machine Translated by Google

2.6.8 Conversiones de tipos una vez más


cadena()

Ya sabes cómo utilizar las funciones int() y float() para convertir una cadena en un número.

Este tipo de conversión no es una vía de sentido único. También puedes convertir un número en una cadena, lo cual es
mucho más fácil y seguro; este tipo de operación siempre es posible.
Una función capaz de hacer eso se llama str():

1 cadena (número)
2

Para ser honesto, puede hacer mucho más que simplemente transformar números en cadenas, pero eso puede esperar para
más adelante.

El triángulo rectángulo otra vez

Aquí está nuevamente nuestro programa "triángulo rectángulo":

1 leg_a = float(input("Ingrese la longitud del primer tramo: ")) leg_b =


2 float(input("Ingrese la longitud del segundo tramo: ")) print("La longitud de la
3 hipotenusa es " + str((pierna_a**2 + pierna_b**2) ** .5))
4

Lo hemos modificado un poco para mostrarle cómo funciona la función str() . Gracias a esto podemos pasar
todo el resultado a la función print() como una sola cadena, olvidándonos del
comas.

Has logrado grandes avances en tu camino hacia la programación en Python.


Ya conoces los tipos de datos básicos y un conjunto de operadores fundamentales. Sabe cómo organizar la salida y
cómo obtener datos del usuario. Estas son bases muy sólidas para el Módulo 3. Pero antes de pasar al siguiente
módulo, hagamos algunas prácticas de laboratorio y recapitulemos todo lo que ha aprendido en esta sección.
Machine Translated by Google

LABORATORIO 9 Entrada y salida simples


Tu tarea es completar el código para evaluar los resultados de cuatro operaciones aritméticas básicas.

Los resultados deben imprimirse en la consola.


Es posible que no puedas proteger el código de un usuario que quiera dividirlo por cero. Está bien, no te
preocupes por eso por ahora.
Pruebe su código: ¿produce los resultados que espera?
No le mostraremos ningún dato de prueba; eso sería demasiado simple.

Código

1 # ingresa un valor flotante para la variable a aquí # ingresa un


2 valor flotante para la variable b aquí # genera el resultado de la
3 suma aquí # genera el resultado de la resta aquí # genera
4 el resultado de la multiplicación aquí # genera el resultado de
5 la división aquí print("\ ¡Eso es todo, amigos!")
6
7
8

Pista

Solución de muestra
Machine Translated by Google

LABORATORIO 10 Operadores y expresiones


Su tarea es completar el código para evaluar la siguiente expresión:

El resultado debe asignarse a y. Tenga cuidado: observe a los operadores y tenga en cuenta sus
prioridades. No dude en utilizar tantos paréntesis como necesite.
Puedes usar variables adicionales para acortar la expresión (pero no es necesario). Pruebe su código
cuidadosamente.
Entrada de muestra:

Rendimiento esperado:

y = 0,6000000000000001
Entrada de muestra:

10

Rendimiento esperado:

y = 0,09901951266867294
Entrada de muestra:

100

Rendimiento esperado:

y = 0,009999000199950014
Entrada de muestra:

­5

Rendimiento esperado:

y = ­0,19258202567760344
Código
Machine Translated by Google

1 x = float(entrada("Ingrese el valor para x: "))


2 # Escribe tu código aquí.
3 imprimir("y =", y)
4

Solución de muestra
Machine Translated by Google

LABORATORIO 11 Operadores y expresiones 2 Tu tarea es


preparar un código simple capaz de evaluar el tiempo de finalización de un período de tiempo, dado
como un número de minutos (puede ser arbitrariamente grande). La hora de inicio se da como un par de
horas (0..23) y minutos (0..59). El resultado debe imprimirse en la consola.
Por ejemplo, si un evento comienza a las 12:17 y dura 59 minutos, finalizará a las 13:16.
No se preocupe por las imperfecciones en su código; está bien si acepta una hora no válida; lo más
importante es que el código produzca resultados válidos para datos de entrada válidos.
Pruebe su código cuidadosamente. Sugerencia: usar el operador % puede ser la clave del éxito.
Entrada de muestra:

12

17

59

Rendimiento esperado:

13:16

Entrada de muestra:

23

58

642

Rendimiento esperado:

10:40

Entrada de muestra:

2939

Rendimiento esperado:

1:0

Código

1 hora = int(input(" Hora de inicio (horas): ")) mins = int(input(" Hora


2 de inicio (minutos): ")) dura = int(input(" Duración del evento (minutos):
3 "))
4 # Escribe tu código aquí.
5

Pista
Solución de muestra
Machine Translated by Google

2.6 RESUMEN DE LA SECCIÓN


La función print() envía datos a la consola, mientras que la función input() obtiene datos de la consola.

La función input() viene con un parámetro opcional: la cadena de solicitud. Le permite escribir un mensaje antes de la
entrada del usuario, por ejemplo:

1 nombre = input("Ingrese su nombre: ") print("Hola, " +


2 nombre + ". ¡Encantado de conocerte!")
3

Cuando se llama a la función input() , el flujo del programa se detiene, el símbolo de aviso sigue parpadeando (solicita
al usuario que realice una acción cuando la consola cambia al modo de entrada) hasta que el usuario ingresa una
entrada y/o presiona Enter . llave.
NOTA

Puede probar la funcionalidad de la función input() en todo su alcance localmente en su máquina.


Por razones de optimización de recursos, hemos limitado el tiempo máximo de ejecución del programa en Edube a
unos pocos segundos. Vaya a Sandbox, copie y pegue el fragmento anterior, ejecute el programa y no haga
nada; solo espere unos segundos para ver qué sucede. Su programa debería detenerse automáticamente después
de un breve momento. Ahora abre IDLE y ejecuta el mismo programa allí. ¿Puedes ver la diferencia?

Consejo: esta característica de la función input() se puede utilizar para solicitar al usuario que finalice un programa.
Mira el siguiente código:

1 nombre = input("Ingrese su nombre: ") print("Hola, " + nombre +


2 ". ¡Encantado de conocerte!") print("\nPresione Enter para finalizar el programa.") 3 input() 4
print(" EL FIN.")

5
6

El resultado de la función input() es una cadena. Puede agregar cadenas entre sí utilizando el operador de
concatenación (+) . Mira este código:

1 num_1 = input("Ingrese el primer número: ") # Ingrese 12 num_2 = input("Ingrese el


2 segundo número: ") # Ingrese 21 print(num_1 + num_2) # el programa devuelve 1221
3
4

También puede multiplicar (* replicación) cadenas, por ejemplo:

1 my_input = input("Ingrese algo: ") # Ejemplo de entrada: hola print(my_input * 3) # Salida esperada:
2 holaholahola
3
Machine Translated by Google

2.6 EXAMEN DE SECCIÓN

Pregunta 1: ¿Cuál es el resultado del siguiente fragmento?

1 x = int(input("Ingrese un número: ")) # El usuario ingresa 2 print(x * "5")


2
3

Pregunta 2: ¿Cuál es el resultado esperado del siguiente fragmento?

1 x = input("Ingrese un número: ") # El usuario ingresa 2 print(type(x))


2
3

Controlar
Machine Translated by Google

MÓDULO 3: VALORES BOOLEANOS CONDICIONALES


EJECUCIÓN, BUCLES, LISTAS Y LISTA
PROCESAMIENTO, LÓGICO Y BITWISE
OPERACIONES
Machine Translated by Google

SECCIÓN 3.1 – TOMAR DECISIONES EN PYTHON


¡Bienvenidos al Módulo tres! En la primera sección, aprenderemos sobre declaraciones condicionales
y cómo usarlas para tomar decisiones en Python.
Machine Translated by Google

3.1.1 Preguntas y respuestas


Un programador escribe un programa y el programa hace preguntas.
Una computadora ejecuta el programa y proporciona las respuestas. El programa debe poder reaccionar según
las respuestas recibidas.
Afortunadamente, las computadoras sólo conocen dos tipos de respuestas:

sí, es cierto; no,


esto es falso.

Nunca obtendrás una respuesta como Déjame pensar..., No lo sé, o Probablemente sí, pero no lo sé con certeza.

Para hacer preguntas, Python utiliza un conjunto de operadores muy especiales. Repasémoslos uno tras otro,
ilustrando sus efectos con algunos ejemplos sencillos.
Machine Translated by Google

3.1.2 Comparación: operador de igualdad Pregunta: ¿dos


valores son iguales?
Para hacer esta pregunta, utiliza el operador == (igual igual).
No olvide esta importante distinción:

= es un operador de asignación, por ejemplo, a = b asigna a a el valor de b;


== ¿La pregunta es si estos valores son iguales? entonces a == b compara a y b.

Es un operador binario con enlace por el lado izquierdo. Necesita dos argumentos y comprueba si
son iguales.
Machine Translated by Google

3.1.3 Ejercicios
Ahora hagamos algunas preguntas. Intenta adivinar las respuestas.
Pregunta 1: ¿Cuál es el resultado de la siguiente comparación?
2 == 2

Pregunta 2: ¿Cuál es el resultado de la siguiente comparación?


2 == 2.

Pregunta 3: ¿Cuál es el resultado de la siguiente comparación?


1 == 2

Controlar
Machine Translated by Google

3.1.4 Operadores
Igualdad: el operador igual a (==)
El operador == (igual a) compara los valores de dos operandos. Si son iguales, el resultado de la comparación es
Verdadero. Si no son iguales, el resultado de la comparación es Falso.
Mire la igualdad siguiente a la comparación: ¿cuál es el resultado de esta operación?
var == 0

Tenga en cuenta que no podemos encontrar la respuesta si no sabemos qué valor está almacenado actualmente
en la variable var.

Si la variable se ha cambiado muchas veces durante la ejecución de su programa, o su valor inicial se ingresa desde
la consola, la respuesta a esta pregunta solo la puede dar Python y solo en tiempo de ejecución.

Ahora imaginemos a un programador que sufre de insomnio y tiene que contar ovejas blancas y negras por
separado siempre que haya exactamente el doble de ovejas negras que blancas.
La pregunta será la siguiente:

oveja_negra == 2 * oveja_blanca

Debido a la baja prioridad del operador == , la pregunta se tratará como equivalente a esta
uno:

oveja_negra == (2 * oveja_blanca)

Entonces, practiquemos ahora su comprensión del operador == : ¿puede adivinar el resultado del código?

1 var = 0 # Asignando 0 a var print(var == 0) var =


2 1 # Asignando 1 a var
3 print(var == 0)
4
5

Ejecute el código y compruebe si tiene razón.

Desigualdad: el operador no igual a (!=)


El operador != (no igual a) también compara los valores de dos operandos. Aquí está la diferencia: si son
iguales, el resultado de la comparación es Falso. Si no son iguales, el resultado de la comparación es Verdadero.

Ahora eche un vistazo a la siguiente comparación de desigualdades: ¿puede adivinar el resultado de


esta operación?

var = 0 # Asignando 0 a var

imprimir(var != 0)

var = 1 # Asignando 1 a var

imprimir(var != 0)

Ejecute el código y compruebe si tiene razón.


Machine Translated by Google

Operadores de comparación: mayor que


También puedes hacer una pregunta de comparación usando el operador > (mayor que).
Si quieres saber si hay más ovejas negras que blancas, puedes escribirlo de la siguiente manera:
oveja_negra > oveja_blanca # Mayor que

True lo confirma; Falso lo niega.

Operadores de comparación: mayor o igual que El operador


mayor que tiene otra variante especial, no estricta , pero se denota de manera diferente que en la
notación aritmética clásica: >= (mayor o igual que).
Hay dos signos posteriores, no uno.
Ambos operadores (estricto y no estricto), así como los otros dos que se analizan en la siguiente
sección, son operadores binarios con enlace del lado izquierdo y su prioridad es mayor que la mostrada
por == y !=.
Si queremos saber si tenemos que llevar o no gorro de abrigo, nos hacemos la siguiente
pregunta:
centigrade_outside >= 0.0. # Mayor qué o igual a

Operadores de comparación: menor que/menor que o igual que Como


probablemente ya habrás adivinado, los operadores utilizados en este caso son: el operador <
(menor que) y su hermano no estricto: <= (menor o igual que) .
Mire este sencillo ejemplo:
current_velocity_mph < 85 # Menos de

current_velocity_mph <= 85 # Menor o igual a

Vamos a comprobar si existe riesgo de ser multado por la policía de carreteras (la primera pregunta
es estricta, la segunda no).
Machine Translated by Google

3.1.5 Hacer uso de las respuestas


¿Qué puedes hacer con la respuesta (es decir, el resultado de una operación de comparación) que obtienes del
¿computadora?

Hay al menos dos posibilidades: primero, puedes memorizarlo (almacenarlo en una variable) y hacer
utilizarlo más adelante. ¿Cómo haces eso? Bueno, usas una variable arbitraria como esta:
respuesta = número_de_leones >= número_de_leonas

El contenido de la variable le dirá la respuesta a la pregunta formulada.


La segunda posibilidad es más conveniente y mucho más común: puedes usar la respuesta que
llegar a tomar una decisión sobre el futuro del programa.
Necesita una instrucción especial para este propósito y la discutiremos muy pronto.
Ahora necesitamos actualizar nuestra tabla de prioridades e incluir en ella todos los operadores nuevos. Ahora parece como
sigue:

OPERADOR PRIORITARIO
1 +, ­ unario
2 **

3 *, /, //, %
4 +, ­ binario
5 <, <=, >, >=
6 ==, !=
Machine Translated by Google

LABORATORIO 12 Variables Preguntas y respuestas


Usando uno de los operadores de comparación en Python, escriba un programa simple de dos líneas que
tome el parámetro n como entrada, que es un número entero, e imprima False si n es menor que
100 y True si n es mayor o igual a 100. .
No crees ningún bloque if (hablaremos de ellos muy pronto). Pruebe su código utilizando los datos que le
proporcionamos.

Entrada de muestra:
55

Rendimiento esperado:
FALSO

Entrada de muestra:
99

Rendimiento esperado:
FALSO

Entrada de muestra:
100

Rendimiento esperado:
Verdadero

Entrada de muestra:
101

Rendimiento esperado:
Verdadero

Entrada de muestra:
­5

Rendimiento esperado:
FALSO

Entrada de muestra:
+123

Rendimiento esperado:
Verdadero

Solución de muestra
Machine Translated by Google

3.1.6 Condiciones y ejecución condicional


Ya sabes cómo hacer preguntas sobre Python, pero aún no sabes cómo hacer un uso razonable de las
respuestas. Tienes que tener un mecanismo que te permita hacer algo si se cumple una condición y no hacerlo si no
se cumple.

Es como en la vida real: haces ciertas cosas o no cuando se cumple o no una condición específica, por ejemplo, sales a
caminar si hace buen tiempo, o te quedas en casa si está húmedo y frío.

Para tomar tales decisiones, Python ofrece una instrucción especial. Por su naturaleza y su aplicación, se le
llama instrucción condicional (o declaración condicional).

Existen varias variantes del mismo. Empezaremos por lo más sencillo, aumentando la dificultad poco a poco.

La primera forma de declaración condicional está escrita de manera muy informal pero en sentido figurado:

si es verdadero_o_no:

hacer_esto_si_verdadero

Esta declaración condicional consta de los siguientes elementos, estrictamente necesarios, en este y en este orden únicamente:

la palabra clave if ;
uno o más espacios en blanco;

una expresión (una pregunta o una respuesta) cuyo valor será interpretado únicamente en términos de Verdadero
(cuando su valor es distinto de cero) y Falso (cuando es igual a cero); dos puntos seguidos de una

nueva línea; una instrucción con sangría

o un conjunto de instrucciones (al menos una instrucción es absolutamente necesaria); la sangría se puede
lograr de dos maneras: insertando un número determinado de espacios (la recomendación es usar cuatro
espacios de sangría) o usando el carácter de tabulación ; nota: si hay más de una instrucción en la parte
sangrada, la sangría debe ser la misma en todas las líneas; aunque puede verse igual si usas tabulaciones
mezcladas con espacios, es importante hacer que todas las sangrías sean exactamente iguales : Python 3 no
permite mezclar espacios y tabulaciones para la sangría.

¿Cómo funciona esa afirmación?

Si la expresión true_or_not representa la verdad (es decir, su valor no es igual a cero), se ejecutarán las
declaraciones sangradas; si la expresión true_or_not no representa

la verdad (es decir, su valor es igual a cero), las declaraciones sangradas se omitirán (ignorarán) y la siguiente
instrucción ejecutada será la que esté después del nivel de sangría original.

En la vida real, a menudo expresamos un deseo:

si hace buen tiempo, saldremos a caminar y luego


almorzaremos. Como

puedes ver, almorzar no es una actividad condicional y no depende del clima. .

Sabiendo qué condiciones influyen en nuestro comportamiento y asumiendo que tenemos las funciones
sin parámetros go_for_a_walk() y have_lunch(), podemos escribir el siguiente fragmento:
Machine Translated by Google

1 si el_tiempo_es_bueno:
2 ir_para_un_caminar()
3 almorzar()
4

Ejecución condicional: la declaración if


Si cierto desarrollador de Python insomne se queda dormido cuando cuenta 120 ovejas, y el procedimiento para inducir
el sueño puede implementarse como una función especial llamada sleep_and_dream(),
todo el código toma la siguiente forma:

1 if Sheep_counter >= 120: # Evaluar una expresión de prueba


2 sleep_and_dream() # Ejecutar si la expresión de prueba es Verdadera
3

Puede leerlo como: si Sheep_counter es mayor o igual a 120, entonces duerma y sueñe (es decir, ejecute la función
sleep_and_dream ).
Hemos dicho que las declaraciones ejecutadas condicionalmente deben tener sangría. Esto crea una estructura
muy legible, que demuestra claramente todas las rutas de ejecución posibles en el código.
Eche un vistazo al siguiente código:

1 si contador_oveja >= 120:


2 hacer_una_cama()
3 tomar_una_ducha()
4 dormir_y_sueño()
5 alimentar_a_los_perros pastores()
6

Como puede ver, hacer la cama, ducharse, quedarse dormido y soñar se ejecutan de forma condicional :
cuando Sheep_counter alcanza el límite deseado.
Sin embargo, alimentar a los perros pastores siempre se realiza (es decir, la función feed_the_sheepdogs() no tiene
sangría y no pertenece al bloque if , lo que significa que siempre se ejecuta).
Ahora vamos a discutir otra variante de la declaración condicional, que también le permite realizar una acción adicional
cuando no se cumple la condición.

Ejecución condicional: la declaración if­else


Empezamos con una frase sencilla que decía: Si hace buen tiempo saldremos a caminar.
Nota: no se sabe qué pasará si hace mal tiempo. Sólo sabemos que no saldremos al aire libre, pero no se sabe qué
podríamos hacer en su lugar. Es posible que también queramos planificar algo en caso de mal tiempo.

Podemos decir, por ejemplo: Si hace buen tiempo saldremos a caminar, en caso contrario iremos al teatro.

Ahora sabemos qué haremos si se cumplen las condiciones y sabemos qué haremos si no todo sale como
queremos. En otras palabras, tenemos un "Plan B".
Python nos permite expresar tales planes alternativos. Esto se hace con una segunda forma, un poco más compleja,
de declaración condicional, la declaración if­else :
Machine Translated by Google

1 si condición_verdadera_o_falsa:
2 perform_if_condition_true más:
3
4 realizar_si_condición_false
5

Por lo tanto, hay una nueva palabra: else – esta es una palabra clave.
La parte del código que comienza con else dice qué hacer si no se cumple la condición especificada para
if (tenga en cuenta los dos puntos después de la palabra).
La ejecución if­else es la siguiente:

si la condición se evalúa como Verdadera (su valor no es igual a cero), se ejecuta


la declaración perform_if_condition_true y la declaración condicional llega a su fin; si la condición se
evalúa como Falsa (es igual a

cero), se ejecuta la declaración perform_if_condition_false y la


declaración condicional llega a su fin.

La declaración if­else: ejecución más condicional

Al utilizar esta forma de declaración condicional, podemos describir nuestros planes de la siguiente manera:

1 si el_tiempo_es_bueno:
2 ir_para_un_paseo() más:
3
4 ir_a_un_teatro() almorzar()
5
6

Si hace buen tiempo, saldremos a caminar. De lo contrario, iremos al teatro. No importa si hace buen o mal tiempo,
después almorzaremos (después del paseo o después de ir al teatro).

Todo lo que hemos dicho sobre la sangría funciona de la misma manera dentro de la rama else :

1 si el_tiempo_es_bueno:
2 ir_para_un_paseo()
3 divertirse() más:
4
5 ir_a_un_teatro()
6 disfrutar_la_película()
7 almorzar()
8

Declaraciones anidadas if­else

Ahora analicemos dos casos especiales del enunciado condicional.


Primero, considere el caso en el que la instrucción colocada después del if es otra if.
Machine Translated by Google

Lee lo que tenemos planeado para este domingo. Si hace buen tiempo, saldremos a caminar. Si encontramos un buen
restaurante, almorzaremos allí. De lo contrario, comeremos un sándwich. Si hace mal tiempo, iremos al teatro. Si
no hay entradas, iremos de compras al centro comercial más cercano.
Escribamos lo mismo en Python. Considere cuidadosamente el código aquí:

1 si el_tiempo_es_bueno:
2 si_un_restaurante_bueno_se_encontra:
3 almorzar() más:
4
5 comer un sandwich()
6 demás:
7 si las entradas_están_disponibles:
8 ir_al_teatro() más:
9
10 ir de compras()
11

Aquí hay dos puntos importantes:

este uso de la declaración if se conoce como anidamiento; recuerde que todo lo demás se refiere al if que se
encuentra en el mismo nivel de sangría; necesita saber esto para determinar cómo se emparejan los if y los
elses ; Considere cómo la sangría mejora
la legibilidad y hace que el código sea más fácil de entender y rastrear.

La declaración elif
El segundo caso especial introduce otra nueva palabra clave de Python: elif. Como probablemente sospechas, es
una forma más corta de else if. elif se utiliza
para comprobar más de una condición y para detenerse cuando se encuentra la primera afirmación que sea verdadera.

Nuestro siguiente ejemplo se parece al anidamiento, pero las similitudes son muy leves. Nuevamente cambiamos
nuestros planes y los expresamos de la siguiente manera: Si hace buen tiempo, saldremos a caminar, si no, si
conseguimos entradas, iremos al teatro, si no, si hay mesas libres en el restaurante, iremos a almorzar; Si todo lo
demás falla, nos quedaremos en casa y jugaremos al ajedrez.
¿Has notado cuántas veces hemos usado la palabra de otra manera? Esta es la etapa donde la palabra clave elif
juega su papel.
Escribamos el mismo escenario usando Python:
Machine Translated by Google

1 si el_tiempo_es_bueno:
2 ve_para_un_camino()
3 elif entradas_están_disponibles: ir_al_teatro()
4 elif mesa_está_disponible:
5 ir_para_almorzar() más:
6
7
8 jugar_ajedrez_en_casa()
9

La forma de ensamblar declaraciones if­elif­else posteriores a veces se denomina cascada.


Observe nuevamente cómo la sangría mejora la legibilidad del código.
En este caso hay que prestar alguna atención adicional:

no debes usar else sin un if anterior; else es siempre la última


rama de la cascada, independientemente de si has usado elif o no; else es una parte opcional de la
cascada y puede

omitirse; si hay una rama else en la cascada, solo se ejecuta una de todas las
ramas; si no hay otra rama, es posible que no se ejecute ninguna de las ramas disponibles.

Esto puede parecer un poco desconcertante, pero es de esperar que algunos ejemplos sencillos ayuden a arrojar más luz.
Machine Translated by Google

3.1.7 Análisis de ejemplos de código Ahora le


mostraremos algunos programas simples pero completos. No los explicaremos en detalle
porque consideramos que los comentarios (y los nombres de las variables) dentro del código
son guías suficientes.
Todos los programas resuelven el mismo problema: encuentran el mayor de varios números y lo imprimen.

Ejemplo 1:
Comenzaremos con el caso más simple: cómo identificar el mayor de dos números:

1 # Leer dos números número1 =


2 int(input("Ingrese el primer número: ")) número2 = int(input("Ingrese el segundo número:
3 "))
4 # Elija el número mayor si número1 > número2:
5 número_mayor = número1 en caso
6 contrario:
7
8 número_mayor = número2 9
# Imprime el resultado print("El
número mayor es:", número_mayor) 10
11

Este fragmento debe ser claro: lee dos valores enteros, los compara y encuentra cuál es el mayor.

Ejemplo 2: Ahora

le mostraremos un hecho intrigante. Python tiene una característica interesante: mira el siguiente código:

1 # Leer dos números número1 =


2 int(input("Ingrese el primer número: ")) número2 = int(input("Ingrese el segundo número:
3 "))
4 # Elija el número mayor si número1 > número2:
5 número_mayor = número1 más: número_mayor = número2
6
7 # Imprime el resultado print("El
8 número mayor es:", número_mayor)
9

Nota: si alguna de las ramas if­elif­else contiene solo una instrucción, puede codificarla en una forma más completa (no necesita
hacer una línea con sangría después de la palabra clave, simplemente continúe la línea después de los dos puntos) .

Este estilo, sin embargo, puede ser engañoso y no lo usaremos en nuestros programas futuros, pero definitivamente vale la
pena saberlo si desea leer y comprender los programas de otra persona.
No hay otras diferencias en el código.

Ejemplo 3:
Machine Translated by Google

Es hora de complicar el código: encontremos el mayor de tres números. ¿Agrandará el código? Un poco.

Suponemos que el primer valor es el mayor. Luego verificamos esta hipótesis con los dos valores restantes.

Mira el siguiente código:

1 # Leer tres números número1 =


2 int(input("Ingrese el primer número: ")) número2 = int(input("Ingrese el segundo
3 número: ")) número3 = int(input("Ingrese el tercer número: "))
4
5 # Suponemos temporalmente que el primer número # es el más grande.
6
7 # Verificaremos esto pronto. número_más grande =
8 número1 # Comprobamos si el segundo
9 número es mayor que el número_más grande actual # y actualizamos el número_más grande si es necesario. 10
if número2 > número_mayor:
11 número_mayor = número2 12 # Comprobamos si el tercer número es mayor
que el número_mayor actual 14 # y actualizamos el
número_mayor si es necesario. if número3 > número_mayor:
15
13 número_mayor = número3 16 # Imprime el resultado 17 print("El número más grande es:", número_mayor)

18
19

Este método es significativamente más sencillo que intentar encontrar el número más grande de una vez,
comparando todos los pares de números posibles (es decir, primero con segundo, segundo con tercero, tercero
con primero). Intente reconstruir el código usted mismo.
Machine Translated by Google

3.1.8 Pseudocódigo e introducción a los bucles Ahora debería poder escribir un

programa que encuentre el mayor de cuatro, cinco, seis o incluso diez números.

Ya conoces el esquema, por lo que ampliar el tamaño del problema no será especialmente
complejo.
Pero, ¿qué sucede si le pedimos que escriba un programa que encuentre el mayor de
doscientos números? ¿Te imaginas el código?
Necesitará doscientas variables. Si doscientas variables no son suficientes, intente imaginarse
buscando el mayor entre un millón de números.
Imagine un código que contiene 199 declaraciones condicionales y doscientas invocaciones de
la función input() . Por suerte, no necesitas lidiar con eso. Hay un enfoque más simple.

Ignoraremos los requisitos de la sintaxis de Python por ahora e intentaremos analizar el problema sin
pensar en la programación real. En otras palabras, intentaremos escribir el algoritmo y, cuando
estemos satisfechos con él, lo implementaremos.
En este caso, usaremos un tipo de notación que no es un lenguaje de programación real (no puede
compilarse ni ejecutarse), pero sí formalizada, concisa y legible. Se llama pseudocódigo.

Veamos nuestro pseudocódigo:


Machine Translated by Google

1 número_más grande = ­999999999 número =


2 int(entrada()) si número == ­1:
3 imprimir(número_más
4 grande) salir() si número >
5
6 número_más grande: número_más grande =
7 número
8 # Ir a la línea 02
9

¿Qué está pasando en él?


En primer lugar, podemos simplificar el programa si, al principio del código, asignamos a la variable
número_más grande un valor que será menor que cualquiera de los números ingresados. Usaremos
­999999999 para ese propósito.
En segundo lugar, suponemos que nuestro algoritmo no sabrá de antemano cuántos números se entregarán al
programa. Esperamos que el usuario ingrese tantos números como quiera; el algoritmo funcionará bien con cien y mil
números. ¿Como hacemos eso?

Hacemos un trato con el usuario: cuando se ingresa el valor ­1 , será señal de que no hay más datos y el programa
debería finalizar su trabajo.
De lo contrario, si el valor ingresado no es igual a ­1, el programa leerá otro número, y así
en.

El truco se basa en la suposición de que cualquier parte del código se puede ejecutar más de una vez (precisamente,
tantas veces como sea necesario).
Realizar una determinada parte del código más de una vez se denomina bucle. El significado de este término
probablemente le resulte obvio.
Las líneas 02 a 08 forman un bucle. Los revisaremos tantas veces como sea necesario para revisar todos los
valores ingresados.

¿Puedes usar una estructura similar en un programa escrito en Python? Sí tu puedes.


EXTRA

Python a menudo viene con muchas funciones integradas que harán el trabajo por usted. Por ejemplo, para encontrar
el número más grande de todos, puede usar una función integrada de Python llamada max(). Puedes usarlo con múltiples
argumentos. Analiza el siguiente código:

1 # Leer tres números. número1 =


2 int(input("Ingrese el primer número: ")) número2 = int(input("Ingrese el segundo número: ")) 3
número3 = int(input("Ingrese el tercer número: ")) 4 # Compruebe cuál uno de los números es el
mayor # y lo pasa a la variable número_mayor. número_mayor = máximo(número1, número2,
5
número3)
6
7
8 # Imprime el resultado. print("El
9 número más grande es:", número_mayor) 10
Machine Translated by Google

De la misma manera, puedes usar la función min() para devolver el número más bajo. Puede reconstruir
este código y experimentar con él en Sandbox.
Pronto hablaremos de estas (y muchas otras) funciones. Por el momento, nos centraremos en la ejecución
condicional y los bucles para permitirle ganar más confianza en la programación y enseñarle las habilidades
que le permitirán comprender y aplicar completamente los dos conceptos en su código.
Entonces, por ahora, no tomaremos ningún atajo.
Machine Translated by Google

LABORATORIO 13 Operadores de comparación y ejecución condicional Spathiphyllum,


Más comúnmente conocida como lirio de la paz o planta de vela blanca, es una de las
plantas de interior más populares que filtra las toxinas dañinas del aire. Algunas de las toxinas
que neutraliza incluyen benceno, formaldehído y amoníaco.
Imagina que a tu programa informático le encantan estas plantas. Cada vez que recibe una entrada en
forma de la palabra Spathiphyllum, involuntariamente grita en la consola la siguiente cadena:
"¡Spathiphyllum es la mejor planta que existe!".
Escriba un programa que utilice el concepto de ejecución condicional, tome una cadena como entrada y:

imprime la frase "Sí, ¡Spathiphyllum es la mejor planta que existe!" en la pantalla si la cadena
ingresada es "Spathiphyllum" (mayúscula) imprime "¡No, quiero un
Spathiphyllum grande!" si la cadena ingresada es "spathiphyllum" (minúscula), se
imprime "¡Spathiphyllum! ¡No [entrada]!"
de lo contrario. Nota: [entrada] es la cadena que se toma como entrada.

Pruebe su código utilizando los datos que le proporcionamos. ¡Y consíguete también un Spathiphyllum!
Entrada de muestra:

Spathiphyllum

Resultado esperado:
No, ¡quiero un Spathiphyllum grande!

Entrada de muestra:
pelargonio

Resultado esperado:
Spathiphyllum! ¡No pelargonio!

Entrada de muestra:

Spathiphyllum

Rendimiento esperado:

Sí, ¡Spathiphyllum es la mejor planta que existe!

Solución de muestra
Machine Translated by Google

LABORATORIO 14 Fundamentos de la declaración if­else


Érase una vez una tierra, una tierra de leche y miel, habitada por gente feliz y próspera. La gente pagaba
impuestos, por supuesto; su felicidad tenía límites. El impuesto más importante, llamado Impuesto sobre la Renta de
las Personas Físicas (PIT, por sus siglas en inglés), debía pagarse una vez al año y se evaluaba siguiendo la siguiente
regla:

si los ingresos del ciudadano no superaban los 85.528 táleros, el impuesto equivalía al 18% de los ingresos
menos 556 táleros y 2 céntimos (esto era lo que llamaban desgravación fiscal) si los ingresos eran
superiores a esta cantidad, el impuesto era igual a 14.839 táleros y 2 céntimos, más el 32% del excedente
de 85.528 táleros.

Su tarea es escribir una calculadora de impuestos.

Debería aceptar un valor de punto flotante: el ingreso.


A continuación, debería imprimir el impuesto calculado, redondeado a táleros completos. Hay una
función llamada round() que hará el redondeo por usted; la encontrará en el siguiente código esqueleto.

Nota: este feliz país nunca devolvió dinero a sus ciudadanos. Si el impuesto calculado fuera menor que cero, solo
significaría que no hay ningún impuesto (el impuesto era igual a cero). Tenga esto en cuenta durante sus
cálculos.
Mire el código: solo lee un valor de entrada y genera un resultado, por lo que debe completarlo con algunos cálculos
inteligentes.

Pruebe su código utilizando los datos que le hemos proporcionado.

Entrada de muestra:
10000

Rendimiento esperado:
El impuesto es: 1244,0 táleros.

Entrada de muestra:
100000

Rendimiento esperado:
El impuesto es: 19470,0 táleros.

Entrada de muestra:
1000

Rendimiento esperado:
El impuesto es: 0,0 táleros.

Entrada de muestra:
­100

Rendimiento esperado:
Machine Translated by Google

El impuesto es: 0,0 táleros.

Código

1 ingresos = float(input("Ingrese el ingreso anual: ")) si ingresos < 85528: impuesto =


2 ingreso * 0,18 – 556,02
3
4 # Escribe el resto de tu código aquí. impuesto =
5 round(impuesto, 0) print("El
6 impuesto es:", impuesto, "táleros")
7

Solución de muestra
Machine Translated by Google

LABORATORIO 15 Fundamentos de la declaración if­elif­else


Como seguramente sabrás, por algunas razones astronómicas, los años pueden ser bisiestos o comunes. Los primeros tienen
una duración de 366 días, mientras que los segundos tienen una duración de 365 días.

Desde la introducción del calendario gregoriano (en 1582), se utiliza la siguiente regla para
determinar el tipo de año:

si el número del año no es divisible por cuatro, es un año común; de


lo contrario, si el número del año no es divisible por 100, es un año bisiesto;
de lo contrario, si el número del año no es divisible por 400, es un año común; de
lo contrario, es un año bisiesto.

Mire el siguiente código: solo lee el número de un año y debe completarse con las instrucciones que
implementan la prueba que acabamos de describir.
El código debe generar uno de dos mensajes posibles, que son Año bisiesto o Año común, según el
valor ingresado.
Sería bueno verificar si el año ingresado cae en la era gregoriana y generar una advertencia en caso
contrario: No dentro del período del calendario gregoriano. Consejo: utilice los
operadores != y % .
Pruebe su código utilizando los datos que le hemos proporcionado.

Entrada de muestra:
2000

Rendimiento esperado:

Año bisiesto

Entrada de muestra:
2015

Rendimiento esperado:

año común

Entrada de muestra:
1999

Rendimiento esperado:

año común

Entrada de muestra:
1996

Rendimiento esperado:

Año bisiesto

Entrada de muestra:
1580
Machine Translated by Google

Rendimiento esperado:

No dentro del período del calendario gregoriano

Código

1 año = int(input("Ingrese un año: ")) si año < 1582: print("No


2 dentro del período del
3 calendario gregoriano") más:
4
5 # Escribe aquí el bloque if­elif­elif­else.
6

Solución de muestra
Machine Translated by Google

3.1 RESUMEN DE LA SECCIÓN


1. Los operadores de comparación (también conocidos como relacionales) se utilizan para comparar valores.
La siguiente tabla ilustra cómo funcionan los operadores de comparación, suponiendo que x = 0, y = 1 y z = 0:

DESCRIPCIÓN DEL OPERADOR EJEMPLO

x == y
#FALSO
==
Devuelve True si los valores de los operandos son iguales y False en caso contrario.
x == z#
Verdadero

x != y #
Devuelve True si los valores de los operandos no son iguales Verdadero
!=
y False en caso contrario . x != z # Falso

x>y#
Verdadero si el valor del operando izquierdo es mayor que el valor del operando FALSO
>
derecho y Falso en caso contrario. y>z#
Verdadero

x<y#

< Verdadero si el valor del operando izquierdo es menor que el valor del operando Verdadero

derecho y Falso en caso contrario. y <z#


FALSO

x >= y #
FALSO
Verdadero si el valor del operando izquierdo es mayor o igual que el valor del x >= z#
>=
operando derecho y Falso en caso contrario . Verdadero

y >= z#
Verdadero

x <= y #
Verdadero

Verdadero si el valor del operando izquierdo es menor o igual que el valor del x <= z #
<=
operando derecho y Falso en caso contrario . Verdadero

y <= z #
FALSO

2. Cuando desee ejecutar algún código solo si se cumple una determinada condición, puede utilizar una
declaración condicional:

una sola declaración if , por ejemplo:

1 x = 10 si
2 x == 10: # condición
3 print("x es igual a 10") # Ejecutado si la condición es Verdadera.

4
Machine Translated by Google

una serie de declaraciones if , por ejemplo:

1 x = 10 si x
2 > 5: # condición uno print("x es mayor que 5")
3 # Ejecutado si la condición uno es Verdadera. si x < 10: # condición dos

4
5 print("x es menor que 10") # Ejecutado si la condición dos es Verdadera. si x == 10: # condición tres

6
7 print("x es igual a 10") # Ejecutado si la condición tres es Verdadera.

Cada declaración if se prueba por separado.


una declaración if­else , por ejemplo:

1 x = 10 si x
2 < 10: # condición
3 print("x es menor que 10") # Ejecutado si la condición es Verdadera. 4 más:

5 print("x es mayor o igual a 10") # Ejecutado si la condición es Falsa.

una serie de declaraciones if seguidas de un else, por ejemplo:

1 x = 10 si x
2 > 5: # condición uno print("x es mayor que 5")
3 # Ejecutado si la condición uno es

4 Verdadero. si x < 10: # condición dos print("x es


5 menor que 10") # Ejecutado si la condición dos es Verdadera. si x == 10: # condición tres

6
7 print("x es igual a 10") # Ejecutado si la condición tres es
Verdadero.

Cada uno se prueba por separado. El cuerpo de else se ejecuta si el último if es Falso.

La declaración if­elif­else , por ejemplo:


Machine Translated by Google

1 x = 10 si x
2 == 10: # Impresión verdadera ("x
3 == 10") si x > 15: # Impresión
4 falsa ("x > 15") elif x > 10: #
5 Impresión falsa ("x > 10")
6 elif x > 5: # Verdadero print("x > 5")
7 más: 10
8
9

11 print("de lo contrario no se ejecutará")


12

Si la condición para if es Falsa, el programa verifica las condiciones de los bloques


elif posteriores: se ejecuta el primer bloque elif que sea Verdadero . Si todas las condiciones son
falsas, se ejecutará el bloque else .

Declaraciones condicionales anidadas, por ejemplo:

1 x = 10 si x
2 > 5: # Verdadero si x == 6: #
3 Falso print("nested: x == 6") elif x
4 == 10: # True print("nested: x == 10") else:
5 imprimir("anidado: más")
6
7
8
9 más: 10
imprimir("de lo contrario")
11
Machine Translated by Google

3.1 EXAMEN DE SECCIÓN

Pregunta 1: ¿Cuál es el resultado del siguiente fragmento?


x=5

y = 10
z=8

imprimir(x > y)

imprimir(y > z)

Pregunta 2: ¿Cuál es el resultado del siguiente fragmento?


x, y, z = 5, 10, 8

imprimir(x > z)

imprimir((y – 5) == x)

Pregunta 3: ¿Cuál es el resultado del siguiente fragmento?


x, y, z = 5, 10, 8

x, y, z = z, y, x

imprimir(x > z)

imprimir((y – 5) == x)

Pregunta 4: ¿Cuál es el resultado del siguiente fragmento?


x = 10

si x == 10:

imprimir(x == 10)
si x > 5:

imprimir(x > 5)
si x < 10:

imprimir(x < 10)


demás:

imprimir("de lo contrario")

Pregunta 5: ¿Cuál es el resultado del siguiente fragmento?


x = "1"

si x == 1:

imprimir("uno")
elif x == "1":
Machine Translated by Google

si int(x) > 1:

imprimir("dos")

elif int(x) < 1:

imprimir("tres")
demás:

imprimir("cuatro")

si int(x) == 1:

imprimir("cinco")
demás:

imprimir("seis")

Pregunta 6: ¿Cuál es el resultado del siguiente fragmento?


x=1

y = 1,0
z = "1"

si x == y:

imprimir("uno")

si y == int(z):

imprimir("dos")

elif x == y:

imprimir("tres")
demás:

imprimir("cuatro")
Controlar
Machine Translated by Google

SECCIÓN 3.2 – BUCLES EN PYTHON


Aquí aprenderá sobre los bucles en Python y, específicamente, los bucles while y for . Aprenderá
cómo crear (y evitar caer en) bucles infinitos, cómo salir de bucles y omitir iteraciones de
bucles particulares. ¿Listo?
Machine Translated by Google

3.2.1 Recorriendo su código con while ¿Está de


acuerdo con la siguiente afirmación?
mientras hay algo que hacer
hazlo

Tenga en cuenta que este registro también declara que si no hay nada que hacer, no sucederá nada en absoluto.
En general, en Python, un bucle se puede representar de la siguiente manera:
mientras

instrucción

Si nota algunas similitudes con la instrucción if , está bien. De hecho, la diferencia sintáctica es
sólo una: se utiliza la palabra while en lugar de la palabra if.
La diferencia semántica es más importante: cuando se cumple la condición, if realiza sus declaraciones sólo una vez;
while repite la ejecución siempre que la condición se evalúe como Verdadera.

Nota: todas las reglas relativas a la sangría también se aplican aquí. Te mostraremos esto pronto.
Mire el siguiente algoritmo:
mientras expresión_condicional:
instrucción_uno

instrucción_dos

instrucción_tres
:

instrucción_n

Ahora es importante recordar que:

si desea ejecutar más de una instrucción dentro de un bucle while , debe (como si) aplicar sangría
a todas las instrucciones de la misma manera; una
instrucción o conjunto de instrucciones ejecutadas dentro del bucle while se denomina cuerpo
del
bucle; si la condición es Falsa (igual a cero) tan pronto como se prueba por primera vez, el cuerpo
no se ejecuta ni una sola vez (obsérvese la analogía de no tener que hacer nada si no hay nada
que hacer); el
cuerpo debería poder cambiar el valor de la condición, porque si la condición es Verdadera
al principio, el cuerpo podría funcionar continuamente hasta el infinito (tenga en cuenta que hacer
una cosa generalmente disminuye la cantidad de cosas por hacer).
Machine Translated by Google

3.2.2 Un bucle infinito


Un bucle infinito, también llamado bucle sin fin, es una secuencia de instrucciones en un programa que se repiten
indefinidamente (bucle sin fin).
A continuación se muestra un ejemplo de un bucle que no puede finalizar su ejecución:

1 mientras que Verdadero:

2 print("Estoy atrapado dentro de un bucle.")


3

Este bucle imprimirá infinitamente "Estoy atrapado dentro de un bucle". en la pantalla.


NOTA

Si desea obtener la mejor experiencia de aprendizaje al ver cómo se comporta un bucle infinito, inicie IDLE, cree
un archivo nuevo, copie y pegue el código anterior, guarde su archivo y ejecute el programa. Lo que verás es la
secuencia interminable de "Estoy atrapado dentro de un bucle". cadenas impresas en la ventana de la consola
de Python. Para finalizar su programa, simplemente presione Ctrl­C (o Ctrl­Break en algunas computadoras).
Esto provocará una excepción KeyboardInterrupt y permitirá que su programa
salga del ciclo. Hablaremos de ello más adelante en el curso.

Volvamos al bosquejo del algoritmo que les mostramos recientemente. Le mostraremos cómo utilizar este bucle recién
aprendido para encontrar el número más grande de un gran conjunto de datos ingresados.
Analice el programa detenidamente. Vea dónde comienza el bucle (línea 8). Localice el cuerpo del bucle y descubra
cómo se sale del cuerpo:

1 # Almacene aquí el número más grande actual. número_mayor =


2 ­999999999 # Ingrese el primer valor. número
3 = int(input("Ingrese un número o escriba
4 ­1 para detener: "))
5 # Si el número no es igual a ­1, continúa. mientras que número! = ­1: # ¿Es
6 el número mayor que el
7 número_mayor? si número > número_mayor:
8
# Sí, actualiza el número_mayor. número_mayor
9 10 = número
11 # Ingrese el siguiente número. número =
12 int(input("Ingrese un número o escriba ­1 para detener: "))
# Imprime el número más grande. 13 print("El
14
número más grande es:", número_mayor)
15

Compruebe cómo este código implementa el algoritmo que le mostramos anteriormente.


Machine Translated by Google

3.2.3 El bucle while: más ejemplos


Veamos otro ejemplo que emplea el bucle while . Sigue los comentarios para conocer la idea y la solución.

1 # Un programa que lee una secuencia de números # y cuenta cuántos


2 números son pares y cuántos son impares.
3 # El programa termina cuando se ingresa cero. números_impares = 0
4 números_pares = 0 #
5 Leer el primer número.
6 numero = int(input("Ingrese un número o
7 escriba 0 para detener: ")) # 0 finaliza la ejecución. while number != 0: # Comprueba si el número
8 es impar. si número % 2 == 1:
9
10
11
12 # Aumentar el contador de números impares. números
13 impares += 1 más:
14
15 # Aumentar el contador de números pares. números_pares
dieciséis += 1 # Lee el siguiente
17 número. número = int(input("Ingrese un
18 número o escriba 0 para detener: "))
# Imprimir resultados. 19

print(" Los números impares cuentan:", números_impares) 20 21 print(" Los


números pares cuentan:", números_pares) 22

Ciertas expresiones se pueden simplificar sin cambiar el comportamiento del programa.


Intente recordar cómo interpreta Python la verdad de una condición y observe que estas dos formas son equivalentes:
while número!
= 0: y while número:.

La condición que verifica si un número es impar también se puede codificar en estas formas equivalentes: si
número % 2 == 1: y si número % 2:.

Usar una variable de contador para salir de un bucle


Mire el siguiente fragmento:

1 contador = 5 mientras
2 contador ! = 0: print("Dentro del
3 bucle.", contador) contador ­= 1
4
5 print("Fuera del bucle.", contador)
6

Este código está destinado a imprimir la cadena "Dentro del bucle". y el valor almacenado en la variable del
contador durante un ciclo determinado exactamente cinco veces. Una vez que la condición no ha sido
Machine Translated by Google

se cumple (la variable del contador ha llegado a 0), se sale del bucle y aparece el mensaje "Fuera del bucle". así
como también se imprime el valor almacenado en el contador .
Pero hay una cosa que se puede escribir de forma más compacta: la condición del bucle while .
¿Puedes ver la diferencia?

1 contador = 5
2 mientras contador:
print("Dentro del bucle.", contador) contador ­= 1
34
5 print("Fuera del bucle.", contador)
6

¿Es más compacto que antes? Un poco. ¿Es más legible? Eso es discutible.
RECORDAR

No se sienta obligado a codificar sus programas de la manera más corta y compacta. La legibilidad puede ser un
factor más importante. Mantenga su código listo para un nuevo programador.
Machine Translated by Google

LABORATORIO 16 Adivina el número secreto


Un mago joven ha elegido un número secreto. Lo ha escondido en una variable llamada
número_secreto. Quiere que todos los que ejecutan su programa jueguen el juego Adivina el número
secreto y adivinen qué número ha elegido para ellos. ¡Aquellos que no adivinen el número quedarán atrapados
en un bucle sin fin para siempre! Lamentablemente, no sabe cómo completar el código.

Tu tarea es ayudar al mago a completar el código de tal manera que el código:

le pedirá al usuario que ingrese un número entero;


utilizará un bucle while ;
comprobará si el número ingresado por el usuario es el mismo que el número elegido por el mago. Si
el número elegido por el usuario es diferente al número secreto del mago, el usuario debería ver el
mensaje "¡Ja, ja! ¡Estás atrapado en mi bucle!" y se le solicitará que ingrese un número
nuevamente. Si el número ingresado por el usuario coincide con el número elegido por el mago, el
número debe imprimirse en la pantalla y el mago debe decir las siguientes palabras: "¡Bien
hecho, muggle!
Eres libre ahora."

¡El mago cuenta contigo! No lo decepciones.


EXTRA
Por cierto, mira la función print() . La forma en que la hemos usado aquí se llama impresión multilínea.
Puede utilizar comillas triples para imprimir cadenas en varias líneas para que el texto sea más fácil de leer o
crear un diseño especial basado en texto. Experimenta con ello.

Código

1 número_secreto = 777
2 imprimir(
3 """
4 +=================================+
5 | ¡Bienvenido a mi juego, muggle! | | Introduzca un
6 número entero | | y adivina qué número tengo | |
7 elegido para ti. | | Entonces, ¿cuál es el número
8 secreto? |
9
10 +================================+

12 """) 11

Pista
Solución de muestra
Machine Translated by Google

3.2.4 Bucle de su código con for Otro tipo de bucle disponible en

Python proviene de la observación de que a veces es más importante contar las "vueltas" del bucle que verificar las
condiciones.

Imagine que el cuerpo de un bucle debe ejecutarse exactamente cien veces. Si desea utilizar el bucle while para hacerlo,
podría verse así:

1 yo = 0 2
mientras yo < 100:
3 # hacer_algo() i += 1
4
5

Sería bueno si alguien pudiera hacer este aburrido conteo por usted. ¿Es eso posible?
Por supuesto que lo es: hay un bucle especial para este tipo de tareas y lleva su nombre .

En realidad, el bucle for está diseñado para realizar tareas más complicadas: puede "examinar" grandes colecciones
de datos elemento por elemento. Le mostraremos cómo hacerlo pronto, pero ahora le presentaremos una variante más
simple de su aplicación.
Eche un vistazo al fragmento:

1 para i en rango(100): # hacer_algo()


2 pasar
3
4

Hay algunos elementos nuevos. Te contamos sobre ellos:

la palabra clave for abre el bucle for; nota: no hay ninguna condición después; no tienes que pensar en las condiciones,
ya que se controlan internamente, sin ninguna intervención; cualquier variable después de la palabra

clave for es la variable de control del bucle; cuenta las vueltas del bucle y lo hace automáticamente; la palabra
clave in introduce un elemento de sintaxis que

describe el rango de valores posibles que se asignan a la variable de control; la función range() (esta es una
función muy especial) es responsable de generar

todos los valores deseados de la variable de control; en nuestro ejemplo, la función creará (incluso podemos decir
que alimentará el bucle con) valores posteriores del siguiente conjunto: 0, 1, 2 .. 97, 98, 99; nota: en este caso,
la función range() comienza su trabajo desde 0 y lo termina un paso (un número entero) antes del valor de su
argumento; observe la palabra clave pass dentro del cuerpo del bucle: no hace nada en absoluto; es una instrucción
vacía ; la ponemos aquí porque la sintaxis del bucle for exige al menos una

instrucción dentro del cuerpo (por cierto, if, elif, else y while expresan lo mismo)

Nuestros próximos ejemplos serán un poco más modestos en el número de repeticiones del bucle.
Eche un vistazo al siguiente fragmento. ¿Puedes predecir su producción?
Machine Translated by Google

1 para i en el rango(10):
2 print("El valor de i es actualmente", i)
3

Ejecute el código para comprobar si tenía razón.


NOTA

el bucle se ha ejecutado diez veces (es el argumento de la función range() ) el valor


de la última variable de control es 9 (no 10, ya que comienza desde 0, no desde 1)

La invocación de la función range() puede estar equipada con dos argumentos, no solo uno:

1 para i en rango(2, 8): print("El


2 valor de i es actualmente", i)
3

En este caso, el primer argumento determina el (primer) valor inicial de la variable de control.
El último argumento muestra el primer valor que no se asignará a la variable de control.
Nota: la función range() acepta solo números enteros como argumentos y genera secuencias de
números enteros.
¿Puedes adivinar el resultado del programa? Ejecútelo para comprobar si usted también lo estaba ahora.
El primer valor mostrado es 2 (tomado del primer argumento del rango() ).
El último es 7 (aunque el segundo argumento del rango() es 8).
Machine Translated by Google

3.2.5 Más sobre el bucle for y la función range() con tres


argumentos
La función range() también puede aceptar tres argumentos ; eche un vistazo al siguiente código.

1 para i en rango(2, 8, 3): print("El valor de


2 i es actualmente", i)
3

El tercer argumento es un incremento : es un valor agregado para controlar la variable en cada vuelta
del ciclo (como puede sospechar, el valor predeterminado del incremento es 1).
¿Puedes decirnos cuántas líneas aparecerán en la consola y qué valores contendrán?
Ejecute el programa para averiguar si tiene razón.
Debería poder ver las siguientes líneas en la ventana de la consola: El valor de i es

actualmente 2

El valor de i actualmente es 5

¿Sabes por qué? El primer argumento pasado a la función range() nos dice cuál es el número inicial de la
secuencia (por lo tanto, 2 en la salida). El segundo argumento le dice a la función dónde detener la secuencia (la función
genera números hasta el número indicado por el segundo argumento, pero no lo incluye). Finalmente, el tercer
argumento indica el paso, que en realidad significa la diferencia entre cada número en la secuencia de números generada
por la función. 2 (número inicial) → 5 (2 incrementos en 3 es igual a 5 ; el número está dentro del rango de 2 a
8) → 8 (5 incrementos en 3 es igual a 8 ; el
número no está dentro del rango de 2 a 8, porque el El parámetro de parada no está incluido en la secuencia de
números generada por la función).

Nota: si el conjunto generado por la función range() está vacío, el bucle no ejecutará su cuerpo en absoluto.

Al igual que aquí, no habrá salida:

1 para i en rango(1, 1): print("El valor


2 de i es actualmente", i)
3

Nota: el conjunto generado por range() debe ordenarse en orden ascendente. No hay forma de forzar a range() a
crear un conjunto en una forma diferente cuando la función range() acepta exactamente dos argumentos. Esto
significa que el segundo argumento de range() debe ser mayor que el primero.

Por lo tanto, aquí tampoco habrá resultados:

1 para i en rango(2, 1): print("El valor


2 de i es actualmente", i)
3

Echemos un vistazo a un programa corto cuya tarea es escribir algunas de las primeras potencias de dos:
Machine Translated by Google

1 potencia = 1
2 para expo en rango(16): print("2
3 elevado a la potencia de", expo, "es", potencia) potencia *= 2
4
5

La variable expo se utiliza como variable de control para el bucle e indica el valor actual del exponente. La
potenciación en sí se reemplaza multiplicando por dos. Como 20 es igual a 1, entonces 2 × 1 es igual a 21, 2
× 21 es igual a 22, y así sucesivamente. ¿Cuál es el máximo exponente para el cual nuestro programa todavía
imprime el resultado?
Ejecute el código y compruebe si el resultado coincide con sus expectativas.
Machine Translated by Google

LABORATORIO 17 Fundamentos del bucle for – contando mississippily ¿Sabes qué es


Mississippi? Bueno, es el nombre de uno de los estados y ríos de Estados Unidos. El río
Mississippi tiene aproximadamente 2340 millas de largo, lo que lo convierte en el segundo
río más largo de los Estados Unidos (el más largo es el río Missouri). ¡Es tan largo que
una sola gota de agua necesita 90 días para recorrer toda su longitud!
La palabra Mississippi también se usa para un propósito ligeramente diferente: contar Mississippi.
Si no estás familiarizado con la frase, estamos aquí para explicarte lo que significa: se usa para contar segundos.

La idea detrás de esto es que agregar la palabra Mississippi a un número al contar segundos en
voz alta hace que suenen más cerca de la hora del reloj y, por lo tanto, "un Mississippi, dos Mississippi,
tres Mississippi" tomará aproximadamente tres segundos reales. A menudo lo utilizan los niños que
juegan al escondite para asegurarse de que el buscador haga un recuento honesto.
Su tarea aquí es muy simple: escriba un programa que use un bucle for para "contar mississippippily"
hasta cinco. Habiendo contado hasta cinco, el programa debería imprimir en pantalla el mensaje final
"¡Listo o no, allá voy!"
Utilice el esqueleto que le proporcionamos.
EXTRA
Tenga en cuenta que el código contiene dos elementos que pueden no estar completamente claros para
usted en este momento: la declaración de tiempo de importación y el método sleep() . Pronto hablaremos de ellos.
Por el momento, sólo nos gustaría que supiera que importamos el módulo de tiempo y utilizamos el
método sleep() para suspender la ejecución de cada función print() subsiguiente dentro del bucle for
durante un segundo, de modo que el El mensaje enviado a la consola se parece a un conteo real.
No se preocupe: pronto aprenderá más sobre módulos y métodos.

Rendimiento esperado:
1 Misisipi

2 Misisipi

3 Misisipi

4 Misisipi

5 Misisipi

Código

1 tiempo de
2 importación # Escribe un bucle for que cuente hasta cinco.
3 # Cuerpo del bucle: imprime el número de iteración del bucle y la palabra "Mississippi".

4 # Cuerpo del bucle – uso: time.sleep(1)


5 # Escribe una función de impresión con el mensaje final.
6

Pista
Solución de muestra
Machine Translated by Google

3.2.5 Las declaraciones de pausa y continuación


Hasta ahora, hemos tratado el cuerpo del bucle como una secuencia indivisible e inseparable de instrucciones
que se ejecutan completamente en cada vuelta del bucle. Sin embargo, como desarrollador, podría enfrentarse a las
siguientes opciones:

parece que no es necesario continuar el ciclo en su totalidad; debes abstenerte de seguir ejecutando el cuerpo
del bucle e ir más allá; parece que necesitas comenzar el
siguiente giro del bucle sin completar la ejecución del giro actual.

Python proporciona dos instrucciones especiales para la implementación de ambas tareas. Para mayor precisión,
digamos que su existencia en el lenguaje no es necesaria: un programador experimentado puede codificar cualquier
algoritmo sin estas instrucciones. Estas adiciones, que no mejoran el poder expresivo del lenguaje, sino que sólo
simplifican el trabajo del desarrollador, a veces se denominan dulces sintácticos o azúcar sintáctico.

Estas dos instrucciones son:

break : sale del bucle inmediatamente y finaliza incondicionalmente la operación del bucle; el programa
comienza a ejecutar la instrucción más cercana después del cuerpo del bucle; continuar :
se comporta como si el programa hubiera llegado repentinamente al final del cuerpo; Se inicia el siguiente turno
y la expresión de la condición se prueba inmediatamente.

Ambas palabras son palabras clave.


Ahora le mostraremos dos ejemplos sencillos para ilustrar cómo funcionan las dos instrucciones. Mire el siguiente
código. Ejecute el programa y analice el resultado. Modifique el código y experimente.

1 # descanso – ejemplo
2
3 print("La instrucción de interrupción:") para i en el
4 rango(1, 6):
5 si i == 3: romper
6
7 print("Dentro del bucle.", i)
8 print("Fuera del bucle.")
9
10
# continuar – ejemplo 11 12

13 print("\nLa instrucción de continuar:") para i en el rango(1, 6):


14 si i == 3: continuar
15
dieciséis

17 print("Dentro del bucle.", i) print("Fuera del bucle.")


18 19

Las declaraciones de pausa y continuación: más ejemplos


Machine Translated by Google

Volvamos a nuestro programa que reconoce el mayor entre los números ingresados. Lo convertiremos dos veces, usando
las instrucciones de pausa y continuación .

Analice el código y juzgue si utilizaría cualquiera de ellos y cómo.

La variante de descanso va aquí:

1 número_mayor = ­99999999 contador = 0


2
3
4 mientras que Verdadero:

5 número = int(input("Ingrese un número o escriba ­1 para finalizar el programa: ")) si número == ­1: romper
contador += 1 si
6 número > número_mayor:
7
8 número_mayor =
9 número si contador!= 0: 11 imprimir ("El número más
10 grande es", número_mayor) más: 13

12

14 print(" No has ingresado ningún número.")


15

Ejecútelo, pruébelo y experimente con él.


Y ahora la variante continuar :

1 número_mayor = ­99999999 contador = 0


2
3
4 número = int(input("Ingrese un número o escriba ­1 para finalizar el programa: "))
5
6 mientras número != ­1: si número ==
7 ­1: continuar
8
9 contador += 1
10
11 if número > número_mayor: número_mayor =
12 número número = int(input("Ingrese un
número o escriba ­1 para finalizar el programa 13 : ")) 14

si contador: 15
dieciséis
print("El número más grande es", número_mayor) else: 17

18 print(" No has ingresado ningún número.")


19

Mire con atención, el usuario ingresa el primer número antes de que el programa ingrese al ciclo while . El número siguiente se
ingresa cuando el programa ya está en el bucle.
Machine Translated by Google

Nuevamente: ejecute el programa, pruébelo y experimente con él.


Machine Translated by Google

LABORATORIO 18 La sentencia break – Atascado en un bucle


La declaración break se utiliza para salir/terminar un bucle.
Diseñe un programa que utilice un bucle while y pida continuamente al usuario que ingrese una palabra
a menos que el usuario ingrese "chupacabra" como palabra secreta de salida, en cuyo caso
aparecerá el mensaje "Has salido exitosamente del bucle". debe imprimirse en la pantalla y el bucle debe
terminar.
No imprima ninguna de las palabras ingresadas por el usuario. Utilice el concepto de ejecución condicional y la
declaración de interrupción .
Pista
Solución de muestra
Machine Translated by Google

LABORATORIO 19 La declaración de continuación: el feo devorador de vocales


La declaración de continuación se utiliza para omitir el bloque actual y avanzar a la siguiente iteración, sin ejecutar las
declaraciones dentro del bucle.

Se puede utilizar tanto con el bucle while como con el bucle for .

Tu tarea aquí es muy especial: ¡debes diseñar un devorador de vocales! Escribe un programa que utilice:

un bucle for ; el

concepto de ejecución condicional (if­elif­else) la declaración de continuación .

Su programa debe:

pedirle al usuario que ingrese una

palabra; use user_word = user_word.upper() para convertir la palabra ingresada por el usuario a mayúsculas; Muy
pronto hablaremos sobre los métodos de cadena y el método Upper(). No te preocupes;

use la ejecución condicional y la instrucción continue para "comerse" las siguientes vocales A, E, I, O, U
de la palabra ingresada; Imprime las letras no consumidas

en la pantalla, cada una de ellas en una línea separada.

Pruebe su programa con los datos que le hemos proporcionado.

Entrada de muestra:

gregorio

Rendimiento esperado:
GRAMO

GRAMO

Entrada de muestra:
abstemio

Rendimiento esperado:
B

METRO

S
Machine Translated by Google

Entrada de muestra:

IOUEA

Rendimiento esperado:

Código

1 # Solicite al usuario que ingrese una palabra # y


2 asígnela a la variable user_word.
3
4 para letra en user_word:
5 # Completa el cuerpo del bucle for.
6

Pista
Solución de muestra
Machine Translated by Google

LAB 20 La declaración de continuación: Pretty Vowel Eater


Tu tarea aquí es aún más especial que antes: debes rediseñar el (feo) devorador de vocales del laboratorio anterior y
crear un devorador de vocales mejor y mejorado (bonito). Escribe un programa que utilice:

un bucle for ;
el concepto de ejecución condicional (if­elif­else) la declaración de
continuación .

Su programa debe:

pedirle al usuario que ingrese una

palabra; use user_word = user_word.upper() para convertir la palabra ingresada por el usuario a mayúsculas;
Muy pronto hablaremos sobre los métodos de cadena y el método Upper(). No te preocupes; use la ejecución

condicional y la instrucción continue para "comerse" las siguientes vocales A, E, I, O, U de la


palabra ingresada; asigne las letras no consumidas a
la variable palabra_sin_vocales e imprima la variable en la pantalla.

Mire el siguiente código. Creamos word_ without_vocals y le asignamos una cadena vacía. Utilice la operación de
concatenación para pedirle a Python que combine letras seleccionadas en una cadena más larga durante los ciclos
posteriores y asígnela a la variable word_ without_vowels .
Pruebe su programa con los datos que le hemos proporcionado.

Entrada de muestra:

gregorio

Rendimiento esperado:

GREGORIO

Entrada de muestra:

abstemio

Rendimiento esperado:

BSTMS

Entrada de muestra:

IOUEA

Rendimiento esperado:

Código
Machine Translated by Google

1 ""
palabra_sin_vocales =
2
3 # Solicite al usuario que ingrese una palabra # y
4 asígnela a la variable user_word.
5
6
7 para letra en palabra_usuario: #
8 Completa el cuerpo del bucle.
9
# Imprime la palabra asignada a palabra_sin_vocales. 10 11

Pista
Solución de muestra
Machine Translated by Google

3.2.6 El bucle while y la rama else


Ambos bucles, while y for, tienen una característica interesante (y rara vez utilizada).
Le mostraremos cómo funciona: intente juzgar usted mismo si es utilizable y si puede vivir sin él o no.

En otras palabras, intente convencerse de si la característica es valiosa y útil, o si es simplemente azúcar sintáctica.

Eche un vistazo al siguiente fragmento. Hay algo extraño al final: la palabra clave else .

Como habrás sospechado, los bucles también pueden tener la rama else , como ifs.
La rama else del bucle siempre se ejecuta una vez, independientemente de si el bucle ha entrado en su cuerpo o
no.
¿Puedes adivinar el resultado? Ejecute el programa para comprobar si tenía razón.

1 i=1
2 mientras i < 5: print(i)
3 i += 1
4
5 más:
6 imprimir("más:", i)
7

Modifica un poco el fragmento para que el bucle no tenga posibilidad de ejecutar su cuerpo ni siquiera una vez:
La condición del while es Falsa al principio. ¿Puedes verlo?
Ejecute y pruebe el programa y verifique si la rama else se ha ejecutado o no.
Machine Translated by Google

3.2.7 El bucle for y la rama else


Los bucles for se comportan de forma un poco diferente: eche un vistazo al siguiente fragmento y ejecútelo.

1 para i en rango(5): imprimir(i)


2 más:
3
4 imprimir("si no:", i)
5

El resultado puede ser un poco sorprendente.


La variable i conserva su último valor.

Modifica un poco el código para realizar un experimento más.

1 i = 111 para
2 i en el rango(2, 1): print(i) más:
3
4
5 imprimir("si no:", i)
6

¿Puedes adivinar el resultado?


El cuerpo del bucle no se ejecutará aquí en absoluto. Nota: hemos asignado la variable i antes del ciclo.

Ejecute el programa y verifique su resultado.


Cuando el cuerpo del bucle no se ejecuta, la variable de control conserva el valor que tenía antes del bucle.

Nota: si la variable de control no existe antes de que comience el ciclo, no existirá cuando la ejecución llegue a la rama
else .

¿Cómo te sientes acerca de esta variante de else?


Pronto os hablaremos de otros tipos de variables. Nuestras variables actuales sólo pueden almacenar un valor a la vez,
pero hay variables que pueden hacer mucho más: pueden almacenar tantos valores como desee. Pero primero hagamos
algunos laboratorios.
Machine Translated by Google

LABORATORIO 21 Fundamentos del ciclo while


Escuche esta historia: un niño y su padre, un programador informático, están jugando con bloques de
madera. Están construyendo una pirámide.
Su pirámide es un poco extraña, ya que en realidad es una pared con forma de pirámide: es plana. La
pirámide se apila según un principio simple: cada capa inferior contiene un bloque más que la capa superior.

La figura ilustra la regla utilizada por los constructores:

Su tarea es escribir un programa que lea la cantidad de bloques que tienen los constructores y
genere la altura de la pirámide que se puede construir usando estos bloques.
Nota: la altura se mide por el número de capas completamente terminadas ; si los constructores no tienen
una cantidad suficiente de bloques y no pueden completar la siguiente capa, terminan su trabajo
inmediatamente.
Pruebe su código utilizando los datos que le hemos proporcionado.

Entrada de muestra:
6

Rendimiento esperado:
La altura de la pirámide: 3

Entrada de muestra:
20

Rendimiento esperado:
La altura de la pirámide: 3
Machine Translated by Google

Entrada de muestra:

1000

Rendimiento esperado:

La altura de la pirámide: 44
Entrada de muestra:

Rendimiento esperado:

La altura de la pirámide: 1
Código

1 bloques = int(input("Ingrese el número de bloques: ")) #


2
3 # Escribe tu código aquí. # print("La altura
4
5 de la pirámide:", altura)
6

Pista
Solución de muestra
Machine Translated by Google

LABORATORIO 22 La hipótesis de Collatz En


1937, un matemático alemán llamado Lothar Collatz formuló una hipótesis intrigante (aún no ha sido
probada) que puede describirse de la siguiente manera: tome cualquier
número entero no negativo y distinto de cero y llámelo c0; si es par, evalúe
un nuevo c0 como c0 ÷ 2; de lo contrario, si es
impar, evalúe un nuevo c0 como 3 × c0 + 1; si c0 ≠ 1, volvemos
al punto 2.
La hipótesis dice que independientemente del valor inicial de c0, siempre irá a 1.
Por supuesto, es una tarea extremadamente compleja usar una computadora para probar la hipótesis
de cualquier número natural (incluso puede requerir inteligencia artificial), pero puedes usar Python
para verificar algunos números individuales. Quizás incluso encuentres el que refute la hipótesis.

Escriba un programa que lea un número natural y ejecute estos pasos siempre que c0 siga
siendo diferente de 1. También queremos que cuente los pasos necesarios para lograr el objetivo. Su
código también debería generar todos los valores intermedios de c0 .
Pista: la parte más importante del problema es cómo transformar la idea de Collatz en un
bucle while ; esta es la clave del éxito.
Pruebe su código utilizando los datos que le hemos proporcionado.

Entrada de muestra:
15

Rendimiento esperado:
46

46

70

35

106

53

160

80

40

20

10

dieciséis

8
Machine Translated by Google

pasos = 17
Entrada de muestra:

dieciséis

Rendimiento esperado:

pasos = 4
Entrada de muestra:

1023

Rendimiento esperado:

3070

1535

4606

2303

6910

3455

10366

5183

15550

7775

23326

11663

34990

17495

52486

26243
Machine Translated by Google

78730

39365

118096

59048

29524

14762

7381

22144

11072

5536

2768

1384

692

346

173

173

260

130

sesenta y cinco

196

98

49

148

74

37

37

56

28

14

22
Machine Translated by Google

11

34

17

52

26

13

40

20

10

dieciséis

Pista
Solución de muestra
Machine Translated by Google

3.2 RESUMEN DE LA SECCIÓN


1. Hay dos tipos de bucles en Python: while y for: el bucle while ejecuta
una declaración o un conjunto de declaraciones siempre que una condición booleana especificada sea verdadera,
por ejemplo:

1 # Ejemplo 1
2 mientras es Verdadero:
3 print("Atrapado en un bucle infinito.")
4
5 # Ejemplo 2 contador
6 = 5 mientras contador
7 > 2: imprimir (contador) contador
8 ­= 1

9 10

El bucle for ejecuta un conjunto de declaraciones muchas veces; se utiliza para iterar sobre una secuencia
(por ejemplo, una lista, un diccionario, una tupla o un conjunto; aprenderá sobre ellos pronto) u otros
objetos iterables (por ejemplo, cadenas). Puede utilizar el bucle for para iterar sobre una secuencia de
números utilizando la función de rango incorporada. Mire los siguientes ejemplos:

1 # Ejemplo 1
2 palabra = "Python" para
3 letra en palabra: print(letra,
4 end="*")
5
6 # Ejemplo 2 para i
7 en el rango(1, 10): si i % 2 == 0:
8 print(i)
9
10

2. Puede utilizar las instrucciones break y continue para cambiar el flujo de un bucle: utilice break para
salir de un bucle, por ejemplo:

1 text = "OpenEDG Python Institute" para la letra en el


2 texto:
3 si letra == "P": romper
4
5 print(letra, fin="")
6

Utilice continuar para omitir la iteración actual y continuar con la siguiente iteración, por ejemplo:
Machine Translated by Google

1 text = "pyxpyxpyx" para la letra


2 del texto:
3 si letra == "x": continuar
4 imprimir(letra,
5 fin="")
6

3. Los bucles while y for también pueden tener una cláusula else en Python. La cláusula else se ejecuta
después de que el bucle finaliza su ejecución, siempre y cuando no haya sido terminado por una interrupción, por
ejemplo:

1 norte = 0
2
3 mientras n != 3:
4 imprimir(n) n
5 += 1
6 más:
7 imprimir(n, "más")
8
9 imprimir() 10

11 para i en el rango(0, 3): print(i) 13 más:


12

14 imprimir(yo, "otro")
15

4. La función range() genera una secuencia de números. Acepta números enteros y devuelve objetos de rango. La sintaxis de
rango() es la siguiente: rango(inicio, parada, paso), donde:

start es un parámetro opcional que especifica el número inicial de la secuencia (0 por defecto), stop es un parámetro
opcional

que especifica el final de la secuencia generada (no está incluido) y step es un parámetro opcional que especifica la
diferencia

entre los números en la secuencia. secuencia (1 por defecto).

Código de ejemplo:

1 para i en rango(3): print(i, end="


2 ") # Salidas: 0 1 2
3
4 para i en rango(6, 1, ­2): print(i, end=" ") #
5 Salidas: 6, 4, 2
6
Machine Translated by Google

3.2 EXAMEN DE SECCIÓN


Pregunta 1: Cree un bucle for que cuente del 0 al 10 e imprima números impares en la pantalla. Utilice el
siguiente esqueleto: para i en el rango(1,

11):

# Línea de código.

# Línea de código.

Pregunta 2: Cree un bucle while que cuente del 0 al 10 e imprima números impares en la pantalla. Utilice el
siguiente esqueleto:
x=1

mientras x < 11:

# Línea de código.

# Línea de código.

# Línea de código.

Pregunta 3: cree un programa con un bucle for y una declaración de interrupción . El programa debe iterar sobre los
caracteres de una dirección de correo electrónico, salir del bucle cuando llegue al símbolo @ e imprimir la parte
antes de @ en una línea. Utilice el siguiente esqueleto:

para ch en "[email protected]":

si ch == "@":

# Línea de código.

# Línea de código.

Pregunta 4: Cree un programa con un bucle for y una declaración de continuación . El programa debe iterar
sobre una cadena de dígitos, reemplazar cada 0 con x e imprimir la cadena modificada en la pantalla. Utilice el
siguiente esqueleto: para el dígito en

"0165031806510":

si dígito == "0":

# Línea de código.

# Línea de código.

# Línea de código.

Pregunta 5: ¿Cuál es el resultado del siguiente código?


norte = 3

mientras norte > 0:

imprimir(n + 1)

norte­= 1
Machine Translated by Google

demás:

imprimir(n)

Pregunta 6: ¿Cuál es el resultado del siguiente código? norte =

rango(4)

para número en n:

imprimir(núm – 1)

demás:

imprimir(núm)

Pregunta 7: ¿Cuál es el resultado del siguiente código? para i en

el rango (0, 6, 3):

imprimir(yo)

Controlar
Machine Translated by Google

SECCIÓN 3.3 – OPERACIONES LÓGICAS Y DE BIT EN PYTHON


En esta sección, aprenderá sobre los operadores lógicos y bit a bit en Python, y conceptos como la tabla
de verdad y el desplazamiento de bits.
Machine Translated by Google

3.3.1 Lógica informática


¿Has notado que las condiciones que hemos usado hasta ahora han sido muy simples, por no decir bastante
¿primitivo? Las condiciones que utilizamos en la vida real son mucho más complejas. Miremos esto
oración:

Si tenemos algo de tiempo libre y hace buen tiempo, saldremos a caminar.


Hemos usado la conjunción y, lo que significa que salir a caminar depende de la
cumplimiento simultáneo de estas dos condiciones. En el lenguaje de la lógica, tal conexión de
condiciones se llama conjunción. Y ahora otro ejemplo:
Si estás en el centro comercial o yo estoy en el centro comercial, uno de nosotros comprará un regalo para mamá.

La aparición de la palabra o significa que la compra depende de al menos uno de estos


condiciones. En lógica, tal compuesto se llama disyunción.
Está claro que Python debe tener operadores para construir conjunciones y disyunciones. Sin ellas,
el poder expresivo del lenguaje se vería sustancialmente debilitado. se llaman lógicos
operadores.

El operador y
Un operador de conjunción lógica en Python es la palabra y. Es un operador binario con un
prioridad inferior a la expresada por los operadores de comparación. Nos permite
codifique condiciones complejas sin el uso de paréntesis como este:
contador > 0 y valor == 100

El resultado proporcionado por el operador y se puede determinar basándose en la tabla de verdad.


Si consideramos la conjunción de A y B, el conjunto de valores posibles de los argumentos y
Los valores correspondientes de la conjunción son los siguientes:
ARGUMENTO A ARGUMENTO BA Y B

FALSO FALSO FALSO

FALSO Verdadero FALSO

Verdadero FALSO FALSO

Verdadero Verdadero Verdadero

El operador o
Un operador de disyunción es la palabra o. Es un operador binario con una prioridad más baja que
y (igual que + comparado con). Su tabla de verdad es la siguiente:
ARGUMENTO A ARGUMENTO BA O B

FALSO FALSO FALSO

FALSO Verdadero Verdadero

Verdadero FALSO Verdadero

Verdadero Verdadero Verdadero

El operador no
Machine Translated by Google

Además, existe otro operador que se puede aplicar a la construcción de condiciones. Es un operador unario que
realiza una negación lógica. Su funcionamiento es sencillo: convierte la verdad en falsedad y la falsedad en verdad.

Este operador se escribe como la palabra no y su prioridad es muy alta: igual que el unario + y ­. Su tabla de verdad
es simple:
ARGUMENTO NO ARGUMENTO

FALSO Verdadero

Verdadero FALSO
Machine Translated by Google

3.3.2 Expresiones lógicas Creemos una


variable llamada var y le asignaremos 1. Las siguientes condiciones son equivalentes por pares:

# Ejemplo 1:
imprimir(var > 0)
imprimir (no (var <= 0))

# Ejemplo 2:
imprimir(var != 0)
imprimir(no (var == 0))

Quizás esté familiarizado con las leyes de De Morgan. Dicen


que: La negación de una conjunción es la disyunción de las negaciones.
La negación de una disyunción es la conjunción de las negaciones.
Escribamos lo mismo usando Python:
no (p y q) == (no p) o (no q)
no (p o q) == (no p) y (no q)

Observe cómo se han utilizado los paréntesis para codificar las expresiones; los colocamos allí para
mejorar la legibilidad.
Debemos agregar que ninguno de estos operadores de dos argumentos se puede utilizar en la forma
abreviada conocida como op=. Vale la pena recordar esta excepción.
Machine Translated by Google

3.3.3 Valores lógicos frente a bits individuales Los


operadores lógicos toman sus argumentos como un todo independientemente de cuántos bits contengan.
Los operadores sólo conocen el valor: cero (cuando se restablecen todos los bits) significa Falso; no cero
(cuando se establece al menos un bit) significa Verdadero.
El resultado de sus operaciones es uno de estos valores: Falso o Verdadero. Esto significa que este fragmento
asignará el valor Verdadero a la variable j si i no es cero; de lo contrario, será Falso.
yo = 1

j = no no yo
Machine Translated by Google

3.3.4 Operadores bit a bit


Sin embargo, existen cuatro operadores que le permiten manipular bits individuales de datos. Ellos son
llamados operadores bit a bit.
Cubren todas las operaciones que mencionamos antes en el contexto lógico, y una adicional
operador. Este es el operador xor (como en exclusivo o) y se denota como ^ (intercalación).
Aquí están todos ellos:

& (ampersand) ­ conjunción bit a bit;


| (barra) ­ disyunción bit a bit;
~ (tilde) negación bit a bit;
^ (cuadro de intercalación) ­ exclusivo bit a bit o (xor).

Operaciones bit a bit (&, | y ^)

ARGUMENTO A ARGUMENTO BA & BA | Licenciatura ^ B


0 0 0 0 0

0 1 0 1 1

1 0 0 1 1

1 1 1 1 0

Operaciones bit a bit (~)


ARGUMENTO ~ ARGUMENTO

0 1

1 0
Hagámoslo más fácil:

& requiere exactamente dos unos para proporcionar 1 como resultado;

| requiere al menos un 1 para proporcionar 1 como resultado;


^ requiere exactamente un 1 para proporcionar 1 como resultado.

Agreguemos una observación importante: los argumentos de estos operadores deben ser números enteros; debemos
No utilice flotadores aquí.

La diferencia en el funcionamiento de los operadores lógicos y de bits es importante: el lógico


Los operadores no penetran en el nivel de bits de su argumento. Sólo les interesa el
valor entero final.
Los operadores bit a bit son más estrictos: tratan cada bit por separado. Si suponemos que el
La variable entera ocupa 64 bits (lo cual es común en los sistemas informáticos modernos), puede
Imagine la operación bit a bit como una evaluación de 64 veces del operador lógico para cada par de bits.
de los argumentos. Esta analogía es obviamente imperfecta, ya que en el mundo real todos estos 64
las operaciones se realizan al mismo tiempo (simultáneamente).

Operaciones lógicas versus operaciones de bits


Machine Translated by Google

Ahora le mostraremos un ejemplo de la diferencia de operación entre las operaciones


lógicas y de bits. Supongamos que se han realizado las siguientes asignaciones:
yo = 15

j = 22

Si asumimos que los números enteros se almacenan con 32 bits, la imagen bit a bit de las dos variables será la
siguiente:

yo: 00000000000000000000000000001111

j: 00000000000000000000000000010110

Se da la tarea:

log = i y j

Estamos ante una conjunción lógica. Sigamos el curso de los cálculos. Ambas variables i y j no
son ceros, por lo que se considerará que representan Verdadero. Consultando la tabla de verdad
para el operador and, podemos ver que el resultado será Verdadero. No se realizan
otras operaciones.
registro: verdadero

Ahora la operación bit a bit, aquí está:


bit = i y j

El operador & operará con cada par de bits correspondientes por separado, produciendo los
valores de los bits relevantes del resultado. Por tanto, el resultado será el siguiente:
i 00000000000000000000000000001111

j 00000000000000000000000000010110

bit = i & j00000000000000000000000000000110 Estos bits corresponden


al valor entero de seis.
Veamos ahora los operadores de negación. Primero el lógico:
logng = no yo

La variable logreg se establecerá en False ; no es necesario hacer nada más.


La negación bit a bit es la siguiente:
bitneg = ~i
Machine Translated by Google

Puede resultar un poco sorprendente: el valor de la variable bitneg es ­16. Esto puede parecer extraño, pero no lo es.
en absoluto. Si desea obtener más información, debe consultar el sistema de numeración binaria y las reglas.
que rige los números en complemento a dos.
i 00000000000000000000000000001111

bitneg = ~i 111111111111111111111111111110000
Cada uno de estos operadores de dos argumentos se puede utilizar en forma abreviada. Estos son los
ejemplos de sus notaciones equivalentes:
x = x & yx &= y
x = x | yx |= y
x=x ^ ^= y
yx
Machine Translated by Google

3.3.5 ¿Cómo tratamos los bits individuales?


Ahora le mostraremos para qué puede utilizar operadores bit a bit. Imagina que eres un desarrollador
obligado a escribir una parte importante de un sistema operativo. Le han dicho que puede usar una
variable asignada de la siguiente manera: flag_register = 0x1234

La variable almacena información sobre varios aspectos del funcionamiento del sistema. Cada bit de la
variable almacena un valor de sí/no. También te han dicho que sólo uno de estos bits es tuyo: el tercero
(recuerda que los bits están numerados desde cero, y el bit número cero es el más bajo, mientras que el
más alto es el número 31). Los bits restantes no pueden cambiar porque están destinados a almacenar otros
datos. Aquí está tu bit marcado con la letra x:
registro_bandera = 0000000000000000000000000000x000

Es posible que se enfrente a las siguientes


tareas: 1. Verifique el estado de su bit ; desea conocer el valor de su bit; comparar toda la variable con
cero no hará nada, porque los bits restantes pueden tener valores completamente impredecibles, pero
puedes usar la siguiente propiedad de conjunción:
xy1=x

xy0=0

Si aplica la operación & a la variable flag_register junto con la siguiente imagen de bits:
00000000000000000000000000001000

(tenga en cuenta el 1 en la posición de su bit) como resultado, obtendrá una de las siguientes cadenas
de bits: 000000000000000000000000000001000 si su bit se configuró en 1
0000000000000000000000000000000000 si su bit se restableció a 0

Esta secuencia de ceros y unos, cuya tarea es tomar el valor o cambiar los bits seleccionados, se llama
máscara de bits.
Construyamos una máscara de bits para detectar el estado de su bit. Debería apuntar al tercer bit. Ese bit
tiene el peso de 23 = 8. Se podría crear una máscara adecuada mediante la siguiente declaración:
la_mascara = 8

También puedes realizar una secuencia de instrucciones dependiendo del estado de tu bit. Aquí lo tienes:
si flag_register y the_mask:

# Mi bit está configurado.


Machine Translated by Google

demás:

# Mi bit se restablece.

2. Restablezca su bit : asigna un cero al bit mientras que todos los demás bits deben permanecer sin cambios;
usemos la misma propiedad de la conjunción que antes, pero usemos una máscara ligeramente diferente,
exactamente como sigue:
11111111111111111111111111110111

Tenga en cuenta que la máscara se creó como resultado de la negación de todos los bits de la variable_mask.
Restablecer el bit es simple y se ve así (elige el que más te guste): flag_register =
flag_register & ~the_mask

registro_bandera &= ~la_máscara

3. Configure su bit : usted asigna un 1 a su bit, mientras que todos los bits restantes deben
permanecer sin cambios; Utilice la siguiente propiedad de disyunción:

x|1=1

x|0=x

Ahora está listo para configurar su bit con una de las siguientes instrucciones:
flag_register = flag_register | la máscara

registro_bandera |= la_máscara

4. Niega tu bit : reemplazas un 1 con un 0 y un 0 con un 1. Puedes usar una propiedad interesante del
operador xor:
X ^ 1 = ~x

X ^0=x

y niega tu bit con las siguientes instrucciones:


registro_bandera = registro_bandera ^ la_máscara

registro_bandera ^= la_máscara
Machine Translated by Google

3.3.6 Desplazamiento binario a la izquierda y desplazamiento binario a la derecha

Python ofrece otra operación más relacionada con bits individuales: el desplazamiento. Esto se aplica sólo a
valores enteros y no debe utilizar puntos flotantes como argumentos.
Ya aplicas esta operación muy a menudo y de forma bastante inconsciente. ¿Cómo se multiplica cualquier número por
diez? Echa un vistazo: 12345 × 10
= 123450

Como puede ver, multiplicar por diez es, de hecho, desplazar todos los dígitos hacia la izquierda y llenar el espacio
resultante con cero.
¿División por diez? Echa un vistazo:
12340 ÷ 10 = 1234

Dividir por diez no es más que desplazar los dígitos hacia la derecha.
El ordenador realiza el mismo tipo de operación, pero con una diferencia: como dos es la base de los números
binarios (no 10), desplazar un valor un bit hacia la izquierda equivale a multiplicarlo por dos; respectivamente,
desplazar un bit hacia la derecha es como dividir por dos (observe que el bit más a la derecha se pierde).

Los operadores de desplazamiento en Python son un par de dígrafos: << y >>, que sugieren claramente en qué
dirección actuará el desplazamiento.

valor << bits

valor >> bits

El argumento izquierdo de estos operadores es un valor entero cuyos bits están desplazados. El argumento correcto
determina el tamaño del cambio.
Esto demuestra que esta operación ciertamente no es conmutativa.
La prioridad de estos operadores es muy alta. Las verás en la tabla de prioridades actualizada, que te mostraremos
al final de esta sección.
Eche un vistazo a los cambios en el código.

1 var = 17
2 var_derecha = var >> 1
3 var_izquierda = var << 2
4 imprimir(var, var_izquierda, var_derecha)
5

La invocación final de print() produce el siguiente resultado:


17 68 8

Nota:

17 >> 1 → 17 // 2 (17 piso dividido por 2 elevado a 1) → 8 (desplazarse un bit hacia la derecha es lo mismo que
dividir un entero por dos) 17 << 2 → 17 * 4 ( 17 multiplicado
por 2 elevado a 2) → 68 (desplazarse dos bits hacia la izquierda es lo mismo que multiplicar un número entero
por cuatro)
Machine Translated by Google

Y aquí está la tabla de prioridades actualizada, que contiene todos los operadores introducidos hasta ahora:
OPERADOR PRIORITARIO
1 ~, +, ­ unario
2 **

3 *, /, //, %
4 +, ­ binario
5 <<, >>
6 <, <=, >, >=
7 ==, !=
8 &
9 |
10 =, +=, ­=, *=, /=, %=, &=, ^=, |=, >>=, <<=
Machine Translated by Google

3.3 RESUMEN DE LA SECCIÓN


1. Python admite los siguientes operadores lógicos:

y → si ambos operandos son verdaderos, la condición es verdadera, por ejemplo (Verdadero y Verdadero) es Verdadero

o → si alguno de los operandos es verdadero, la condición es verdadera, por ejemplo (Verdadero o


Falso) es Verdadero

not → devuelve falso si el resultado es verdadero y devuelve verdadero si el resultado es falso, por ejemplo, no
Lo verdadero es falso.

2. Puede utilizar operadores bit a bit para manipular bits individuales de datos. Los siguientes datos de muestra:

x = 15, que es 0000 1111 en binario,

y = 16, que es 0001 0000 en binario.

se utilizará para ilustrar el significado de los operadores bit a bit en Python. Analiza lo siguiente
ejemplos:

& hace un bit a bit y, por ejemplo, x & y = 0, que es 0000 0000 en binario,

| hace un bit a bit o, por ejemplo , x | y = 31, que es 0001 1111 en binario,
˜ ˜
no hace un bit a bit, por ejemplo x = 240*, que es 1111 0000 en binario,
^
^ hace un xor bit a bit, por ejemplo x y = 31, que es 0001 1111 en binario,

>> hace un desplazamiento a la derecha bit a bit, por ejemplo y >> 1 = 8, que es 0000 1000 en binario,

<< realiza un desplazamiento bit a izquierda, por ejemplo, y << 3 = , que es 1000 0000 en binario,

* ­16 (decimal del complemento a 2 con signo) ­ lea más sobre los dos
operación complementaria .
Machine Translated by Google

3.3 EXAMEN DE SECCIÓN

Pregunta 1: ¿Cuál es el resultado del siguiente fragmento?

1 x=1
2 y=0
3
4 z = ((x == y) y (x == y)) o no(x == y) imprimir(no(z))
5
6

Pregunta 2: ¿Cuál es el resultado del siguiente fragmento?

1 x=4
2 y=1
3
4 a = x & yb = x |
5 yc = ~x # ¡difícil!
6 re = x ^ 5
7
8 mi = x >> 2 f = x
9 << 2
10

imprimir(a, b, c, d, e, f) 11 12

Controlar
Machine Translated by Google

SECCIÓN 3.4 – LISTAS


Aquí aprenderá sobre las listas de Python y cómo realizar diversas operaciones en ellas. Aprenderá
cómo indexar, actualizar y eliminar elementos de la lista, cómo realizar cortes y cómo utilizar
algunas de las funciones y métodos de lista más importantes.
Machine Translated by Google

3.4.1 ¿Por qué necesitamos listas?


Puede suceder que tengas que leer, almacenar, procesar y finalmente imprimir decenas, tal vez cientos, tal
vez incluso miles de números. ¿Entonces que? ¿Necesita crear una variable separada para cada valor? ¿Tendrás que
pasar largas horas escribiendo afirmaciones como la siguiente?

var1 = int(entrada())

var2 = int(entrada())

var3 = int(entrada())

var4 = int(entrada())

var5 = int(entrada())

var6 = int(entrada())

Si no cree que esta sea una tarea complicada, tome una hoja de papel y escriba un programa que:

lee cinco números; los

imprime en orden de menor a mayor (NB, este tipo de procesamiento se llama clasificación).

Deberías descubrir que ni siquiera tienes suficiente papel para completar la tarea.
Hasta ahora, ha aprendido a declarar variables que pueden almacenar exactamente un valor determinado a la
vez. Estas variables a veces se denominan escalares por analogía con las matemáticas. Todas las
variables que has usado hasta ahora son en realidad escalares.
Piense en lo conveniente que sería declarar una variable que pudiera almacenar más de un valor. Por ejemplo,
cien, mil o incluso diez mil. Seguiría siendo la misma variable, pero muy amplia y espaciosa. ¿Suena atractivo? Quizás,
pero ¿cómo manejaría un contenedor lleno de valores diferentes? ¿Cómo elegiría justo el que necesita?

¿Y si pudieras simplemente numerarlos? Y luego decir: dame el valor número 2; asignar el valor número 15; aumente
el valor número 10000.

Le mostraremos cómo declarar dichas variables de valores múltiples. Haremos esto con el ejemplo que
acabamos de sugerir. Escribiremos un programa que ordene una secuencia de números. No
seremos particularmente ambiciosos: asumiremos que hay exactamente cinco números.
Creemos una variable llamada números; se le asigna no solo un número, sino que se completa con una lista que consta
de cinco valores (nota: la lista comienza con un corchete abierto y termina con un corchete cerrado; el espacio entre
los corchetes se llena con cinco números separados por comas ).

números = [10, 5, 7, 2, 1]
Machine Translated by Google

Digamos lo mismo usando terminología adecuada: números es una lista que consta de cinco valores, todos
ellos números. También podemos decir que esta declaración crea una lista de longitud igual a cinco (ya que
hay cinco elementos dentro de ella).
Los elementos dentro de una lista pueden ser de diferentes tipos. Algunos de ellos pueden ser números enteros,
otros flotantes y otros pueden ser listas.
Python ha adoptado una convención que establece que los elementos de una lista siempre están numerados
comenzando desde cero. Esto significa que el elemento almacenado al principio de la lista tendrá el número
cero. Como hay cinco elementos en nuestra lista, al último de ellos se le asigna el número cuatro. No olvides esto.

Pronto te acostumbrarás y se convertirá en algo natural.


Antes de continuar con nuestra discusión, debemos afirmar lo siguiente: nuestra lista es una colección
de elementos, pero cada elemento es un escalar.
Machine Translated by Google

3.4.2 Listas de indexación


¿Cómo se cambia el valor de un elemento elegido en la lista?
Asignemos un nuevo valor de 111 al primer elemento de la lista. Lo hacemos de esta manera:

1 números = [10, 5, 7, 2, 1] print("Contenido


2 de la lista original:", números) # Impresión del contenido de la lista original.

3
4 números[0] = 111
5 print("Nuevo contenido de la lista: ", números) # Contenido de la lista actual.
6

Y ahora queremos que el valor del quinto elemento se copie en el segundo elemento . ¿Puedes adivinar cómo hacerlo?

1 números = [10, 5, 7, 2, 1] print("Contenido


2 de la lista original:", números) # Impresión del contenido de la lista original.

3
4 números[0] = 111
5 print("\nContenido de la lista anterior:", números) # Impresión del contenido de la lista anterior.

6
7 números[1] = números[4] # Copiando el valor del quinto elemento al segundo. print("Nuevo contenido de la lista:", números)
# Imprimir el
8 contenido de la lista actual.

El valor entre corchetes que selecciona un elemento de la lista se llama índice, mientras que la operación de seleccionar
un elemento de la lista se conoce como indexación.
Usaremos la función print() para imprimir el contenido de la lista cada vez que realicemos cambios. Esto nos
ayudará a seguir cada paso con más cuidado y ver qué sucede después de una modificación de lista particular.

Nota: todos los índices utilizados hasta ahora son literales. Sus valores se fijan en tiempo de ejecución,
pero cualquier expresión también puede ser el índice . Esto abre muchas posibilidades.

También podría gustarte