Un primer programa

PythonPythonBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Esta sección aborda la creación de tu primer programa, la ejecución del intérprete y algunos conceptos básicos de depuración.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python/BasicConceptsGroup -.-> python/comments("Comments") python/BasicConceptsGroup -.-> python/python_shell("Python Shell") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/ControlFlowGroup -.-> python/while_loops("While Loops") python/DataStructuresGroup -.-> python/lists("Lists") python/DataStructuresGroup -.-> python/tuples("Tuples") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") subgraph Lab Skills python/comments -.-> lab-132701{{"Un primer programa"}} python/python_shell -.-> lab-132701{{"Un primer programa"}} python/conditional_statements -.-> lab-132701{{"Un primer programa"}} python/for_loops -.-> lab-132701{{"Un primer programa"}} python/while_loops -.-> lab-132701{{"Un primer programa"}} python/lists -.-> lab-132701{{"Un primer programa"}} python/tuples -.-> lab-132701{{"Un primer programa"}} python/build_in_functions -.-> lab-132701{{"Un primer programa"}} python/standard_libraries -.-> lab-132701{{"Un primer programa"}} end

Ejecutando Python

Los programas de Python siempre se ejecutan dentro de un intérprete.

El intérprete es una aplicación "basada en consola" que normalmente se ejecuta desde una shell de comandos.

python3
Python 3.6.1 (v3.6.1:69c0db5050, Mar 21 2017, 01:21:04)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

Los programadores expertos por lo general no tienen problemas al usar el intérprete de esta manera, pero no es tan amigable para los principiantes. Es posible que estés usando un entorno que proporciona una interfaz diferente para Python. Eso está bien, pero aprender a ejecutar la terminal de Python sigue siendo una habilidad útil de conocer.

Modo interactivo

Cuando se inicia Python, se obtiene un modo interactivo donde se puede experimentar.

Si se empieza a escribir declaraciones, se ejecutarán inmediatamente. No hay un ciclo de edición/compilación/ejecución/depuración.

>>> print('hello world')
hello world
>>> 37*42
1554
>>> for i in range(5):
...     print(i)
...
0
1
2
3
4
>>>

Este llamado read-eval-print-loop (o REPL) es muy útil para la depuración y la exploración.

PARA DEJAR DE HACER: Si no se puede entender cómo interactuar con Python, detenga lo que está haciendo y averigüe cómo hacerlo. Si se está usando un IDE, puede estar oculto detrás de una opción de menú u otra ventana. Muchas partes de este curso asumen que se puede interactuar con el intérprete.

Echemos un vistazo más detenido a los elementos del REPL:

  • >>> es el indicador del intérprete para comenzar una nueva declaración.
  • ... es el indicador del intérprete para continuar una declaración. Presione Enter en una línea en blanco para terminar de escribir y ejecutar lo que ha introducido.

El indicador ... puede o no aparecer según el entorno. Para este curso, se muestra como espacios en blanco para facilitar la copia/pega de los ejemplos de código.

El subrayado _ guarda el último resultado.

>>> 37 * 42
1554
>>> _ * 2
3108
>>> _ + 50
3158
>>>

esto solo es cierto en el modo interactivo. Nunca se utiliza _ en un programa.

Creando programas

Los programas se guardan en archivos con extensión .py.

## hello.py
print('hello world')

Puedes crear un archivo hello.py en el directorio /home/labex/project utilizando tu editor de texto favorito.

Ejecutando programas

Para ejecutar un programa, ejecútalo en la terminal con el comando python. Por ejemplo, en Unix de línea de comandos:

$ python hello.py
hello world
bash %

O desde la shell de Windows:

C:\SomeFolder>hello.py
hello world

C:\SomeFolder>c:\python36\python hello.py
hello world

Nota: En Windows, es posible que necesites especificar la ruta completa al intérprete de Python, como c:\python36\python. Sin embargo, si Python se instala de la manera habitual, es posible que solo puedas escribir el nombre del programa, como hello.py.

Un programa de ejemplo

Vamos a resolver el siguiente problema:

Una mañana, sales y dejas un billete de dólar en la acera del Sears Tower en Chicago. A partir de entonces, cada día sales y dobles el número de billetes. ¿Cuánto tiempo tarda en que la pila de billetes supere la altura de la torre?

