Python Essentials 1. The Official OpenEDG Python Institute Beginners Course 2023-Páginas-1
Python Essentials 1. The Official OpenEDG Python Institute Beginners Course 2023-Páginas-1
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
por
Publicado por primera vez en EE. UU. en 2023 por el Open Education and Development Group
ISBN: 9798987762202
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
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.
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
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
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
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
MÓDULO 4: FUNCIONES, TUPLAS, DICCIONARIOS, EXCEPCIONES Y PROCESAMIENTO DE DATOS SECCIÓN 4.1 – FUNCIONES
4.1.1 ¿Por qué
necesitamos funciones?
APÉNDICES
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.
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:
Programa de estudios
programación, aprende Python desde cero y prepárate para la certificación PCEP (Certified EntryLevel Python
Programmer) Python Essentials 1 está alineado con la PCEP
( Certificación Certified EntryLevel 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
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:
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.
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.
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).
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.
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?
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 "leercomprobarejecutar" 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
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.
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
¿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
en las que se creó Python son un poco desconcertantes. Según Guido van Rossum:
Objetivos de 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.
¿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.
tiene dos competidores directos, con propiedades y predisposiciones comparables. Estos son:
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.
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.
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
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
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:
Todos los usuarios que no sean Linux pueden descargar una copia en https://www.python.org/downloads/.
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
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...")
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
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.
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.
imprimir("Hisssssss...")
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 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
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.
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.
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
Un efecto;
un resultado.
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!")
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?
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
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
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
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
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.
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
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
Como puede ver, aparecen dos nuevas líneas en la canción infantil, en los lugares donde se ha utilizado \n.
imprimir("\")
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
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
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).
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.
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.
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.
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
El argumento de palabra clave que puede hacer esto se llama sep (como en separador).
Mire el siguiente código y ejecútelo.
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í.
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
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
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:
Código
Solución de muestra
Machine Translated by Google
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
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
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.
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
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:
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.
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 (cerox). 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.
4
4.0
Puedes pensar que son exactamente iguales, pero Python los ve de una manera completamente diferente. 4 es un
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:
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 1034.
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
print(0.0000000000000000000001)
este es el resultado:
1e22
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
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á:
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.
¿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
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 (18151864), 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.
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?
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. 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
Controlar
Machine Translated by Google
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
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:
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.
1 imprimir(6/3 )
2 imprimir (6/3 . )
3 imprimir(6./3 ) imprimir
4 ( 6./3. )
5
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.
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.
1 imprimir(6 // 4)
2 imprimir(6. // 4)
3
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.
1 imprimir(14 % 4)
2
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 :
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
1 imprimir(4 – 4)
2 imprimir(4. – 8)
3 imprimir(1.1)
4
Machine Translated by Google
1 imprimir(+2)
2
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.
1 imprimir(9 % 6 % 2)
2
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.
1 imprimir(2 ** 2 ** 3)
2
Machine Translated by Google
2 ** 2 → 4; 4 ** 3 → 64
2 ** 3 → 8; 2**8 → 256
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
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:
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:
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
Controlar
Machine Translated by Google
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;
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
_
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 :
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
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
El primero de ellos crea una variable llamada var y le asigna un literal con un valor entero igual a 1.
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
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
¿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
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.
1 var = 100
2 var = 200 + 300 imprimir(var)
3
4
Controlar
Machine Translated by Google
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
Solución de muestra
Machine Translated by Google
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
yo = yo + 2 * j yo += 2 * j
var=var/2 var/= 2
rem = rem % 10 % restante = 10
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
Solución de muestra
Machine Translated by Google
Entrada de muestra
x=0
x=1
x = 1
Salida de muestra
y = 1,0 y =
3,0 y = 9,0
Código
Solución de muestra
Machine Translated by Google
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
1 var = 2 var =
2 3 imprimir(var)
3
4
3
2
mi_var
metro
101
averylongnombredevariable
m101
metro 101
Del
del
1 a = '1' b =
2 "1" imprimir(a
3 + b)
4
11
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
Si desea un comentario que abarque varias líneas, debe colocar un hash delante de todas ellas.
Como aquí:
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
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:
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
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
1 # imprimir("Cadena #1")
2 imprimir("Cadena #2")
3
1 # Esta es una
2 línea múltiple
3 comentario. #
4 imprimir("¡Hola!")
5
Controlar
Machine Translated by Google
una función completamente nueva, que parece ser un reflejo de la antigua función print() .
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:
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.
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.
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.
2.6.4 La función input() – operaciones prohibidas Mire el siguiente código. Ejecútelo, ingrese
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?
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.
2.6.6 Más sobre input() y conversión de tipos Tener un equipo formado por el trío
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:
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.
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:
"James" * 3 da "JamesJamesJames"
Machine Translated by Google
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:
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
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.
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.
Código
Pista
Solución de muestra
Machine Translated by Google
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
Solución de muestra
Machine Translated by Google
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
Pista
Solución de muestra
Machine Translated by Google
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:
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
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:
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 my_input = input("Ingrese algo: ") # Ejemplo de entrada: hola print(my_input * 3) # Salida esperada:
2 holaholahola
3
Machine Translated by Google
Controlar
Machine Translated by Google
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
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
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?
imprimir(var != 0)
imprimir(var != 0)
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
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
OPERADOR PRIORITARIO
1 +, unario
2 **
3 *, /, //, %
4 +, binario
5 <, <=, >, >=
6 ==, !=
Machine Translated by Google
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
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
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.
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.
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
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:
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.
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 ifelse :
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 ifelse es la siguiente:
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
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
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
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
Ejemplo 1:
Comenzaremos con el caso más simple: cómo identificar el mayor de dos números:
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:
Nota: si alguna de las ramas ifelifelse 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.
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
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.
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.
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:
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
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:
Solución de muestra
Machine Translated by Google
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.
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.
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
Código
Solución de muestra
Machine Translated by Google
Desde la introducción del calendario gregoriano (en 1582), se utiliza la siguiente regla para
determinar el tipo de año:
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:
Código
Solución de muestra
Machine Translated by Google
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
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:
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
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.
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:
1 x = 10 si x
2 > 5: # condición uno print("x es mayor que 5")
3 # Ejecutado si la condición uno es
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.
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
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
y = 10
z=8
imprimir(x > y)
imprimir(y > z)
imprimir(x > z)
imprimir((y – 5) == x)
x, y, z = z, y, x
imprimir(x > z)
imprimir((y – 5) == x)
si x == 10:
imprimir(x == 10)
si x > 5:
imprimir(x > 5)
si x < 10:
imprimir("de lo contrario")
si x == 1:
imprimir("uno")
elif x == "1":
Machine Translated by Google
si int(x) > 1:
imprimir("dos")
imprimir("tres")
demás:
imprimir("cuatro")
si int(x) == 1:
imprimir("cinco")
demás:
imprimir("seis")
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
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
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
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 CtrlC (o CtrlBreak 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:
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:.
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
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
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:
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
La invocación de la función range() puede estar equipada con dos argumentos, no solo uno:
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
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.
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.
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
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".
Pista
Solución de muestra
Machine Translated by Google
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.
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.
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
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 .
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
si contador: 15
dieciséis
print("El número más grande es", número_mayor) else: 17
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
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
Su programa debe:
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
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
Pista
Solución de muestra
Machine Translated by Google
un bucle for ;
el concepto de ejecución condicional (ifelifelse) la declaración de
continuación .
Su programa debe:
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
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
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
1 i = 111 para
2 i en el rango(2, 1): print(i) más:
3
4
5 imprimir("si no:", i)
6
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 .
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
Pista
Solución de muestra
Machine Translated by Google
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
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:
Utilice continuar para omitir la iteración actual y continuar con la siguiente iteración, por ejemplo:
Machine Translated by Google
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
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
Código de ejemplo:
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
# 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.
imprimir(n + 1)
norte= 1
Machine Translated by Google
demás:
imprimir(n)
rango(4)
para número en n:
imprimir(núm – 1)
demás:
imprimir(núm)
imprimir(yo)
Controlar
Machine Translated by Google
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 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
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
# Ejemplo 1:
imprimir(var > 0)
imprimir (no (var <= 0))
# Ejemplo 2:
imprimir(var != 0)
imprimir(no (var == 0))
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
j = no no yo
Machine Translated by Google
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
0 1
1 0
Hagámoslo más fácil:
Agreguemos una observación importante: los argumentos de estos operadores deben ser números enteros; debemos
No utilice flotadores aquí.
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
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
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
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
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:
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
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
registro_bandera ^= la_máscara
Machine Translated by Google
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.
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
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
y → si ambos operandos son verdaderos, la condición es verdadera, por ejemplo (Verdadero y Verdadero) 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:
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
1 x=1
2 y=0
3
4 z = ((x == y) y (x == y)) o no(x == y) imprimir(no(z))
5
6
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
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:
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.
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?
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.