0% encontró este documento útil (0 votos)
14 vistas53 páginas

Tipos de Datos en Programación de Salud

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

Tipos de Datos en Programación de Salud

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

Material complementario

Tipos de datos
Código 03564

Preparada por

LIC. Marvin Suárez Benson


EQUIPO DE T RABAJO

Encargado de carrera

Mag. Patricia Sagot Carvajal

Este material complementario ha sido

confeccionado en la Cátedra Registros de Cátedra Registros de Salud

Salud de la Escuela de Ciencias Exactas y


Lic. Moisés Méndez Coto
Naturales en el año 2024, para uso exclusivo

del estudiantado de la asignatura de Lógica Y


Autor del material complementario de estudio
Algoritmos para Sistemas de Información en

Salud (código 03564), que se imparte en la


Lic. Marvin Suárez Benson
Carrera de Sistemas de Información en Salud

de la Universidad Estatal a Distancia.

Este es un material no comercial y se encuentra

prohibida su venta.

ii
Presentación

Por medio del presente documento se procura que la persona estudiante


adquiera conocimiento a nivel teórico y práctico, relacionado con las normativas

vigentes que giran a nivel país en los sistemas de información, además de los
diferentes reglamentos, leyes y procesos que los mismos las envuelven, se pretende
brindar un enfoque que permita obtener una serie de conocimientos sobre los

diferentes marcos de trabajos, regulaciones de datos y los respaldos que las leyes en
nuestro país nos respaldan, conocer cual entidad es la encargada de estas
regulaciones y velar por el cumplimiento relacionado a la protección de los datos de

los ciudadanos.
Es de suma importancia contar con claridad de cuáles son los marcos de

normalización para los sistemas de información en salud, los más utilizados y una
serie de características que se deben de tomar en cuenta al momento del diseño de
un sistema de información y la importancia de utilizar estándares en el desarrollo,

para futuras integraciones entre diferentes sistemas o bien la actualización de estos


y a su vez las arquitecturas más usadas para sistemas de información en salud.
Importante contar con conocimiento sobre las diferencias entre los manuales

instructivos y procedimientos de sistemas de información en salud ya que ambos


son material didáctico de suma importancia para los sistemas de información, con
la diferencia que ambos son dirigidos a diferentes involucrados tanto en el uso como

el desarrollo de los sistemas de información.


Aplicar los conocimientos teórico-prácticos de la normalización de los
sistemas de información en salud desarrollando estrategias de gestión de la

información que integre políticas, estándares, procedimientos y métodos en las


organizaciones de tecnología-salud de forma ética y moral.

4
Contenido

Presentación ..................................................................................................................... 4

Unidad 2: Tipos de datos ............................................................................................... 9

2.1 Tipos de datos en programación ..................................................................................... 9

2.2 Introducción a las funciones ..........................................................................................12

2.2.1 Funciones para convertir tipos de datos .......................................................................14

2.2.1 Funciones matemáticas .............................................................................................15

2.2.3 Función para generación de números aleatorios ............................................................16

2.2.4 Repaso de operadores matemáticos ............................................................................17

2.3 Creación de funciones ..................................................................................................20

2.3.1 Creación de variables dentro de funciones....................................................................22

2.4 Uso del estatuto “return” .............................................................................................24

2.5 Uso de la función Lambda .............................................................................................26

2.6 Aspectos a considerar el desarrollo de un programa .........................................................27

2.7 Iteración.....................................................................................................................30

2.7.1 Actualizando una variable ..........................................................................................30

2.7.2 La sentencia “while”..................................................................................................31

2.7.3 Bucles infinitos y estatuto “break” ...............................................................................32

2.7.4 Finalizando un bucle con el estatuto “continue” ............................................................35

2.7.5 Utilización bucles con el estatuto “for”.........................................................................36

2.7.6 Diseñando un bucle con “for” o “while” .......................................................................37

2.8 Secuencias..................................................................................................................40

2.8.1 Cadenas...................................................................................................................40

2.8.2 Recorriendo una cadena mediante un bucle ..............................................................41

5
2.8.3 Partiendo una cadena ............................................................................................42

2.8.4 Las cadenas son inmutables ................................................................................43

2.8.5 Iterando y contando ..............................................................................................44

2.8.5 El operador “in” ....................................................................................................44

2.9 Glosario de términos ....................................................................................................45

2.10 Ejercicios de autoevaluación........................................................................................46

6
Iconografía

Para facilitar la lectura de este material de apoyo, se han utilizado íconos a lo largo del texto

con el propósito de destacar un contenido en específico. A continuación, se presenta cada

uno y se indica su significado:

Actividad audiovisual Atención Concepto

Propone actividades Se utiliza para llamar su Se emplea para definir un

relacionadas con la atención sobre algún punto concepto complejo o que el

exposición de material de singular peso para su estudiante debe dominar

audiovisual proceso de aprendizaje para comprender la lectura.

complementario

7
Al finalizar esta unidad de aprendizaje, la persona estudiante tendrá los

siguientes resultados de aprendizaje:

1. Describe diferentes tipos de datos utilizados en programación


explicando sus características y rangos de valores que aseguran la

eficiencia en la producción de datos en las tareas del campo técnico-


laboral en un contexto global.

2. Interpreta cómo se seleccionan y declaran variables según el tipo de


dato en la implementación de estructuras y programas, explicando
la importancia en la asignación de un tipo de dato correcto para la

manipulación de variables con información pertinente, confiable y


válida en un contexto global.
3. Utiliza tipos de datos adecuados para la declaración de variables en

la implementación de estructuras y programas, para la resolución de


operaciones y manipulaciones en un programa para la eficiencia en
las tareas del campo técnico-laboral en un contexto global.

4. Evalúa críticamente el uso y la selección de tipos de datos en la


implementación de estructuras y programas para optimizar la
manipulación de variables demostrando pensamiento crítico y

actitud de indagación para el planteamiento y la resolución de


problemas en un contexto global.

8
Unidad 2: Tipos de datos

2.1 Tipos de datos en programación

En programación Python, existen varios tipos de datos básicos, por ejemplo:


el tipo entero (int), el tipo real (float), el tipo cadena o string (str), el tipo lógico (bool)
y estos tipos de datos básicos se construyen a partir de estructuras de datos más

pequeñas donde estas estructuras de datos (salvo el tipo None) almacenan


información.

Al operar con ellos, se generarán nuevas estructuras de datos con base a las
antiguas: por lo tanto, las estructuras de datos también se pueden denominar valores
y a las operaciones entre ellas también se les puede denominar valores. Las

estructuras de datos se llaman valores cuando se les denomina únicamente para


indicar su valor concreto, en cambio, en la mayoría de los casos se está refiriendo a
la forma en la que se han almacenado.

Conocer los tipos de datos, también llamados estructuras, nos permitirá


comprender con mayor precisión cómo se almacena la información de un programa
y cómo se comporta un programa al operar con esos datos. Además, el conocimiento

de estos conceptos nos servirá para aprender con mayor facilidad nuevos lenguajes
de programación, con independencia del lenguaje de programación que utilicemos
en estos apuntes.

Los aspectos que nos enfocarán en un lenguaje de programación son los


detalles concretos, como la lectura por teclado, la escritura en pantalla, la ejecución

de programas, las peculiaridades de la biblioteca estándar y las funciones y módulos


con los que vamos a trabajar.
A continuación, explicamos el uso básico de los tipos de datos:

9
• Bool: Se utiliza para representar un valor de "verdadero" o "falso". Las

operaciones lógicas admiten las siguientes "operaciones": or, and, not.


• Cadenas de texto o caracteres: Son secuencias de caracteres (letras,
números, especiales, etc.).

• Números: Python permite trabajar con tres tipos de números o valores


numéricos: enteros, flotantes y complejos. Las operaciones numéricas

admiten los siguientes operadores numéricos: +, -, *, /, //, ** y %.