A continuación, se presenta una solución para crear un archivo sears.py en el directorio /home/labex/project:

## sears.py
bill_thickness = 0.11 * 0.001 ## Metros (0.11 mm)
sears_height = 442 ## Altura (metros)
num_bills = 1
day = 1

while num_bills * bill_thickness < sears_height:
    print(day, num_bills, num_bills * bill_thickness)
    day = day + 1
    num_bills = num_bills * 2

print('Number of days', day)
print('Number of bills', num_bills)
print('Final height', num_bills * bill_thickness)

Cuando lo ejecutas, obtienes la siguiente salida:

$ python3 sears.py
1 1 0.00011
2 2 0.00022
3 4 0.00044
4 8 0.00088
5 16 0.00176
6 32 0.00352
...
21 1048576 115.34336
22 2097152 230.68672
Number of days 23
Number of bills 4194304
Final height 461.37344

Usando este programa como guía, puedes aprender una serie de conceptos básicos importantes sobre Python.

Declaraciones

Un programa de Python es una secuencia de declaraciones:

a = 3 + 4
b = a * 2
print(b)

Cada declaración termina con un salto de línea. Las declaraciones se ejecutan una después de la otra hasta que el control llega al final del archivo.

Comentarios

Los comentarios son texto que no se ejecutará.

a = 3 + 4
## This is a comment
b = a * 2
print(b)

Los comentarios se marcan con # y se extienden hasta el final de la línea.

Variables

Una variable es un nombre para un valor. Puedes usar letras (en minúsculas y mayúsculas) del a a la z. Además del carácter subrayado _. Los números también pueden ser parte del nombre de una variable, excepto como primer carácter.

height = 442 ## válido
_height = 442 ## válido
height2 = 442 ## válido
2height = 442 ## inválido

Tipos

Las variables no necesitan ser declaradas con el tipo del valor. El tipo está asociado con el valor del lado derecho, no con el nombre de la variable.

height = 442           ## Un entero
height = 442.0         ## Punto flotante
height = 'Really tall' ## Una cadena

Python es de tipado dinámico. El "tipo" percibido de una variable puede cambiar a medida que un programa se ejecuta, dependiendo del valor actual asignado a ella.

Sensibilidad a mayúsculas y minúsculas

Python es sensible a mayúsculas y minúsculas. Las letras mayúsculas y minúsculas se consideran letras diferentes. Todas estas son variables diferentes:

name = 'Jake'
Name = 'Elwood'
NAME = 'Guido'

Las declaraciones de lenguaje siempre son en minúsculas.

while x < 0:   ## OK
WHILE x < 0:   ## ERROR

Bucle

La instrucción while ejecuta un bucle.

while num_bills * bill_thickness < sears_height:
    print(day, num_bills, num_bills * bill_thickness)
    day = day + 1
    num_bills = num_bills * 2

print('Number of days', day)

Las instrucciones indentadas debajo de while se ejecutarán siempre que la expresión después de while sea true.

Sangría

La sangría se utiliza para denotar grupos de instrucciones que van juntas. Considere el ejemplo anterior:

while num_bills * bill_thickness < sears_height:
    print(day, num_bills, num_bills * bill_thickness)
    day = day + 1
    num_bills = num_bills * 2

print('Number of days', day)

La sangría agrupa las siguientes instrucciones juntas como las operaciones que se repiten:

    print(day, num_bills, num_bills * bill_thickness)
    day = day + 1
    num_bills = num_bills * 2

Debido a que la instrucción print() al final no está sangrada, no pertenece al bucle. La línea en blanco es solo para la legibilidad. No afecta la ejecución.

Mejores prácticas de sangría

  • Utilice espacios en lugar de tabulaciones.
  • Utilice 4 espacios por nivel.
  • Utilice un editor compatible con Python.

La única exigencia de Python es que la sangría dentro del mismo bloque sea consistente. Por ejemplo, esto es un error:

while num_bills * bill_thickness < sears_height:
    print(day, num_bills, num_bills * bill_thickness)
        day = day + 1 ## ERROR
    num_bills = num_bills * 2

Condicionales

La instrucción if se utiliza para ejecutar una condición:

if a > b:
    print('Computer says no')
else:
    print('Computer says yes')

Puede comprobar múltiples condiciones agregando comprobaciones adicionales usando elif.

if a > b:
    print('Computer says no')
elif a == b:
    print('Computer says yes')
else:
    print('Computer says maybe')

Imprimiendo

La función print produce una sola línea de texto con los valores pasados.

print('Hello world!') ## Imprime el texto 'Hello world!'

Puedes usar variables. El texto impreso será el valor de la variable, no el nombre.

x = 100
print(x) ## Imprime el texto '100'

Si pasas más de un valor a print, se separan por espacios.

name = 'Jake'
print('My name is', name) ## Imprime el texto 'My name is Jake'

print() siempre coloca un salto de línea al final.

print('Hello')
print('My name is', 'Jake')

Esto imprime:

Hello
My name is Jake

El salto de línea extra se puede suprimir:

print('Hello', end=' ')
print('My name is', 'Jake')

Este código ahora imprimirá:

Hello My name is Jake

Entrada del usuario

Para leer una línea de entrada de usuario tecleada, utiliza la función input():

name = input('Enter your name:')
print('Your name is', name)

input imprime un mensaje de solicitud al usuario y devuelve su respuesta. Esto es útil para pequeños programas, ejercicios de aprendizaje o depuración simple. No se utiliza ampliamente en programas reales.

Declaración pass

A veces necesitas especificar un bloque de código vacío. La palabra clave pass se utiliza para ello.

if a > b:
    pass
else:
    print('Computer says false')

Esta también se llama una declaración "no-op". No hace nada. Sirve como un marcador de posición para declaraciones, posiblemente para agregarlas más adelante.

Este es el primer conjunto de ejercicios donde necesitas crear archivos de Python y ejecutarlos. A partir de este momento, se asume que estás editando archivos en el directorio ~/project/. Para ayudarte a localizar el lugar adecuado, se han creado una serie de archivos de inicio vacíos con los nombres de archivo adecuados. Busca el archivo bounce.py que se utiliza en el primer ejercicio.

Ejercicio 1.5: La Pelota Rebotante

Una pelota de goma se deja caer desde una altura de 100 metros y cada vez que golpea el suelo, rebota hasta 3/5 de la altura desde la que cayó. Escribe un programa bounce.py que imprima una tabla mostrando la altura de las primeras 10 rebotes.

Aquí está una solución:

## bounce.py

height = 100
bounce = 1
while bounce <= 10:
    height = height * (3 / 5)
    print(bounce, round(height, 4))
    bounce += 1

Tu programa debe crear una tabla que se vea más o menos así:

1 60.0
2 36.0
3 21.599999999999998
4 12.959999999999999
5 7.775999999999999
6 4.6655999999999995
7 2.7993599999999996
8 1.6796159999999998
9 1.0077695999999998
10 0.6046617599999998

Nota: Puedes limpiar un poco la salida si utilizas la función round(). Intenta usarlo para redondear la salida a 4 dígitos.

1 60.0
2 36.0
3 21.6
4 12.96
5 7.776
6 4.6656
7 2.7994
8 1.6796
9 1.0078
10 0.6047

Ejercicio 1.6: Depuración

El siguiente fragmento de código contiene código del problema de la torre Sears. También tiene un error en él.

## sears.py

bill_thickness = 0.11 * 0.001    ## Metros (0.11 mm)
sears_height   = 442             ## Altura (metros)
num_bills      = 1
day            = 1

while num_bills * bill_thickness < sears_height:
    print(day, num_bills, num_bills * bill_thickness)
    day = days + 1
    num_bills = num_bills * 2

print('Number of days', day)
print('Number of bills', num_bills)
print('Final height', num_bills * bill_thickness)

Copie y pegue el código que aparece arriba en un nuevo programa llamado sears.py. Cuando ejecute el código, obtendrá un mensaje de error que hará que el programa se detenga así:

Traceback (most recent call last):
  File "sears.py", line 10, in <module>
    day = days + 1
NameError: name 'days' is not defined

Leer los mensajes de error es una parte importante del código de Python. Si su programa se detiene, la última línea del mensaje de seguimiento es la razón real por la que el programa se detuvo. Por encima de eso, debería ver un fragmento de código fuente y luego un nombre de archivo identificador y un número de línea.

  • ¿Qué línea es el error?
  • ¿Cuál es el error?
  • Corrija el error
  • Ejecute el programa correctamente

Resumen

¡Felicidades! Has completado el laboratorio de A First Program. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.