• Variables y tipo de dato: Una variable es un espacio o lugar en la memoria
de la computadora que se utiliza para almacenar temporalmente el valor

de una expresión o de un dato. La variable es un "palabra" o "nombre" que


nos permite acceder a un dato almacenado, sin tener que saber en qué
lugar exactamente se encuentra guardado este dato. A diferencia de otros

lenguajes de programación, en Python, no es necesario "declarar" el tipo


de dato que almacenará la variable para poder utilizarla. Python permite
que el tipo de dato sea definido de "manera dinámica" en tiempo de

ejecución.
Es importante saber que en el lenguaje de programación Python, como en
cualquier lenguaje de programación, existen los tipos de datos simples (números,

cadenas de caracteres y booleanos) y los tipos de datos compuestos (listas, tuplas y


diccionarios).
Una variable es un espacio o lugar en la memoria de la computadora que se

utiliza para almacenar temporalmente el valor de una expresión o de un dato. La


variable es un "palabra" o "nombre" que nos permite acceder a un dato almacenado,

sin tener que saber en qué lugar exactamente se encuentra guardado este dato. A
diferencia de otros lenguajes de programación, en Python, no es necesario "declarar"

10
el tipo de dato que almacenará la variable para poder utilizarla. Python permite que

el tipo de dato sea definido de "manera dinámica" en tiempo de ejecución.

A continuación, se describen los tipos de datos en Python y mediante un

ejemplo de cómo podemos declararlo y utilizarlo:

Tipos de datos en Python

Ejemplo Tipo de dato Descripción

x = "Soy estudiante de SIS" str String Cadena de caracteres

x= 20 int Entero Número entero

x = 20.5 float Flotante Número flotante

x= 1j complex Complejo Número complejo

x = ["apple", "banana", "cherry"] list Lista Lista que puede contener


elementos de diferentes

tipos de datos

x = ("apple", "banana", "cherry") tuple Tupla Tupla que puede contener


elementos de diferentes
tipos de datos

x = {"name" : "John", "age" : 36} dict Diccionario Permite registrar elementos

de diferentes tipos de datos


mediante especificando un
nombre de atributo

x = {"apple", "banana", "cherry"} set Conjunto Permite registrar elementos

de diferentes tipos de datos

11
Consideremos que los programas funcionan con datos que pueden ser letras

o números. Ahora bien, dependiendo del valor de un dato así serán las operaciones
con que se manipulen estos datos.

Por otra parte, los valores pueden ser de diferentes tipos: los hay de tipo

entero, como el número 20, o de tipo hilera o cadena de caracteres (string), como la
expresión "Soy estudiante de SIS" como lo vemos en la tabla anterior. Estos últimos

se reconocen porque los caracteres aparecen entre comillas. También los hay de
tipo real o flotante y de tipo lógico. Un valor de tipo real o flotante tiene dos partes:
una entera y una decimal y un valor de tipo lógico tiene sólo uno de dos valores

"True" y "False".

2.2 Introducción a las funciones

Desde el contexto de programación, una función es una secuencia de


sentencias que realizan una operación y que reciben un nombre. Cuando se define

una función, se especifica el nombre y la secuencia de sentencias. Más adelante, se


puede “llamar” a la función por ese nombre. Ya hemos visto un ejemplo de una
llamada a una función:

>>> type(32)
<class 'int'>
El nombre de la función es type. La expresión entre paréntesis recibe el

nombre de argumento de la función. El argumento es un valor o variable que se pasa


a la función como parámetro de entrada. El resultado de la función type es el tipo
del argumento. Es habitual decir que una función “toma” (o recibe) un argumento

y “retorna” (o devuelve) un resultado. El resultado se llama valor de retorno.

12
Python proporciona un número importante de funciones internas, que

pueden ser usadas sin necesidad de tener que definirlas previamente. Los
creadores de Python han escrito un conjunto de funciones para resolver problemas
comunes y las han incluido en Python para que las podamos utilizar.

Las funciones “max” y “min” nos darán respectivamente el valor mayor y


menor de una lista:

>>> max('¡Hola, mundo!')


’u’
>>> min('¡Hola, mundo!')
’’
>>>

La función max nos dice cuál es el “carácter más grande” de la cadena (que
resulta ser la letra “u”), mientras que la función min nos muestra el carácter más
pequeño (que en ese caso es un espacio).

Otra función interna muy común es len, que nos dice cuántos elementos hay
en su argumento. Si el argumento de len es una cadena, nos devuelve el número de
caracteres que hay en la cadena.

>>> len('Hola, mundo')


11

Estas funciones no se limitan a buscar en cadenas. Pueden operar con


cualquier conjunto de valores, como veremos en los siguientes capítulos.

Se deben tratar los nombres de las funciones internas como si fueran

palabras reservadas (es decir, evita usar “max” como nombre para una variable).

13
2.2.1 Funciones para convertir tipos de datos

En programación Python proporciona funciones internas que


convierten valores de un tipo a otro. La función int() toma cualquier valor y
lo convierte en un entero, si puede, o se queja si no puede:

• La función int() toma cualquier valor y lo convierte en un


entero, si puede, o se queja si no puede:

>>> int('32') 32
>>> int('Hola')

ValueError: invalid literal for int() with base 10: 'Hola'

int() puede convertir valores en punto flotante a enteros, pero no los


redondea; simplemente corta y descarta la parte decimal:

>>> int(3.99999)
3
>>> int(-2.3)
-2

• La función float() convierte enteros y cadenas en números de


punto flotante:

>>> float(32) 32.0


>>> float('3.14159') 3.14159

• Finalmente, la función str() convierte su argumento en una


cadena:

14
>>> str(32)
’32’
>>> str(3.14159)
’3.14159’

2.2.1 Funciones matemáticas

Python tiene un módulo matemático (math), que proporciona la


mayoría de las funciones matemáticas habituales. Antes de que podamos

utilizar el módulo, debemos importarlo:

>>> import math

Esta sentencia crea un objeto módulo llamado math. Si se imprime el


objeto módulo, se obtiene cierta información sobre él:

>>> print(math)
<module 'math' (built-in)>

El objeto módulo contiene las funciones y variables definidas en el

módulo. Para acceder a una de esas funciones, es necesario especificar el


nombre del módulo y el nombre de la función, separados por un punto (“.”)

>>> relacion = int_senal / int_ruido


>>> decibelios = 10 * math.log10(relacion)

>>> radianes = 0.7


>>> altura = math.sin(radianes)

El primer ejemplo calcula el logaritmo en base 10 de la relación señal


y ruido. El módulo math también proporciona una función llamada log que
calcula logaritmos en base e.

15
El segundo ejemplo calcula el seno de la variable radianes. El nombre

de la variable es una pista de que sin y las otras funciones trigonométricas


(cos, tan, etc.) toman argumentos en radianes. Para convertir de grados a
radianes, hay que dividir por 360 y multiplicar por 2π:

>>> grados = 45
>>> radianes = grados / 360.0 * 2 * math.pi
>>> math.sin(radianes)

0.7071067811865476

La expresión math.pi toma la variable pi del módulo math. El valor


de esa variable es una aproximación de π, con una precisión de unos 15

dígitos.

Si sabes de trigonometría, puedes comprobar el resultado anterior,


comparándolo con la raíz cuadrada de dos dividida por dos:

>>> math.sqrt(2) / 2.0

0.7071067811865476

2.2.3 Función para generación de números aleatorios


Los números aleatorios en programación no son verdaderamente

aleatorios, ya que son generados por una operación determinista, pero si


sólo nos fijamos en los números resulta casi imposible distinguirlos de los
aleatorios de verdad.

En Python el módulo random proporciona funciones que generan


números pseudoaleatorios (a los que simplemente llamaremos “aleatorios”
de ahora en adelante).

16
La función random devuelve un número flotante aleatorio entre 0.0 y

1.0 (incluyendo 0.0, pero no 1.0). Cada vez que se llama a random, se obtiene
el número siguiente de una larga serie. Para ver un ejemplo, ejecuta este
bucle:

import random
for i in range(10):
x = random.random()
print(x)

Este programa produce la siguiente lista de 10 números aleatorios

entre 0.0 y hasta (pero no incluyendo) 1.0.


0.8727446792654728
0.4598556497960913
0.4048473074742627
0.2550815487809597
0.03705375356236451
0.36325978550465887
0.9446298521712144
0.7254891408627904
0.4068525467493834
0.9336288569173679

2.2.4 Repaso de operadores matemáticos


Los operadores matemáticos son signos especiales que representan
cálculos como la suma y la multiplicación. Los valores a los que se aplican

estos operadores se conocen como operandos. Cuando el nombre de una


variable aparece en el lugar de un operando, este debe ser reemplazado por

un valor antes de realizar la operación.

La siguiente tabla resume los operadores matemáticos de Python:

17
Operación Resultado Operación Resultado
x+z suma de x y z x-z diferencia de x y z
x*z producto x y z x/z cociente x y z
x // z cociente entero x y z x ** z x a la potencia de z
x%z residuo x y z = -x x negado

Los símbolos +, -, /, y el uso de paréntesis para agrupar tienen el mismo


significado en Python que en matemática. El asterisco (*) es el símbolo de la
multiplicación, "//" es el símbolo de la división entera y dos asteriscos ( ** ) es el

símbolo de la exponenciación.

Un operador muy útil en operaciones matemáticas es el llamado módulo,


cuyo símbolo en Python es "%". Este operador permite obtener el residuo de dividir

el primer operando entre el segundo.

En el ejemplo siguiente se utiliza el operador // para saber el resultado entero

de dividir 7 entre 3. En el ejemplo con el operador % se desea averiguar si el número


7 es divisible entre 3. Si el resultado es 0, sí es divisible (en este caso no lo es, pues el
resultado es 1).

>>> cociente = 7 // 3
print (cociente)
2
>>> residuo = 7 % 3
>>> print (residuo)
1

Por otra parte, recordemos que las expresiones son una combinación de
valores, variables y operadores. Cuando se coloca una expresión en la línea de

comandos, el intérprete la evalúa y muestra el resultado. Evaluar una expresión no


es lo mismo que imprimir un valor. Un ejemplo de una expresión es 2 + 3

18
Como se aprecia en los siguientes ejemplos, cuando Python despliega el valor

de una expresión, usa el mismo formato que se usa para ingresar un valor. Cuando
se introduce una cadena, esta debe ir entre comillas. La función print despliega el
valor de la expresión, que en este caso es el contenido de la cadena.

>>> n=2
>>> n
2
>>>1+1
2
>>> 17
17
>>> mensaje = "Hola"
>>> print (mensaje)
Hola

Los lenguajes de programación pueden tomar pequeños bloques de


instrucciones y unirlas (componerlos) en una nueva. Por ejemplo, multiplicar, sumar

e imprimir números, son dos instrucciones que se pueden componer en una sola
instrucción.

>>> min=30

>>> hora = 12

>>> print ("Núm minutos:", hora*60+min)

Núm minutos: 750

>>> porcentaje = (min * 100) / 60

>>> print (17 +3, porcentaje)

20 50.0

19
La siguiente composición es ilegal porque al lado izquierdo de un estatuto de

asignación sólo puede ir el nombre de una variable, y no una expresión:

>>> min+1=hora
SyntaxError: can't assign to operator (<pyshell#55>, line 1)
>>>

Cuando en una expresión aparece más de un operador, el orden de


evaluación depende de las reglas de precedencia. En Python, las operaciones
matemáticas siguen las mismas reglas de precedencia que se aplican en matemáticas

(de izquierda a derecha). Por ejemplo, "2 *3-1" es igual a 5; "2/3-1" es igual a -1 y no
a 1.

2.3 Creación de funciones

Además de permitir usar funciones que ya se habían creado


previamente, Python permite crear nuevas funciones con el fin de resolver
problemas particulares.

Una función debe estar definida antes de usarse. Esta operación se


especifica mediante una definición de función. La sintaxis para definir una
función es la siguiente.

def nombreFuncion (lista_parametros):


…..estatutos

En Python, las funciones, lo mismo que las variables, deben tener


nombres válidos. Los estatutos que se encuentran dentro de la función deben

ir identados (tabulados) desde el margen izquierdo. La tabulación le indica


al intérprete cuál instrucción pertenece a una función y cuál no.

20
En el ejemplo siguiente se define una función llamada imprime, que

recibe un parámetro llamado mensaje. Python diferencia las instrucciones


de la función imprime de las del programa principal, gracias a la tabulación.
De esta forma, la función print que se encuentra dentro de la función, debe

ir tabulada. Luego, en el programa principal, se ejecuta dos veces la función


imprime con diferentes valores.

# Función que recibe un mensaje y lo despliega en pantalla


def imprime (mensaje):
print (mensaje)
# Programa principal
imprime ("Primer línea!")
imprime ("Segunda línea!")

Antes de escribir una función hay que tomar varias decisiones:

1. ¿Qué nombre ponerle? Debe ser un nombre que tenga sentido y que
describa el propósito de la función.

2. ¿Qué valor o valores se le deberán dar a la función para que haga su


trabajo?
3. ¿Qué deberá hacer la función? ¿Cuál es su propósito?

4. ¿Qué valor deberá devolver la función? Se debe considerar el tipo y


el valor que debe devolver, una vez hecho su trabajo.

Es importante considerar que el orden en que se ejecutan los estatutos


se conoce como flujo de ejecución. La ejecución siempre inicia con la primera
instrucción del programa que no esté tabulada. Las instrucciones se ejecutan,

una a la vez, de arriba hacia abajo. La definición de funciones no altera el


flujo de ejecución de un programa.

21
Las funciones solo se ejecutan cuando son llamadas en una

instrucción. Estas llamadas son como desvíos dentro del flujo de ejecución.
En estos casos, en lugar de ejecutar la siguiente instrucción, el flujo salta a la
primera línea de la función invocada, ejecuta todos sus estatutos y luego

regresa a la siguiente instrucción desde donde fue invocada.

2.3.1 Creación de variables dentro de funciones

Una variable local es aquella que se crea dentro de una función, que existe

solamente dentro de esa función y que no podrá ser usada fuera de ella. Los
parámetros se tratan como variables locales:

# función que recibe dos números y los suma

def suma (n1, n2):


resultado = n1 + n2
imprime (resultado)

# función que recibe un mensaje y lo despliega

def imprime (mensaje):


print (mensaje)

# Programa principal

num1=2
num2=3
suma (num1, num2)
imprime (resultado)

En el ejemplo anterior vemos cómo la función suma toma dos argumentos,


los suma y luego invoca la función imprime para mostrar el resultado. Cuando la

22
función suma finaliza su ejecución, las variables resultado, n1 y n2 se destruyen. Si

se tratan de usar en el programa principal, se generará el siguiente error:

Traceback (most recent call last):


line 17, in <module> print (resultado)
NameError: name "resultado" is not defined

Una variable global es aquella que se crea utilizando la palabra clave global a
la hora de inicializarla. A diferencia de una variable local, la variable global se

conoce en todo el programa, y puede ser usada en cualquier parte de este.

# Ejemplo A: función que crea una variable local y la imprime


def func1 ():
a=4
print (a)

global a
a=1
func1 ()
print (a)

#Ejemplo B: función que crea una variable global y la imprime


def func1 ():
global a
a=4
print (a)
a=1
func1 ()
print (a)

En el ejemplo “A” se crean dos variables de nombre a, una en la función de


nombre func1, y otra variable global, con el mismo nombre. La variable global

almacena el valor de 1 y la local el valor de 4. El resultado de ejecutar las


instrucciones es 4 y 1.

23
En el ejemplo “B” se crea una sola variable de nombre a, que se declara como

global en la función func1. La variable global almacena inicialmente el valor de 1 y


luego en la función adquiere el valor de 4. El resultado de ejecutar las instrucciones
es 4 y 4.

2.4 Uso del estatuto “return”

El estatuto “return” cumple dos funciones: primero finaliza inmediatamente


la ejecución de la función y, segundo, permite devolver el valor que se produce al
ejecutar una función. Si no se produce ningún valor, el estatuto devuelve el valor

None.
En el siguiente ejemplo, se define una función llamada cuadrado, que recibe
un parámetro de nombre x. Lo que devuelve es el valor resultante de multiplicar x

por sí misma.

# Función que retorna el cuadrado de un número


def cuadrado (x):
resultado = x * x
return resultado
# Programa principal
a = int (input ("Introduzca un valor numérico entero:"))
b = cuadrado (a)
print ("El cuadrado de ", a, "es", b)

En el programa principal del ejemplo anterior, se pide al usuario que digite


un número entero. Este valor se almacena en la variable “a”; luego se invoca la
función cuando y se le envía el valor recibido. La función “cuadrado” multiplica el

valor recibido por el mismo y devuelve el resultado del cálculo. Este resultado se
almacena en la variable “b” Por último, se imprimen los valores de a y b.

Una función podría tener varios estatutos de return, pero solo uno de ellos se

24
ejecutará. Tan pronto se ejecute, la función se dará por terminada. A continuación:

# Función que recibe un número y retorna su valor absoluto


def valorAbs (x):
ifx < 0:
retum -x
else:
return x

# Programa principal
a=5
res = valorAbs (a)
print ("El valor absoluto de " + str(a) +"es ", res)
b =- 10
print ("El valor absoluto de "+ str(b) +"es ", valorAbs (b))

En este ejemplo se define una función llamada valorAbs, que recibe un


parámetro de nombre x. Se observa que la función tiene dos estatutos return, de los
cuales solo uno se ejecutará según sea el resultado del condicional i/x < 0.

Si al ejecutar una función, no se cumple ninguna condición, la función podría


finalizar sin ejecutar el estatuto return. En estos casos, el valor de retorno es un valor
especial llamado None. El valor de retorno se puede usar directamente en una

instrucción o se puede asignar a una variable, como se muestra a continuación.

>>> import math


>>> resultado = math.sqrt (9)
>>> print (resultado, math.sqrt (25))

En el ejemplo anterior, se imprime el resultado de obtener la raíz cuadrada

(sqrt) de 9 y de 25. En el primer caso, el argumento es 9 y el resultado que devuelve


la función es 3. Este valor se almacena en la variable resultado. En el segundo, el

25
argumento es 25, y el resultado es 5. Este valor no se almacena en ninguna variable,

sino que solamente se imprime.

2.5 Uso de la función Lambda

Python tiene otra forma de crear funciones, las llamadas funciones lambda. Para ello
se utiliza la palabra reservada lambda, que sirve para crear funciones rápidamente

con el fin de hacer algún cálculo que requiera únicamente de una pequeña operación
o comprobación.

En el siguiente ejemplo se muestran dos funciones de nombre “función” y

“funcion2”. El resultado de ejecutar cualquiera de las dos funciones es el mismo.

#Creación de función con “def” que retoma el producto de x*y


def funcion (x, y):

return x* y

#Creación de función lambda que retoma el producto de x*y


funcion2 = lambda x, y : x * y

#Ejecución de funciones que realizan la misma operación e devuelven el mismo


resultado
print (funcion (2,3)) #Función “def”
print (funcion2 (2,3)) #Función “lambda”

Toda función lambda puede expresarse como una función convencional

(pero no toda función convencional puede expresarse como una función lambda).

26
2.6 Aspectos a considerar el desarrollo de un programa

Cuando se desarrollan programas, es conveniente usar una técnica llamad


desarrollo incremental, que consiste en escribir y probar pequeñas cantidades de

código a la vez. Cuando se está seguro de que estas funciones trabajan


correctamente, se agregan más funciones y se vuelven a probar todas juntas.

Los aspectos clave de este proceso son los siguientes:


• Iniciar con un programa que trabaje y que se le puedan hacer
pequeños cambios de forma paulatina. De esta manera, si hay un

error en cualquier punto, se sabrá exactamente dónde está.


• Use variables temporales para mantener valores intermedios, de
manera que en cualquier momento se pueda consultar su valor.

Por ejemplo, supóngase que se quiere encontrar la distancia entre dos


puntos dados por las coordenadas (x1 , y1 ) y (x2 , y2 ), según el teorema de Pitágoras,
supongamos que la distancia es denominada por “D”:

𝐷 = √(𝑥2 − 𝑥1) 2 + (𝑦2 − 𝑦1) 2

Paso 1.

El primer paso es considerar que debe haber una función distancia que recibe

entradas (parámetros) y que devuelve una salida (un valor de retomo). En este caso,
los dos puntos dados por las coordenadas (x 1 , y1 ) y (x2 , y2 ), son las entradas, y el valor
de retorno es la distancia y su tipo será de tipo flotante.

27
Luego, se muestra cómo podría escribirse esa función. Obviamente esta

función no calcula la distancia, solo devuelve 0, pero es sintácticamente correcta y


se podrá ejecutar. Esto significa que se puede probar antes de complicarla más.

# función que recibe cuatro coordenadas y retoma la distancia


def distancia (x1, ×2, y1, y2):
return 0.0

# programa principal
dist = distancia (1, 4, 2, 6)
print (dist)

Paso 2.

El siguiente paso es encontrar las diferencias entre (x 2 – y1 ) y (y2 – y1 ), estos

valores se almacenarán en variables temporales llamadas "dx" y "dy", que se


desplegarán en pantalla:

#función que recibe cuatro coordenadas y retorna la distancia


def distancia (x1, x2, y1, y2):
dx = x2 - x1
dy = y2 - y1
print("dx = ", dx, " dy= ", dy)
return 0.0

# programa principal
dist = distancia (1, 4, 2, 6)
print(dist)

Cuando se prueba una función, es conveniente saber el resultado que deberá


producir según los valores de los parámetros establecidos. En el ejemplo anterior, se

seleccionaron los valores 1, 4, 2, y 6 porque la distancia horizontal es 3, y la vertical

28
es 4. Si la función trabaja correctamente, los resultados mostrados deberán ser 3 4. Si

no, habrá que revisar el código para encontrar el error.

Cabe señalar que algunas instrucciones print() se incluyen de forma temporal


como parte de las pruebas que realizaremos al código y son una especie de “cascara”

para verificar que el programa se ejecute correctamente y deberán ser eliminadas


posteriormente.

Paso 3.

Por último, se calcula la suma de los cuadrados de los valores almacenados

en las variables dx y dy. Se importa el módulo de matemáticas para aplicar la


función de raíz cuadrada y se calcula el resultado.

# función que recibe cuatro coordenadas y retorna la distancia


import math
def distancia (x1, x2, y1, y2):
dx = x2 - x1
dy = y2 - y1
distCuad = dx ** 2 + dy ** 2
print ("dx =", dx, " dy=", dy, " distCuad=", distCuad)
res = math.sqrt (distCuad)
return res

# programa principal
dist = distancia (1, 4, 2, 6)
print (dist)

En este ejemplo el resultado es 5, que es el valor que corresponde a la


hipotenusa de un triángulo 3-4-5. Si el resultado es correcto, ya finalizó el desarrollo
del programa. De lo contrario, habrá que buscar la razón de por qué no se obtiene el

resultado esperado.

29
2.7 Iteración
2.7.1 Actualizando una variable

Uno de los usos habituales de las sentencias de asignación consiste en


realizar una actualización sobre una variable en la cual el valor nuevo de esa
variable depende del antiguo.

>>> x = x + 1

Esto quiere decir “‘toma el valor actual de x, añádele 1, y luego


actualiza x con el nuevo valor”. Si intentas actualizar una variable que no
existe, obtendrás un error, ya que Python evalúa el lado derecho antes de
asignar el valor a x:

>>> x = x + 1
NameError: name 'x' is not defined

Antes de que puedas actualizar una variable, debes inicializarla,


normalmente me- diante una simple asignación:

>>> x = 0
>>> x = x + 1

Actualizar una variable añadiéndole 1 se denomina incrementar;


restarle 1 recibe el nombre de decrementar (o disminuir).

30
2.7.2 La sentencia “while”

Las computadoras se suelen utilizar a menudo para automatizar


tareas repetitivas. Repetir tareas idénticas o muy similares sin cometer

errores es algo que a las máquinas se les da bien y en cambio a las personas
no. Como las iteraciones resultan tan habituales, Python proporciona varias
características en su lenguaje para hacerlas más sencillas.

Una forma de iteración en Python es la sentencia “while”. He aquí un

programa sencillo que cuenta hacia atrás desde cinco y luego dice
“¡Despegue!”.

n= 5
while n > 0:
print(n)
n= n-1
print('¡Despegue!')

Casi se puede leer la sentencia while como si estuviera escrita en


inglés. Significa, “Mientras n sea mayor que 0, muestra el valor de n y luego

reduce el valor de n en 1 unidad. Cuando llegues a 0, sal de la sentencia


while y muestra la palabra ¡Despegue!

Éste es el flujo de ejecución de la sentencia while, explicado de un modo más

formal:

a) Se evalúa la condición, obteniendo Verdadero or Falso.


b) Si la condición es falsa, se sale de la sentencia while y se continúa la

ejecución en la siguiente sentencia.

31
c) Si la condición es verdadera, se ejecuta el cuerpo del while y luego se

vuelve al paso 1.

Este tipo de flujo recibe el nombre de bucle, ya que el tercer paso

enlaza de nuevo con el primero. Cada vez que se ejecuta el cuerpo del bucle
se dice que realizamos una iteración. Para el bucle anterior, podríamos decir
que “ha tenido cinco iteraciones”, lo que significa que el cuerpo del bucle se

ha ejecutado cinco veces.


El cuerpo del bucle debe cambiar el valor de una o más variables, de
modo que la condición pueda en algún momento evaluarse como falsa y el

bucle termine. La variable que cambia cada vez que el bucle se ejecuta y
controla cuándo termina éste, recibe el nombre de variable de iteración. Si
no hay variable de iteración, el bucle se repetirá para siempre, resultando así

un bucle infinito.

2.7.3 Bucles infinitos y estatuto “break”

Una fuente de diversión sin fin para los programadores es la


constatación de que las instrucciones del champú: “Enjabone, aclare, repita”,
son un bucle infinito, ya que no hay una variable de iteración que diga

cuántas veces debe ejecutarse el proceso.

En el caso de una cuenta atrás, podemos verificar que el bucle


termina, ya que sabemos que el valor de n es finito, y podemos ver que ese

valor se va haciendo más pequeño cada vez que se repite el bucle, de modo
que en algún momento llegará a 0. Otras veces un bucle es obviamente
infinito, porque no tiene ninguna variable de iteración.

32
A veces no se sabe si hay que terminar un bucle hasta que se ha

recorrido la mitad del cuerpo del mismo. En ese caso se puede crear un bucle
infinito a propósito y usar la sentencia break para salir de él cuando se desee.
El bucle siguiente es, obviamente, un bucle infinito, porque la

expresión lógica de la sentencia while es simplemente la constante lógica


True (verdadero):

n = 10
while True:
print(n, end=' ')
n= n-1
print('¡Terminado!')

Si cometes el error de ejecutar este código, aprenderás rápidamente


cómo detener un proceso de Python bloqueado en el sistema, o tendrás que

localizar dónde se encuentra el botón de apagado de tu equipo. Este


programa funcionará para siempre, o hasta que la batería del equipo se
termine, ya que la expresión lógica al principio del bucle es siempre cierta,

en virtud del hecho de que esa expresión es precisamente el valor constante


True.

A pesar de que en este caso se trata de un bucle infinito inútil, se

puede usar ese diseño para construir bucles útiles, siempre que se tenga la
precaución de añadir código en el cuerpo del bucle para salir explícitamente,
usando break cuando se haya alcanzado la condición de salida.

Por ejemplo, supón que quieres recoger entradas de texto del usuario
hasta que éste escriba fin. Podrías escribir:

33
while True:
linea = input('> ')
if linea == 'fin':
break
print(linea)
print('¡Terminado!')

La condición del bucle es True, lo cual es verdadero siempre, así que


el bucle se repetirá hasta que se ejecute la sentencia break.

Cada vez que se entre en el bucle, se pedirá una entrada al usuario. Si


el usuario escribe fin, la sentencia break hará que se salga del bucle. En
cualquier otro caso, el programa repetirá cualquier cosa que el usuario

escriba y volverá al principio del bucle. Éste es un ejemplo de su


funcionamiento:

> hola a todos


hola a todos
> he terminado
he terminado
> fin
¡Terminado!

Este modo de escribir bucles while es habitual, ya que así se puede


comprobar la condición en cualquier punto del bucle (no sólo al principio),

y se puede expresar la condición de parada afirmativamente (“detente


cuando ocurra. . . ”), en vez de tener que hacerlo con lógica negativa (“sigu e

haciéndolo hasta que ocurra. . . ”).

34
2.7.4 Finalizando un bucle con el estatuto “continue”

Algunas veces, estando dentro de un bucle se necesita terminar con


la iteración actual y saltar a la siguiente de forma inmediata. En ese caso se

puede utilizar la sentencia continue para pasar a la siguiente iteración sin


terminar la ejecución del cuerpo del bucle para la actual.

A continuación, se muestra un ejemplo de un bucle que repite lo que


recibe como entrada hasta que el usuario escribe “fin”, pero trata las líneas

que empiezan por el carácter almohadilla como líneas que no deben


mostrarse en pantalla (algo parecido a lo que hace Python con los

comentarios).

while True:
linea = input('> ')
if linea[0] == '#' :
continue
if linea == 'fin':
break
print(linea)
print('¡Terminado!')

Por ejemplo, una ejecución de ejemplo de ese nuevo programa con la


sentencia continue añadida:

> hola a todos


hola a todos
> # no imprimas esto
> ¡imprime esto!
¡imprime esto!
> fin
¡Terminado!
35
Todas las líneas se imprimen en pantalla, excepto la que comienza con

el símbolo de almohadilla, ya que en ese caso se ejecuta continue, finaliza la


iteración actual y salta de vuelta a la sentencia while para comenzar la
siguiente iteración, de modo que se omite la sentencia print.

2.7.5 Utilización bucles con el estatuto “for”

A veces se desea repetir un bucle a través de un conjunto de cosas,


como una lista de palabras, las líneas de un archivo, o una lista de números.
Cuando se tiene una lista de cosas para recorrer, se puede construir un bucle

definido usando una sentencia for. A la sentencia while se la llama un bucle


indefinido, porque simplemente se repite hasta que cierta condición se hace
Falsa, mientras que el bucle for se repite a través de un conjunto conocido

de elementos, de modo que ejecuta tantas iteraciones como elementos hay


en el conjunto.

La sintaxis de un bucle for es similar a la del bucle while, en ella hay

una sentencia for y un cuerpo que se repite:

amigos = ['Joseph', 'Glenn', 'Sally']


for amigo in amigos:
print('Feliz año nuevo:', amigo)
print('¡Terminado!')

En términos de Python, la variable amigos es una lista1 de tres


cadenas y el bucle for se mueve recorriendo la lista y ejecuta su cuerpo una

vez para cada una de las tres cadenas en la lista, produciendo esta salida:

36
Feliz año nuevo: Joseph
Feliz año nuevo: Glenn
Feliz año nuevo: Sally
¡Terminado!

La traducción de este bucle for al español no es tan directa como en el

caso del while, pero si piensas en los amigos como un conjunto, sería algo
así como: “Ejecuta las sentencias en el cuerpo del bucle una vez para (for)

cada amigo que esté en (in) el conjunto llamado amigos.”


Revisando el bucle “for”, “for” e “in” son palabras reservadas de
Python, mientras que amigo y amigos son variables:

amigos = ['Joseph', 'Glenn', 'Sally']


for amigo in amigos:
print("Feliz año nuevo::", amigo)

En concreto, amigo es la variable de iteración para el bucle for. La


variable amigo cambia para cada iteración del bucle y controla cuándo se

termina el bucle for. La variable de iteración se desplaza sucesivamente a


través de las tres cadenas almacenadas en la variable amigos.

2.7.6 Diseñando un bucle con “for” o “while”

A menudo se usa un bucle for o while para movernos a través de una


lista de elementos o el contenido de un archivo y se busca algo, como el valor

más grande o el más pequeño de los datos que estamos revisando.


Los bucles generalmente se construyen así:
a) Se inicializan una o más variables antes de que el bucle comience

37
b) Se realiza alguna operación con cada elemento en el cuerpo del bucle,
posiblemente cambiando las variables dentro de ese cuerpo.
c) Se revisan las variables resultantes cuando el bucle se completa.

Usaremos ahora una lista de números para demostrar los conceptos

y construcción de estos diseños de bucles. Por ejemplo, para contar el


número de elementos en una lista, podemos escribir el siguiente bucle for:

contador = 0
for valor in [3, 41, 12, 9, 74, 15]:
contador = contador + 1
print('Numeros de elementos: ', contador)

Ajustamos la variable “contador” del código a cero antes de que el


bucle comience, después escribimos un bucle “for” para movernos a través

de la lista de números. Nuestra variable de iteración se llama valor, y dado


que no usamos valor dentro del bucle, lo único que hace es controlar el bucle
y hacer que el cuerpo del mismo sea ejecutado una vez para cada uno de los

valores de la lista.

En el cuerpo del bucle, añadimos 1 al valor actual de contador para


cada uno de los valores de la lista. Mientras el bucle se está ejecutando, el

valor de contador es la cantidad de valores que se hayan visto “hasta ese


momento”.

Una vez el bucle se completa, el valor de contador es el número total


de elementos. El número total “cae en nuestro poder” al final del bucle. Se

construye el bucle de modo que obtengamos lo que queremos cuando éste


termina.

38
Otro bucle similar, que calcula el total de un conjunto de números, se

muestra a continuación:

total = 0
for valor in [3, 41, 12, 9, 74, 15]:
total = total + valor
print('Total: ', total)

En este bucle, sí utilizamos la variable de iteración. En vez de añadir


simplemente uno a contador como en el bucle previo, ahora durante cada

iteración del bucle añadimos el número actual (3, 41, 12, etc.) al total en ese
momento. Si piensas en la variable total, ésta contiene la “suma parcial de
valores hasta ese momento”.

Así que antes de que el bucle comience, total es cero, porque aún no
se ha examinado ningún valor. Durante el bucle, total es la suma parcial, y
al final del bucle, total es la suma total definitiva de todos los valores de la

lista. Cuando el bucle se ejecuta, total acumula la suma de los elementos;


una variable que se usa de este modo recibe a veces el nombre de
acumulador.

Ni el bucle que cuenta los elementos ni el que los suma resultan


particularmente útiles en la práctica, dado que existen las funciones internas
len() y sum() que cuentan el número de elementos de una lista y el total de

elementos en la misma respectivamente.

39
2.8 Secuencias

2.8.1 Cadenas

Una cadena es una secuencia de caracteres. Puedes acceder a los caracteres de

uno en uno con el operador corchete:

>>> fruta = 'banana'


>>> letra = fruta[1]

La segunda sentencia extrae el carácter en la posición del índice 1 de la

variable fruta y la asigna a la variable letra. La expresión en los corchetes es llamada


índice. El índice indica qué carácter de la secuencia quieres (de ahí el nombre).
Pero podrías no obtener lo que esperas:

>>> print(letra)
a

Para la mayoría de las personas, la primera letra de “banana” es “b”, no “a”.


Pero en Python, el índice es un desfase desde el inicio de la cadena, y el desfase de
la primera letra es cero.

>>> letra = fruta[0]


>>> print(letra) b

Así que “b” es la letra 0 (“cero”) de “banana”, “a” es la letra con índice 1, y
“n” es la que tiene índice 2, etc. Puedes usar cualquier expresión, incluyendo
variables y operadores, como un índice, pero el valor del índice tiene que ser un

entero. De otro modo obtendrás:

40
>>> letra = fruta[1.5]
TypeError: string indices must be integers

En la tabla siguiente veremos la posición de la indexación positiva y la


indexación negativa

Cadena b a n a n a
Índice positivo [0] [1] [2] [3] [4] [5]
Índice negativo [-6] [-5] [-4] [-3] [-2] [-1]

2.8.2 Recorriendo una cadena mediante un bucle

Muchos de los cálculos requieren procesar una cadena carácter por carácter.

Frecuentemente empiezan desde el inicio, seleccionando cada carácter presente,


haciendo algo con él, y continuando hasta el final. Este patrón de procesamiento es
llamado un recorrido. Una manera de escribir un recorrido es con un bucle while:

indice = 0
while indice < len(fruta):
letra = fruta[indice]
print(letra)
indice = indice + 1

Este bucle recorre la cadena e imprime cada letra en una línea cada una. La
condición del bucle es indice < len(fruta), así que cuando índice es igual al tamaño
de la cadena, la condición es falsa, y el código del bucle no se ejecuta. El último

carácter accedido es el que tiene el índice len(fruta)-1, el cual es el último carácter en


la cadena.

Otra forma de escribir un recorrido es con un bucle for:

41
>>> for caracter in fruta:
print(carácter)

Cada vez que iteramos el bucle, el siguiente carácter en la cadena es asignado


a la variable carácter. El ciclo continúa hasta que no quedan caracteres.

2.8.3 Partiendo una cadena

Un segmento de una cadena es llamado rebanado. Seleccionar un rebanado


es similar a seleccionar un carácter:

>>> s = 'Monty Python'


>>> print(s[0:5]) Monty
>>> print(s[6:12]) Python

Si omites el primer índice (antes de los dos puntos), el rebanado comienza


desde el inicio de la cadena. Si omites el segundo índice, el rebanado va hasta el final

de la cadena:

>>> fruta = 'banana'


>>> fruta[:3]
’ban’
>>> fruta[3:]
’ana’

Si el primer índice es mayor que o igual que el segundo, el resultado es una


cadena vacía, representado por dos comillas:

42
>>> fruta = 'banana'
>>> fruta[3:3]

Una cadena vacía no contiene caracteres y tiene un tamaño de 0, pero fuera


de esto es lo mismo que cualquier otra cadena.

2.8.4 Las cadenas son inmutables

Puede ser tentador utilizar el operador [] en el lado izquierdo de una

asignación, con la intención de cambiar un carácter en una cadena. Por ejemplo:

>>> saludo = 'Hola, mundo!'


>>> saludo[0] = 'H'

TypeError: 'str' object does not support item assignment

El “objeto” en este caso es la cadena y el “ítem” es el carácter que tratamos de

asignar. Por ahora, un objeto es la misma cosa que un valor, pero vamos a redefinir
esa definición después. Un ítem es uno de los valores en una secuencia.
La razón por la cual ocurre el error es que las cadenas son inmutables, lo cual

significa que no puedes modificar una cadena existente. Lo mejor que puedes hacer
es crear una nueva cadena que sea una variación de la original:

>>> saludo = 'Hola, mundo!'


>>> nuevo_saludo = 'H' + saludo[1:]
>>> print(nuevo_saludo)
Hola, mundo!

43
Este ejemplo concatena una nueva letra a una parte de saludo. Esto no tiene

efecto sobre la cadena original.

2.8.5 Iterando y contando

El siguiente programa cuenta el número de veces que la letra “a” aparece en


una cadena:

palabra = 'banana'
contador = 0
for letra in palabra:
if letra == 'a':
contador = contador + 1
print(contador)

Este programa demuestra otro patrón de computación llamado contador. La

variable “contador” es inicializada a 0 y después se incrementa cada vez que una


“a” es encontrada.

2.8.5 El operador “in”

La palabra in es un operador booleano que toma dos cadenas y regresa True


si la primera cadena aparece como una subcadena de la segunda:

>>> 'a' in 'banana'


True
>>> 'semilla' in 'banana'
False

44
2.9 Glosario de términos

• Algoritmo: Un proceso general para resolver una categoría de problemas.


• Argumento: Un valor proporcionado a una función cuando ésta es llamada.
Ese valor se asigna al parámetro correspondiente en la función.

• Cabecera: La primera línea de una definición de función.


• Cuerpo: La secuencia de sentencias dentro de la definición de una función.
• Definición de función: Una sentencia que crea una función nueva,

especificando su nombre, parámetros, y las sentencias que ejecuta.


• Función: Una secuencia de sentencias con un nombre que realizan alguna
operación útil. Las funciones pueden tomar argumentos o no, y pueden

producir un resultado o no.


• Flujo de ejecución: El orden en el cual se ejecutan las sentencias durante el
funcionamiento de un programa.

• Llamada a función Una sentencia que ejecuta una función. Consiste en el


nombre de la función seguido por una lista de argumentos.

• Objeto función: Un valor creado por una definición de función. El nombre


de la función es una variable que se refiere al objeto función.
• Objeto módulo: Un valor creado por una sentencia import, que proporciona

acceso a los datos y código definidos en un módulo.


• Parámetro Un nombre usado dentro de una función para referirse al valor
pasado como argumento.

• Sentencia import: Una sentencia que lee un archivo módulo y crea un objeto
módulo.
• Valor de retorno: El resultado de una función. Si una llamada a una función

es usada como una expresión, el valor de retorno es el valor de la expresión.

45
2.10 Ejercicios de autoevaluación

Ejercicios de Programación en Python

Instrucciones: De conformidad con el material presentado, realice y ejecute en


Python cada uno de los ejercicios que se detallan a continuación:

Parte I. Ejercicios de estructura básica

Ejercicio 1.
# Realiza un programa que reciba una cantidad de minutos y muestre por pantalla a
# cuantas horas y minutos corresponde.

minutos = int(input("Introduce la cantidad de minutos:"))


res_horas = minutos // 60
res_min = minutos % 60
print(res_horas,"horas y",res_min,"minutos.")

Ejercicio 2.
# Un vendedor recibe un sueldo base mas un 10% extr a por comisión de sus ventas,
# el vendedor desea saber cuanto dinero obtendrá por concepto de comisiones por
# las tres ventas que realiza en el mes y el total que recibirá en el mes tomando
# en cuenta su sueldo base y comisiones.

sueldo_base = float(input("Dime el sueldo base:"))


venta1 = float(input("Dime precio de la venta 1:"))
venta2 = float(input("Dime precio de la venta 2:"))
venta3 = float(input("Dime precio de la venta 3:"))
comision = venta1 * 0.1 + venta2 * 0.1 + venta3 * 0.1
print("Comisión por ventas:",comision)
print("Sueldo total:", sueldo_base + comision)

46
Ejercicio 3.
# Una tienda ofrece un descuento del 15% sobre el total de la compra y un
cliente
# desea saber cuanto deberá pagar finalmente por su compra.

precio = float(input("Dime el precio:"))


print("Precio final:",precio - precio * 0.15)

Ejercicio 4.
# Un alumno desea saber cual será su calificación final en la materia de
Algoritmos
# Dicha calificación se compone de los siguientes porcentajes:
# * 55% del promedio de sus tres calificaciones parciales.
# * 30% de la calificación del examen final.
# * 15% de la calificación de un trabajo final.

parcial1 = float(input("Dime la nota del parcial 1:"))


parcial2 = float(input("Dime la nota del parcial 2:"))
parcial3 = float(input("Dime la nota del parcial 3:"))
examen = float(input("Dime la nota del examen:"))
trabajo = float(input("Dime la nota del trabajo:"))
nota = ((parcial1 + parcial2 + parcial3) / 3) * 0.55 + 0.3 * examen +
0.15 * trabajo
print("nota final:", nota)

Ejercicio 5.
# Pide al usuario dos números y muestra la "distancia" entre ellos
# (el valor absoluto de su diferencia, de modo que el resultado sea
siempre positivo).

num1 = int(input("Dime el número 1:"))


num2 = int(input("Dime el número 2:"))
print("Distancia:", abs(num1 - num2))

Ejercicio 6.
# Realizar un algoritmo que lea un número y que muestre su raíz cuadrada
y su raíz cúbica.
# Python3 no tiene ninguna función predefinida que permita calcular la
raíz cúbica, ¿Cómo se puede calcular?

import math
num = int(input("Dime el número:"))
print("Raíz cuadrada:",math.sqrt(num))
print("Raíz cúbica:",num ** (1 / 3))

47
Ejercicio 7.
# Dado un número de dos cifras, diseñe un algoritmo que permita obtener
el
# número invertido.

num = int(input("Dime un número de dos cifras:"))


decenas = num // 10
unidades = num % 10
print("Primera cifra (decenas):",decenas)
print("Segunda cifra (unidades):",unidades)

Ejercicio 8.
# Dos vehículos viajan a diferentes velocidades (v1 y v2) y están
distanciados
# por una distancia d.
# El que está detrás viaja a una velocidad mayor. Se pide hacer un
algoritmo
# para ingresar la distancia entre los dos vehículos (km) y sus
respectivas
# velocidades (km/h) y con esto determinar y mostrar en que tiempo
(minutos)
# alcanzará el vehículo más rápido al otro.

velocidad1 = float(input("Dime la velocidad del coche 1 (km/h):"))


velocidad2 = float(input("Dime la velocidad del coche 2 (km/h):"))
distancia = float(input("Dime la distancia entre los coches (km):"))
tiempo = distancia / abs(velocidad1 - velocidad2)
tiempo = tiempo * 60
print("Lo alcanza en",tiempo,"minutos.")

Ejercicio 9.
# Un ciclista parte de una ciudad A a las HH horas, MM minutos y SS
segundos.
# El tiempo de viaje hasta llegar a otra ciudad B es de T segundos.
# Escribir un algoritmo que determine la hora de llegada a la ciudad B.

horapartida = int(input("Hora de salida:"))


minpartida = int(input("Minutos de salida:"))
segpartida = int(input("Segundos de salida:"))
segviaje = int(input("Tiempo que has tardado en segundos:"))
# Convierto la hora de salida a segundos
seginicial = horapartida * 3600 + minpartida*60 + segpartida;
# Le sumo los segundos que he tardado
segfinal = seginicial + segviaje;
# Convierto los segundos totales a hora, minúto y segundos
horallegada = segfinal // 3600;
minllegada = (segfinal % 3600) // 60;
segllegada = (segfinal % 3600) % 60;
# Muestro la hora de llegada
print("Hora de llegada")
print(horallegada,":",minllegada,":",segllegada)

48
Ejercicio 10.
# Pedir el nombre y los dos apellidos de una persona y mostrar las
iniciales.

nombre = input("Dime tu nombre:")


apellido1 = input("Dime tu primer apellido:")
apellido2 = input("Dime tu segundo apellido:")

inicial = nombre[0]
inicial = inicial + apellido1[0]
inicial = inicial + apellido2[0]
# Aunque no lo hemos estudiado vamos a usar el método upper para
convertir a mayúsculas
inicial = inicial.upper()
print("Las iniciales son:",inicial)

Parte II. Ejercicios de iteración o bucles

Ejercicio 1.
# Crea una aplicación que pida un número y calcule su factorial (El
factorial de
# un número es el producto de todos los enteros entre 1 y el propio
número y se
# representa por el número seguido de un signo de exclamación.
# Por ejemplo 5! = 1x2x3x4x5=120)

resultado = 1;
num=int(input("Dime un número:"))
contador = 2;
while contador <= num:
resultado = resultado * contador;
contador = contador + 1;
print("El resultado es", resultado)

Ejercicio 2.
# Algoritmo que pida números hasta que se introduzca un cero. Debe
imprimir la suma
# y la media de todos los números introducidos.

suma = 0
cont =0

# Con el mientras si el primer número es 0 no va a entrar en el bucle


num=int(input("Número (0 para salir):"))
while num != 0:
suma = suma + num
cont = cont + 1
num=int(input("Número (0 para salir):"))

49
# Si cont=0 no puedo realizar la división
if cont > 0:
media = suma / cont
else:
media = 0

print("Suma:",suma)
print("Media:",media)

# Otra manera de realizar el ejercicio 2, que pida números hasta que se


introduzca un cero. Debe imprimir la suma
# y la media de todos los números introducidos.

suma = 0
cont =0
while True:
num=int(input("Número (0 para salir):"))
suma = suma + num
# Si num=0 no debemos tenerlo en cuenta para calcular la media
if num !=0:
cont = cont + 1
if num == 0:
break
# Si cont=0 no puedo realizar la división
if cont != 0:
media = suma / cont
else:
media = 0

print("Suma:",suma)
print("Media:",media)

Ejercicio 3.
# Escribe un programa que dados dos números, uno real (base) y un entero
positivo
# (exponente), saque por pantalla el resultado de la potencia. No se
puede
# utilizar el operador de potencia.

base = int(input("Dame la base de la potencia:"))


while True:
exponente = int(input("Dame el exponente de la potencia:"))
if exponente<0:
print("ERROR: El exponente debe ser positivo")
if exponente >= 0:
break;
potencia = 1
for i in range(1, exponente + 1):
potencia = potencia * base
print("Potencia:",potencia)

50
Ejercicio 4.

# Escribe un programa que diga si un número introducido por teclado es o


no primo.
# Un número primo es aquel que sólo es divisible entre él mismo y la
unidad.
# Nota: Es suficiente probar hasta la raíz cuadrada del número para ver
si es
# divisible por algún otro número.

es_primo = True
numero_es_primo = int(input("Introduce un número para comprobar si es
primo:"))
for num in range(2, numero_es_primo):
if numero_es_primo % num == 0:
es_primo = False
if es_primo:
print("Es Primo")
else:
print("No es Primo")

Ejercicio 5.
# Una empresa tiene el registro de las horas que trabaja diariamente un
empleado
# durante la semana (seis días) y requiere determinar el total de éstas,
así como
# el sueldo que recibirá por las horas trabajadas.

horas_acum = 0
sueldo_por_hora = float(input("Introduce el sueldo por hora:"))
for dia in range(1, 7):
horas = int(input("¿Cuántas horas has trabajado el día %d ?:" %
dia))
horas_acum = horas_acum + horas
print("Horas acumuladas en la semana:",horas_acum)
print("Sueldo:",sueldo_por_hora*horas_acum)

Ejercicio 6.
# Una persona se encuentra en el kilómetro 70 de una carretera, otra se
encuentra
# en el km 150, los coches tienen sentido opuesto y tienen la misma
velocidad.
# Realizar un programa para determinar en qué kilómetro de esa carretera
se
# encontrarán.

km1 = 70
km2 = 150
while km1 != km2:
km1 = km1+1

51
km2 = km2-1

print("Se encuentran en el km:",km1)

Ejercicio 7.
# Una persona adquirió un producto para pagar en 20 meses. El primer mes
pagó 10
# colones, el segundo 20 colones, el tercero 40 colones y así
sucesivamente.
# Realizar un algoritmo para determinar cuánto debe pagar mensualmente y
el total
# de lo que pagó después de los 20 meses.

pago_acum = 0
pago = 10
for mes in range(1, 21):
pago_acum = pago_acum + pago
pago = pago * 2
print("Al final de los 20 meses tuvo que pagar: ",pago_acum)

Ejercicio 8.
# Una empresa les paga a sus empleados con base en las horas trabajadas
en la semana.
# Realice un algoritmo para determinar el sueldo semanal de N
trabajadores
# y, además, calcule cuánto pagó la empresa por los N empleados.

horas_acum = 0
trabajadores = int(input("¿Cuántos trabajadores tiene la empresa?:"))
sueldo_por_hora = float(input("Sueldo por hora:"))
for trabajador in range(1, trabajadores + 1):
horas_por_semana = int(input("¿Cuántas horas ha trabajado el
trabajador %d ?:" % trabajador))
horas_acum = horas_acum + horas_por_semana
print("El trabajador %d tiene de sueldo %f" %
(trabajador,horas_por_semana*sueldo_por_hora))
print("El pago a los %d trabajadores es: %f" %
(trabajadores,horas_acum*sueldo_por_hora))

Ejercicio 9.
# Hacer un programa que muestre un cronometro, indicando las horas,
minutos y segundos.

import os
import time
for hora in range(0,24):
for minuto in range(0,60):
for segundo in range(0,60):
os.system("clear")

52
print(hora,":",minuto,":",segundo)
time.sleep(1)

Ejercicio 10.
# Realizar un ejemplo de menú, donde podemos escoger las distintas
opciones hasta
# que seleccionamos la opción de "Salir".

while True:
# mostrar menu
print("Menú de recomendaciones")
print(" 1. Literatura")
print(" 2. Cine")
print(" 3. Música")
print(" 4. Videojuegos")
print(" 5. Salir")
# ingresar una opcion
opcion = int(input("Elija una opción (1-5): "))
# procesar esa opción
if opcion == 1:
print("Lecturas recomendables:")
print(" + Esperándolo a Tito y otros cuentos de fútbol (Eduardo
Sacheri)")
print(" + El juego de Ender (Orson Scott Card)")
print(" + El sueño de los héroes (Adolfo Bioy Casares)")
elif opcion == 2:
print("Películas recomendables:")
print(" + Matrix (1999)")
print(" + El último samuray (2003)")
print(" + Cars (2006)")
elif opcion == 3:
print("Discos recomendables:")
print(" + Despedazado por mil partes (La Renga, 1996)")
print(" + Búfalo (La Mississippi, 2008)")
print(" + Gaia (Mago de Oz, 2003)")
elif opcion == 4:
print("Videojuegos clásicos recomendables")
print(" + Día del tentáculo (LucasArts, 1993)")
print(" + Terminal Velocity (Terminal Reality/3D Realms, 1995) ")
print(" + Death Rally (Remedy/Apogee, 1996)")
elif opcion == 5:
print("Gracias, vuelva prontos")
break;
else:
print("Opción no válida")

53
Referencias:

Campbell, S. (2023, junio 10). Python tutorial for beginners: Learn


programming basics [PDF]. Guru99. https://www.guru99.com/python-
tutorials.html

Gaddis, T. (2019). Starting Out with Python. Editorial Pearson. Cuarta


Edición.

Mancebo, M. C. (2021). Introducción a la programación en Python. Canal


UNED España.
https://canal.uned.es/video/60b4ba5bb609235dc15173d2

Massachusetts Institute of Technology MIT (2010).


Propositions. https://ocw.mit.edu/courses/electrical-engineering-and-
computer-science/6- 042j-mathematics-for-computer-science-
fall2010/readings/MIT6_042JF10_chap01.pdf

Setvens, A. (2011). CS101 Lecture 11: Number Systems and Binary


Numbers.
http://www.cs.bu.edu/courses/cs101b1/slides/CS101.Lect11.BinaryN
umbers.ppt.pdf

54

También podría gustarte