Vous êtes sur la page 1sur 135

Programación 1

PEM EN INFORMATICA
Si el plan no funciona cambia
el plan pero no cambies la
meta.

2
3

HELLO!
😉 Inga. Cindy
Hernández
CindyJeaneth@Hotmail.com
Instructions for use
 Proyecto
23 de mayo
 Tareas
11 tareas de 2 puntos C/U
 Parciales
29 de febrero y 25 de abril
 Examen Corto

 Actividad Académica
14 de marzo

Todas las tareas se suben al GES


4
Reglamento
 Presentarse puntual a clase.
 Participar de manera activa y efectiva en el desarrollo de los
temas en clase y realizar con dedicación y responsabilidad las
prácticas de laboratorio de computación.
 Entregar en fecha asignada las tareas. Los retrasos disminuyen
el punteo asignado.
 Realizar con dedicación y responsabilidad las actividades de
enseñanza-aprendizaje.
 Desarrollar conforme se avance en los contenidos
programados las prácticas dadas y su texto paralelo, el cual
deberá presentar cuando le sea requerido.
 Para tener derecho a exámenes parciales y final es requisito
estar solvente financieramente.

5
 Para aprobar el curso, es requisito indispensable haber asistido
como mínimo al 80% de las clases. No se pueden tener más de
3 ausencias a clase.
 La zona mínima para tener derecho a evaluación final es de 35
puntos.
 Es obligatorio asistir a evaluación final y se debe obtener como
mínimo el 50% de la nota. De no asistir al final se debe tramitar
un examen extraordinario a un costo de Q330/curso.
 Evitar el uso del teléfono celular en clase
 No botar basura en las aulas y disponer adecuadamente de la
basura en los recipientes correspondientes.
 Cuidar y utilizar responsablemente el equipo del laboratorio de
computación y los bienes del aula.

6
Distribución de Zonas

Zona Programación 1 Zona Laboratorio


5 Tareas 20 15 Tareas 30

Proyecto Final 10 Proyecto Final 10

Actividad Académica 10 Actividad Académica 10

Exámenes parciales (15 Pts. c/u) 30 Exámenes parciales (10 Pts. c/u) 20

Examen Final 30 Examen Final 30

7 Total 100. Total 100.


Programa del Curso 8

 Conceptos de generales de  Funciones (Funciones que no


programación. devuelve valores, con uno a
mas valores )
 Estructuras de control
(Sentencias condicionales)  Procedimientos (Funciones que
devuelven valores)
 Sentencias Iterativas (While, For,
For each, Break)  Variables locales y globales.
 Tipos Estructurados Secuencias  Llamadas de Funciones
(Cadenas Listas)  Funciones recursivas
 Tipos Estructurados Secuencias  Tipos estructurados: Registros
(Matrices)
 Ficheros
 Interfaz grafica
Introducción al
lenguaje de
programación
18 ENERO.
Python es un lenguaje de programación
creado por Guido van Rossum a principios
de los años 90 cuyo nombre está inspirado
en el grupo de cómicos ingleses “Monty
Python”. Es un lenguaje similar a Perl, pero
con una sintaxis muy limpia y que favorece
un código legible.

Se trata de un lenguaje interpretado o de


script, con tipado dinámico, fuertemente
tipado, multiplataforma y orientado a
objetos.
Un lenguaje interpretado o de script es aquel que se
ejecuta utilizando un programa intermedio llamado
intérprete, en lugar de compilar el código a lenguaje
máquina que pueda comprender y ejecutar
directamente una computadora (lenguajes
Lenguaje compilados).

interpretado Python tiene, no obstante, muchas de las


características de los lenguajes compilados, por lo

o de script que se podría decir que es semi interpretado. En


Python, como en Java y muchos otros lenguajes, el
código fuente se traduce a un pseudo código
máquina intermedio llamado bytecode la primera
vez que se ejecuta, generando archivos .pyc o .pyo
(bytecode optimizado), que son los que se
ejecutarán en sucesivas ocasiones.
La característica de tipado dinámico se refiere a
que no es necesario declarar el tipo de dato que
Tipado va a contener una determinada variable, sino
que su tipo se determinará en tiempo de
dinámico ejecución según el tipo del valor al que se
asigne, y el tipo de esta variable puede cambiar
si se le asigna un valor de otro tipo.
No se permite tratar a una variable como si fuera
de un tipo distinto al que tiene, es necesario
convertir de forma explícita dicha variable al
nuevo tipo previamente. Por ejemplo, si tenemos
Fuertemente una variable que contiene un texto (variable de
tipo cadena o string) no podremos tratarla como
tipado un número (sumar la cadena “9” y el número 8).
En otros lenguajes el tipo de la variable
cambiaría para adaptarse al comportamiento
esperado, aunque esto es más propenso a
errores.
El intérprete de Python está disponible en
multitud de plataformas (UNIX, Solaris, Linux, DOS,
Windows, OS/2, Mac OS, etc.) por lo que si no
Multiplataforma utilizamos librerías específicas de cada
plataforma nuestro programa podrá correr en
todos estos sistemas sin grandes cambios.
Orientado a objetos

La orientación a objetos es un paradigma de programación en el que


los conceptos del mundo real relevantes para nuestro problema se
trasladan a clases y objetos en nuestro programa. La ejecución del
programa consiste en una serie de interacciones entre los objetos.
Python también permite la programación imperativa, programación
funcional y programación orientada a aspectos.
¿Por qué Python?

La sintaxis de Python es tan sencilla y cercana al lenguaje natural que


los programas elaborados en Python parecen pseudocódigo. Por este
motivo se trata además de uno de los mejores lenguajes para
comenzar a programar.
Existen varias implementaciones distintas de Python: CPython, Jython,
IronPython, PyPy, etc.
¿Quienes
usan
Python?
Algunos casos de éxito
en el uso de Python son
Google, Yahoo, la NASA,
Industrias Light & Magic,
y todas las distribuciones
Linux, en las que Python
cada vez representa un
tanto por ciento mayor
de los programas
¿?
El lenguaje de programación más solicitado puede ser directamente
proporcional a la cantidad de trabajos disponibles en el mercado. A
continuación se enumeran los trabajos solicitados del 2018, según
datos recopilados por Indeed y publicado en CodingDojo.
 Java
 Python
 JavaScript
 C++
 C#
 PHP
 Perl
7 razones para usar python
1. Es una gran multiplataforma
2. Frameworks de gran utilidad
3. Es libre y nos ofrece código abierto
4. Empresas de alto prestigio utilizan Python
para programar todo tipo de
aplicaciones y servicios
5. Gran calidad en su sintaxis
6. Python: programación orientada a
objetos
7. Nos ofrece un tipado dinámico fuerte
https://www.paradigmadigital.
com/dev/es-python-el-
lenguaje-del-futuro/
Entorno
La primera línea nos
indica la versión de
Python que tenemos
instalada.
Al final podemos ver el
prompt (>>>) que nos
indica que el intérprete
está esperando código
del usuario.
Podemos salir
escribiendo exit(), o
pulsando Control + D.
23

Estructuras de Control
25 ENERO
 Números, como pueden ser
 3 (entero),
 15.57 (de coma flotante) o

Tipos de 
 7 + 5j (complejos)
Cadenas de texto, como • “Hola Mundo”

Datos  Valores booleanos:


 True (cierto) y False (falso).

básicos Comentarios inline en Python: cadenas de texto


que comienzan con el carácter # y que Python
ignora totalmente.
Vamos a crear # esto es una cadena

un par de c = “Hola Mundo”

variables a ---------------------------------------------------------------------------
-
modo de # y esto es un entero
ejemplo. Una e = 23
de tipo ---------------------------------------------------------------------------
-----
cadena y una # podemos comprobarlo con la función type
de tipo entero: type(c)

type(e)
Operado
Descripción Ejemplo
r
+ Suma r = 3 + 2 # r es 5

- Resta r = 4 - 7 # r es -3

- Negación r = -7 # r es -7
Operadores * Multiplicación r = 2 * 6 # r es 12
r = 2 ** 6 # r es
** Exponente 64
r = 3.5 / 2 # r es
/ División 1.75
División r = 3.5 // 2 # r es
//
entera 1.0

% Módulo r = 7 % 2 # r es 1
Cadenas Las cadenas no son más que texto encerrado
entre comillas simples (‘cadena’) o dobles
(“cadena”). Dentro de las comillas se pueden
añadir caracteres especiales escapándolos con \,
como \n, el carácter de nueva línea, o \t, el de
tabulación.
También es posible encerrar una cadena entre
triples comillas (simples o dobles). De esta forma
podremos escribir el texto en varias líneas, y al
imprimir la cadena, se respetarán los saltos de línea
que introdujimos sin tener que recurrir al carácter
\n, así como las comillas sin tener que escaparlas.
 triple = “““primera línea
 esto se vera en otra línea”””
Las cadenas también admiten operadores como +
,
que funciona realizando una concatenación de las
cadenas utilizadas como operando y *, en la que se
repite la cadena tantas veces como lo indique el
número utilizado como segundo operando.
a = “uno”
b = “dos”
c = a + b # c es “unodos”
c = a * 3 # c es “unounouno”
Operador Descripción Ejemplo
r = 5 == 3 # r es
== ¿son iguales a y b?
False
r = 5 != 3 # r es
!= ¿son distintos a y b?
True
Operadores < ¿es a menor que b?
r = 5 < 3 # r es
False
relacionales > ¿es a mayor que b?
r = 5 > 3 # r es
True
¿es a menor o igual r = 5 <= 5 # r es
<= que b? True
¿es a mayor o igual r = 5 >= 3 # r es
>= que b? True
Operador Descripción Ejemplo
¿se cumple a y r = True and False #
and b? r es False
¿se cumple a o r = True or False # r
or b? es True
r = not True # r es
not No a False

Operadores Lógicos
Sintaxis

IF
If condición a evaluar:
Operaciones identadas

Si me regalas un
perro, te invitaré a cenar…
if <condición>:
<hacer algo si se da la condición>
else:
<hacer otra cosa si no se da la condición>

Múltiples decisiones
Vamos a ser un poco más exigentes y colocaremos algunas
condiciones, en ese sentido te imaginaras un algoritmo con
muchos if y else… Y si lo haces de esa manera está muy bien
pero como buena práctica de programación…

Para evitarte el if y else en múltiples condiciones tenemos el elif

32
numero = int(input("Escriba un número positivo: "))
if numero < 0:
print("¡Le he dicho que escriba un número positivo!“) 33
print((f"Ha escrito el número{numero}")
-------------------------------------------------
edad = int(input("¿Cuántos años tiene? "))
if edad < 18:
print("Es usted menor de edad")
else:
print("Es usted mayor de edad")

Ejemplo If print("¡Hasta la próxima!")


---------------------------------------------------
edad = int(input("¿Cuántos años tiene? "))
if edad >= 18:
print("Es usted mayor de edad")
elif edad < 0:
print("No se puede tener una edad negativa")
else:
print("Es usted menor de edad")

Int  Convierte una variable a entero


Input  entrada por teclado
1.- Calcular si un número es par, impar o cero

2.- Pedir por pantalla tres números no

Ejercicios consecutivos y mostrar en orden ascendente.

3.-Escriba un programa en Python que solicite un


número del 1 al 12 e imprima el mes del año
correspondiente.

34
Tipos de datos
complejos
Python, posee además de los tipos ya
vistos, 3 tipos más complejos, que
admiten una
colección de datos. Estos tipos son:
 Tuplas
 Listas
 Diccionarios
Tuplas

Es una variable que permite almacenar


varios datos inmutables de tipos diferentes:
Sintaxis para declarar:

'cadena 'otro mi_tupla = ('cadena de texto', 15, 2.8, 'otro


dato', 25)
15 2.8 25
de texto' dato' Se puede acceder a cada uno de los datos
mediante su índice correspondiente, siendo
0 (cero), el índice del primer elemento:
0 1 2 3 4
Sintaxis para acceder:
print (mi_tupla[1])
Salida: ???
También se puede acceder a una porción de la
tupla, indicando (opcionalmente) desde el índice
de inicio hasta el índice de fin:
print (mi_tupla[1:4]) # Devuelve: (15, 2.8, 'otro
dato')
print (mi_tupla[3:]) # Devuelve: ('otro dato', 25)
print (mi_tupla[:2]) # Devuelve: ('cadena de texto',
15)

Otra forma de acceder a la tupla de forma inversa


(de atrás hacia adelante), es colocando un índice
negativo:
print (mi_tupla[-1]) # Salida: 25
print (mi_tupla[-2]) # Salida: otro dato
Listas
Una lista es similar a una tupla con la diferencia fundamental de que
permite modificar los datos una vez creados
mi_lista = ['cadena de texto', 15, 2.8, 'otro dato', 25]

A las listas se accede igual que a las tuplas, por su número de índice:
print (mi_lista[1]) # Salida: 15
print (mi_lista[1:4]) # Devuelve: [15, 2.8, 'otro dato']
print (mi_lista[-2]) # Salida: otro dato

Las lista NO son inmutables: permiten modificar los datos una vez creados:
mi_lista[2] = 3.8 # el tercer elemento ahora es 3.8
Las listas, a diferencia de las tuplas, permiten agregar nuevos valores:
mi_lista.append('Nuevo Dato')

Para conocer el tamaño de la lista utilizamos:


Len(mi_lista) # resultado : 6

Para insertar un nuevo valor en la posición cuyo índice es K (y desplazar un


lugar el resto de la lista) se utiliza la operación insert ()
mi_lista.insert(2, 54)

Para eliminar un valor de una lista se utiliza la operación remove()


mi_lista.remove(54)
¿Que pasa con esto?
mi_tupla = (“hola mundo”, 2018)
texto, anio = mi_tupla
Print (texto)
--------------------------------------------------------------------------------------
mi_lista = ['Argentina', 'Buenos Aires']
pais, provincia = mi_lista
print (pais)
Sentencias Iterativas
25 de enero

41
Funciones matemáticas
Python dispone de un modulo matemático que proporciona la mayoría de las
funciones matemáticas habituales. Un modulo es un archivo que contiene una
colección de funciones agrupadas juntas. Antes de poder usar las funciones de
un modulo, tenemos que importarlo:
>>>import math
Para llamar a una de las funciones, tenemos que especificar el nombre del
modulo y el nombre de la función, separados por un punto. A esto se le llama
notación de punto:
decibelio = math.log10 (17.0)
Angulo = 1.5
altura = math.sin(Angulo)
n=5
While

No Yes Programa:
n>0? Salida:

print n n=5 5
while n > 0 : 4
print n 3
n = n -1
n=n–1 2
print ‘Despegue!' 1
print n Despeque!
print 0
‘Despegue' Los bucles (pasos repetidos) tienen variables de iteración
que cambian cada vez a través de un bucle. A menudo,
estas variables de iteración pasan por una secuencia de
números
Un bucle Infinito
n=5

No Yes
n>0?
n=5
print while n > 0 :
‘Espuma' print (‘Espuma’)
print print (‘Enjuague‘)
‘Enjuague' print ‘Secar!'

print ‘Secar!'
Que esta mal con este Bucle?
Otro Bucle
i=1
while i<= 50
print (i)
i = 3*i +1
print (“Programa terminado!!”)

Qué hace este Bucle?


Rompiendo un bucle (Breake)
La declaración de interrupción finaliza el bucle actual y salta a la
sentencia que sigue inmediatamente al bucle
Escomo una prueba de bucle que puede ocurrir en cualquier parte del
cuerpo del bucle.

while True: > Hola


line = input('> ') Hola
if line == “listo” : > Mundo
break Mundo
print (line) > listo
print (“Listo!”) Listo!
Break

while True:
line = input('> ')
if line == “listo” :
break
print (line) > Hola
print (“Listo!”) Hola
> Mundo
Mundo
> listo
Listo!
while True:
line = input('> ') No Yes
True ?
if line == “listo” :
break ....
print (line)
print (“Listo!”)
break

...

print 'Done'
Finalizar un ciclo
con continue
La instrucción continue finaliza la iteración
actual y salta a la parte superior del bucle e inicia
while True: la siguiente iteración.

line = input('> ') > hola


if line[0] == '#' : hola
continue > # No desplegar
if line == ‘listo': > Imprimir esto!
break Imprimir esto!
print (line) > listo
print ‘Listo!' Listo!
La instrucción continue finaliza la
iteración actual y salta a la parte superior
del bucle e inicia la siguiente iteración.

while True:
> hola
line = input('> ')
hola
if line[0] == '#' :
> # No desplegar
continue
> Imprimir esto!
if line == ‘listo':
Imprimir esto!
break
> listo
print (line)
Listo!
print ‘Listo!'
while True: No
True ? Yes
line = input('> ')
if line[0] == '#' : ....
continue
if line == ‘listo':
break continue
print line
print (‘Listo!‘)
...

print (‘Listo!‘)
52
Ejercicios
1. Escriba un programa que pida 2.Escriba un programa que pida
números enteros mientras sean cada un valor límite positivo y a
vez más grandes. continuación pida números hasta
que la suma de los números
Escriba un número: 5 introducidos supere el límite inicial.
Escriba un número mayor que 5: 10 Escriba el valor límite: 12
Escriba un número mayor que 10: 12 Escriba un número: 5.2
Escriba un número mayor que 12: 25 Escriba otro número: -1
Escriba un número mayor que 25: 9 Escriba otro número: 9
9 no es mayor que 25. Ha superado el límite. La suma de
los números introducidos es 13.2.
Programa terminado
Programa terminado
53
Ejercicios
3. Escriba un programa que pida 4. Pide números y mételos en una lista,
números enteros positivos hasta que se cuando el usuario meta un 0 ya
ingrese un numero negativo, entonces dejaremos de insertar. Por último,
deberá desplegar la sumatoria de los muestra los números ordenados de
números ingresados menor a mayor. (sort())
Escriba un número: 2 Escriba un número: 3
Escriba un número: 3 Escriba otro número: 8
Escriba un número: 8 Escriba otro número: 4
Escriba un número: -6 Escriba otro número: 7
Ingreso un numero negativo Escriba otro número: 0
La sumatoria de la lista es 13 La lista de numero es : 3 4 7 8
Programa terminado Programa terminado
01 DE FEBRERO
For

54
la función input()
La función input() permite a los usuarios introducir datos de distintos
tipos desde la entrada estándar (normalmente se corresponde con
la entrada de un teclado).
Introducir datos de distinto tipo
edad = int(input('Teclear edad: ')) # entrada de entero
peso = float(input('Teclear peso: ')) # entrada de flotante
nombre = input('Teclear nombre: ') # entrada de cadena
print(nombre, edad, 'años', peso, 'kg') # muestra datos
print("¿Cómo se llama? ", end="")
nombre = input()
print(f"Me alegro de conocerle, {nombre}")
>>> ¿Cómo se llama? Pepe
>>> Me alegro de conocerle, Pepe
55
Variables como argumento de la 56
función input()
Cuando deseamos agregar uno o mas argumentos a la
función input(), agregamos la cadenas "f"

Print (f “Bienvenido a clase, {nombre} {apellido}”)


Bucles Indefinidos

Los bucles se denominan "bucles indefinidos" porque


continúan hasta que una condición lógica se vuelve
falsa.
Los bucles que hemos visto hasta ahora son bastante
fáciles de examinar para ver si terminarán o si serán
"bucles infinitos“.
A veces es un poco más difícil estar seguro de si un
bucle terminará
Bucles Definidos (For)

Muy a menudo tenemos una lista de elementos de las


líneas en un archivo, efectivamente un conjunto finito
de cosas.

Podemos escribir un bucle para ejecutar el bucle una


vez para cada uno de los elementos de un conjunto
utilizando Python para la construcción.

Estos bucles se denominan "bucles definidos" porque se


ejecutan un número exacto de veces.

Decimos que "los bucles definidos recorren los miembros


de un conjunto”
Un simple bucle definido

5
4
for i in [5, 4, 3, 2, 1] :
3
print (i)
2
print “Despegue!”
1
Despegue!
Un Loop con cadenas

Amigos = [“Joseph”, “Glenn”, “Sally”]


for amigo in Amigos : Happy New Year: Joseph
print (“Happy New Year:”, amigo) Happy New Year: Glenn
print (“Termine!”) Happy New Year: Sally
Termine!
FOR (un simple bucle Definido)
No for i in [5, 4, 3, 2, 1] :
Si Muevete hacia print (i)
Listo? delante
print (“Despegue!”)

print (i) 5
4
3
2
print 1
(“Despegue!”) Despegue!
Los bucles definidos (For) tienen variables de iteración explícitas
que cambian cada vez a través de un bucle. Estas variables de
iteración se mueven a través de la secuencia o conjunto
No
Mirando por dentro…. Yes Muevete hacia
Listo? delante
La variable de iteración “itera" a
través de la secuencia (conjunto
ordenado).
El bloque (cuerpo) del código se
print (i)
ejecuta una vez para cada valor
en la secuencia.
La variable de iteración se
mueve a través de todos los
valores en la secuencia
print
(Despegue!”)
Variable de Iteración

for i in [5, 4, 3, 2, 1] : Secuencia de 5 elementos


print (i)
Utilizando un conjunto

print (“antes”) antes


for elemento in [9, 41, 12, 3, 74, 15] : 9
print (elemento) 41
print (“Despues”) 12
3
74
15
despues
Utilizando cadenas

fruta = input ("ingrese el nombre se una fruta: ")


for letra in fruta:
print (letra) Banano
b
a
n
a
n
o
Contando en un For
antes 0
contar = 0 19
print (“antes”), contar 2 41
for elemento in [9, 41, 12, 3, 74, 15] : 3 12
contar = contar+ 1 43
print (contar, elemento) 5 74
print (“despues”), contar 6 15
despues 6
Para contar cuántas veces ejecutamos un bucle introducimos
una variable de contador que comienza en 0 y le agregamos
una cada vez a través del bucle.
Los siguientes ejemplos muestran cómo
se puede usar el rango para producir
una variedad de secuencias:
range(10) ! 0,1,2,3,4,5,6,7,8,9
range(1, 10) ! 1,2,3,4,5,6,7,8,9
range(1, 10, 2) ! 1,3,5,7,9
range(10, 0, -1) ! 10,9,8,7,6,5,4,3,2,1
range(10, 0, -2) ! 10,8,6,4,2
range(2, 11, 2) ! 2,4,6,8,10
range(-5, 5) ! −5,−4,−3,−2,−1,0,1,2,3,4
range(1, 2) ! 1
range(1, 1) ! (empty)
range(1, -1) ! (empty)
range(1, -1, -1) ! 1,0
range(0) ! (empty)
66
Multipliquemos!!!!
print(" 1 2 3 4 5 6 7 8 9 10")
print(" +--------------------------------------------")
for fila in range(1, 11): # 1 <= fila <= 10, la tabla tiene 10 filas
if fila < 10: # ¿Necesitamos agregar espacio?
print(" ", end="")
print(fila, "| ", end="") # Imprimimos el encabezado de esta fila..
for columna in range(1, 11): # la tabla tiene 10 columnas.
mul = fila*columna; # claculamos la multiplicacion
if mul < 100: # ¿Necesitamos agregar espacio?
print(end=" ")
if mul < 10: # ¿Necesitamos agregar otro espacio?
print(end=" ")
print(mul, end=" ") # desplegamos la multiplicacion
print()

67
Analicemos…….
contar = 0
print (“antes”, contar)
for elemento in [9, 41, 12, 3, 74, 15] :
contar = contar + elemento
print (contar, elemento)
print (“despues”), contar
cont = 0
suma = 0
print (“Antes”, cont, suma)
for valor in [9, 41, 12, 3, 74, 15] :
cont = cont + 1
suma = suma + valor
print (cont, suma, valor)
print (“despues”, cont, suma, suma / cont)
Ejercicios

1. Realice un programa que muestre los 2. Escriba un programa que imprima la


números pares que haya del 1 al 100, serie Fibonacci,
la suma de todos los pares y la La sucesión de Fibonacci es la sucesión de
cantidad de pares que existen en el números:
intercalo 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
Ejemplo : 2 4 6 8 10 12 ….. Suma de Cada número se calcula sumando los dos
pares es: XXXXXXX y hay XXX anteriores a él.
numero pares. El 2 se calcula sumando (1+1)
Análogamente, el 3 es sólo (1+2),
Y el 5 es (2+3),
¡y sigue!

69
Ejercicios

3. Escribir un programa que contenga 4. Utilizando la función randrange del


una contraseña inventada, que le modulo random escribir un
pregunte al usuario la contraseña, y programa que obtenga un número
no le permita continuar hasta que la aleatorio secreto, y luego permita
haya ingresado correctamente. al usuario ingresar números y le
indique sin son menores o mayores
• Modificar el programa anterior que el número a adivinar, hasta
para que solamente permita que el usuario ingrese el número
una cantidad fija de intentos. correcto.

70
Secuencias
09 de febrero

71
Secuencias

Las cadenas son tipos de datos secuenciales. Un dato de


tipo escalar es un elemento único, atómico. Por el
contrario, un dato de tipo secuencial se compone de una
sucesión de elementos y una cadena es una sucesión de
caracteres. Los datos de tipo secuencial son datos
estructurados.

En Python es posible manipular los datos secuenciales de


diferentes modos, facilitando así la escritura de programas
que manejan conjuntos o series de valores.
Operaciones con cadenas

 Operador + (concatenación de cadenas)

 Operador * (repetición de cadena)

 Operador % (sustitución de marcas de formato) %d, %f

 ord: acepta una cadena compuesta por un único carácter y


devuelve su código ASCII (un entero).

 chr: recibe un entero (entre 0 y 255) y devuelve una cadena


con el carácter que tiene a dicho entero como código ASCII

 a.lower() (paso a minúsculas)

 a.upper() (paso a mayúsculas)


Escapes

 La barra invertida \ se denomina carácter de escape y es un


carácter especial

 \b ˂˂Espacio atrás˃˃
 \n Salto de línea
 \r Retorno de carro
 \t Tabulador horizontal
 \v Tabulador vertical
Observaciones

 Ciertos caracteres no se pueden representar directamente en


una cadena.
\\ Carácter barra invertida (\)
\" Comilla doble (")

Ejemplo
print ("a\\b")
print ("Una \"cosa\“ rara.“)
Otras Funciones

 len(“abc”)
 Indexación
Podemos acceder a cada uno de los caracteres de una cadena
utilizando un operador de indexación. El índice del elemento al que
queremos acceder debe encerrarse entre corchetes.
Debemos tener en cuenta que el primer elemento tiene índice
cero. Los índices de la cadena “Hola, mundo.” se muestran en esta
figura:

a[len()-1]
Algunas operaciones con listas

 Los operadores ==, != <, >, <= y >= también funcionan con
listas.
[1, 2, 3] == [1, 2]
 Ejercicios
 156(171) 157, 159,160 161, 167-171,179 230(205)
Matrices
16/02

79
Arreglos

Un arreglo es una estructura de datos, o más


técnicamente, un espacio de memoria que permite
almacenar una colección de elementos, todos del mismo
tipo. Conviene imaginar un arreglo como una secuencia
contigua de celdas (espacios de memoria), o casillas, en
cada una de las cuales se puede guardar un elemento de
la colección. Además, es usual dibujarlo como lo ilustra la
figura siguiente:

0 1 2 3 4 5
Matrices

Una matriz es una estructura de datos, o más técnicamente, un


espacio de memoria que permite almacenar una colección de
elementos
La diferencia con los arreglos está en que, en las matrices, los
elementos no están organizados linealmente sino que su
organización es bidimensional, es decir, en filas y columnas.
Es usual dibujarla como lo ilustra la figura siguiente:

0 1 2 3 4 5
0
1
2

81
Ejemplo de array de 6 elementos

datos = [ ]
for i in range(1,7):
nuevoDato = int( input( "Dime el dato numero {}:
".format(i) ))
datos.append(nuevoDato)
print (datos)

También podemos saber la cantidad de datos


con "len(datos)", eliminar un elemento con
".remove", insertar en una cierta posición con
".insert", o añadir toda una nueva lista de datos
con "+“.

82
si los valores no los vamos a recibir exactamente en orden. En ese
caso, se puede inicializar el array usando una orden "for" dentro de
los corchetes

datos = [0 for x in range(20)]


print (datos)

Ahora cambiemos los valores del arreglo

for i in range(0,len(datos)):
datos[i] = int( input( "Dime el dato numero {}:
".format(i+1) ))

83
Matrices en Python:

Sencillamente, las matrices son listas, dentro de


otro lista. Sí, así es, podemos decir que es una
lista bidimensional, 2x2.
datos = [
["uno", 2],
["a", "b"]]
print(datos)
Uno 2
a b

84
Creemos una Matriz
f =int(input("Ingrese el numero de filas: "))
c =int(input("Ingrese el numero de columnas: "))
n =int(input("Ingrese el el valor de la matriz: "))
matriz = []
for i in range(f):
a = [n]*c
matriz.append(a)
print (matriz)

85
Modifiquemos cada Valor de la Matriz

f =int(input("Ingrese el numero de filas: "))


c =int(input("Ingrese el numero de columnas: "))
matriz = []
for i in range(f):
a = [0]*c
matriz.append(a)
for i in range (f):
for j in range(c):
matriz[i][j] = int(input("introdusca el valor de la pocision
%d,%d: "%(i,j)))
print (matriz)

86
Ejercicio

Imprimamos una matriz mas elegante:


|1|2|3|
|7|8|9|
|4|5|6|

87
Operaciones con matrices
Suma

88
Multiplicación

89
Funciones
02/03

90
Funciones

Una función es un bloque de código con un nombre asociado, que


recibe cero o más argumentos como entrada, sigue una secuencia
de sentencias, la cuales ejecuta una operación deseada y
devuelve un valor y/o realiza una tarea, este bloque puede ser
llamados cuando se necesite.
tiene varias ventajas:
modularización: permite segmentar un programa complejo en una
serie de partes o módulos más simples, facilitando así la
programación y el depurado.
reutilización: permite reutilizar una misma función en distintos
programas.
Sentencia def

La sentencia def es una definición de función usada para crear


objetos funciones definidas por el usuario.
La definición de función no ejecuta el cuerpo de la función; esto es
ejecutado solamente cuando la función es llamada.
La sintaxis para una definición de función en Python es:

def NOMBRE(LISTA_DE_PARAMETROS):
"""DOCSTRING_DE_FUNCION"""
SENTENCIAS
RETURN [EXPRESION]

92
•NOMBRE, es el nombre de la función.
93
•LISTA_DE_PARAMETROS, es la lista de parámetros que puede
recibir una función.
•DOCSTRING_DE_FUNCION, es la cadena de caracteres usada
para documentar la función.
•SENTENCIAS, es el bloque de sentencias en código fuente
Python que realizar cierta operación dada.
•RETURN, es la sentencia return en código Python.
•EXPRESION, es la expresión o variable que devuelve la
sentencia return.

def hola(arg):
"""El docstring de la función""“
print "Hola", arg, "!"

La ejecución de la función hola()


Argumentos y parámetros
Al definir una función los valores los cuales se reciben se denominan
parámetros, pero durante la llamada los valores que se envían se
denominan argumentos.
Por posición
Cuando envía argumentos a una función, estos se reciben por orden en
los parámetros definidos.
def resta(a, b):
return a - b ...
>>> resta(30, 10)
20
Por nombre
def resta(a, b):
return a - b ...
>>> (b=30, a=10)
-20
94
Argumentos indeterminados

En alguna ocasión no sabremos previamente cuantos elementos


necesitamos enviar a una función. En estos casos podemos utilizar los
parámetros indeterminados por posición y por nombre.
Por posición
Deberemos crear una lista dinámica de argumentos, es decir, un
tipo tupla, definiendo el parámetro con un asterisco, para recibir los
parámetros indeterminados por posición:
def indeterminados_posicion(*args):
for arg in args:
print arg
>>> indeterminados_posición (5,"Hola Mundo",[1,2,3,4,5])
5
Hola Mundo
[1, 2, 3, 4, 5]

95
Por nombre
Para recibir un número indeterminado de parámetros por nombre
(clave-valor o en inglés keyword args), debemos crear un diccionario
dinámico de argumentos definiendo el parámetro con dos asteriscos:

def indeterminados_nombre(**kwargs):
print kwargs

>>> indeterminados_nombre(n=5, c="Hola Plone", l=[1,2,3,4,5]) {'c':


'Hola Plone', 'l': [1, 2, 3, 4, 5], 'n': 5}

96
Sentencia pass

Es una operación nula — cuando es ejecutada, nada sucede. Eso


es útil como un contenedor cuando una sentencia es requerida
sintácticamente, pero no necesita código que ser ejecutado, por
ejemplo:

def consultar_nombre_genero(letra_genero):
pass

97
Sentencia return

Nos permite regresar un valor al mundo exterior


def suma(numero1,numero2):
'''función para suma dos números'''
print numero1 + numero2
print "\n"

98
Retorno múltiple

def prueba():
return “hola mundo", 20, [1,2,3]
>>> prueba()
(hola mundo, 20, [1, 2, 3])

cadena, numero, lista = prueba()

99
Ejemplo
def iva()
: '''función básica para el calculo del IVA'''
iva = 12
costo = input(“¿Cual es el monto a calcular?: “)
calculo = costo * iva / 100
print "El calculo de IVA es: " + (calculo) + "\n“

Invocamos la función
Iva()

10
Ejercicio

Vamos a desarrollar una calculadora sencilla. Esta calculadora


permitirá al usuario introducir dos números, y realizar la suma, resta,
multiplicación y división de los dos números. Las opciones se
desplegaran en un menú que saldrá del programa hasta que el
usuario seleccione la opción salir

10
Procedimientos

10
2
Laboratorio Valor (5pts—3progra1 –
2LabPro1)

 Deberán utilizar los conocimientos


adquiridos en clase.
 Utilice Funciones
 Comente su Código
 .
1.
Deberás crear un programa que reciba varias frases y que diga si cada una de ellas es un
pangrama o no. Sólo deberás considerar las letras del alfabeto inglés (no te preocupes por las
vocales acentuadas ni la eñe, entre otras), que podrán aparecer en mayúsculas o en minúsculas.
La primera línea contendrá el número de frases y después aparecerá una nueva frase en cada
línea. Para cada frase deberás responder SI cuando se trate de un pangrama o NO cuando no lo
sea.
Ejemplo de entrada: 3
 The quick brown fox jumps over the lazy dog
 El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del
palenque de paja
 El viejo Señor Gómez pedía queso, kiwi y habas, pero le ha tocado un saxo.
Ejemplo de Salida
The quick brown fox jumps over the lazy dog --SI--
El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del
palenque de paja --SI--
El viejo Señor Gómez pedía queso, kiwi y habas, pero le ha tocado un saxo. –NO--

10
2.
Debes indicar si una serie de matrices tienen alguna fila repetida.
La primera línea indicará la cantidad de casos a probar (no más de 10).
Para cada caso, una primera línea contendrá el ancho y el alto de cada matriz
(no más de 10). Las siguientes líneas (tantas como indique el alto) serán los datos
de una fila de la matriz, números enteros entre -10000 y 10000 (tantos como
indique el ancho), separados por uno o varios espacios en blanco.
Deberás responder SI en caso de que alguna de las filas de la matriz esté
repetida, o NO en caso contrario.

10
Ejemplo 2
Casos a Probar : 4 0 1 28 -34 57
Tamaño Matriz :3 2 -23 -21 -19 -15 -10
Datos 1 1 1 1 1
123 Tamaño Matriz:2 2
-1 0 1 Datos
Tamaño Matriz :4 3 1 11
Datos 11 1
5123 Ejemplo de Salida:
-1 0 3 1 Matriz 3 2 : No
5123 Matriz 4 3 : SI
Tamaño de Matriz: 5 5 Matriz 5 5 : SI
Datos : Matriz 2 2 : No
11111
123 345 567 -123 -345

10
3
Crea un programa capaz de calcular la suma de los números que se
indicarán en la entrada estándar, separados por espacios, y mostrar los
resultados en pantalla. Los números pueden ser negativos, grandes y las
líneas pueden contener espacios adicionales, por lo que el programa
debe ser robusto.
(Cuidado: no debe ser "amigable", sino estricto: no debe decir nada
como "introduce los datos" ni responder con nada como "la suma es...";
debe tomar cada línea de datos de la entrada estándar, analizarla y
mostrar los resultados en la salida estándar).
Ejemplo de entrada
123456789012 1
23
4 5 -1
Ejemplo de salida
123456789013
5
8
10
Variables Globales y
Locales
16 de marzo

10
8
 Lectura de las paginas 163 a 173 del libro
Funciones recursivas y
GUI
23 de marzo

11
0
Función Recursiva

Las funciones recursivas son funciones que se llaman a sí mismas durante su


propia ejecución. Ellas funcionan de forma similar a las iteraciones, pero debe
encargarse de planificar el momento en que dejan de llamarse a sí mismas o
tendrá una función recursiva infinita.
Estas funciones se estilan utilizar para dividir una tarea en sub-tareas más
simples de forma que sea más fácil abordar el problema y solucionarlo.

1. Un algoritmo recursivo debe tener un caso base.


2. Un algoritmo recursivo debe cambiar su estado y moverse hacia el caso
base.
3. Un algoritmo recursivo debe llamarse a sí mismo, recursivamente.

Un caso base es la condición que permite que el algoritmo detenga la


recursividad. Un caso base es típicamente un problema que es lo
suficientemente pequeño como para resolverlo directamente.
Como Funciona?

def sumalista(listaNumeros): ( ( ( (1+3) +5 )+7)+9) ó (1+ (3+ (5


laSuma = 0 +(7+9) ) ) )

for i in listaNumeros:
total= (1+(3+(5+(7+9))))
laSuma = laSuma + i
total= (1+(3+(5+16)))
return laSuma
total= (1+(3+21))
total= (1+24)
print(sumalista([1,3,5,7,9]))
total= 25

11
Entendamos el Código

def sumalista(listaNumeros):
if len(listaNumeros) == 1:
return listaNumeros[0]
else:
return listaNumeros[0] + sumalista(listaNumeros[1:])

print(sumalista([1,3,5,7,9]))

11
11
Función recursiva sin retorno

def cuenta_regresiva(numero):
numero -= 1
if numero > 0:
print (numero)
cuenta_regresiva(numero)
else:
print ("Boooooooom!")
print ("Fin de la función", numero)

cuenta_regresiva(10)

11
Función recursiva con retorno

def factorial(numero):
print ("Valor inicial ->",numero)
if numero > 1:
numero = numero * factorial(numero -1)
print ("valor final ->",numero)
return numero

print (factorial(5))

11
Librería Grapichs

1. Instalación de pip
2. Instalación de la Librería
3. Primer Programa
4. Documentación de la librería
a. https://mcsp.wartburg.edu//zelle/python/graphics/graphics/index.
html
b. http://anh.cs.luc.edu/handsonPythonTutorial/graphics.html#
5. Modificando el Memorión
6. Librería tkinter

11
Ejercicio

1. Escribir una función recursiva que encuentre el mayor


elemento de una lista
2. Escribir una función recursiva para replicar los elementos de
una lista una cantidad n de veces.
Por ejemplo, replicar ([1, 3, 3, 7], 2)
Salida
[1, 1, 3, 3, 3, 3, 7, 7]

11
Registros y GUI
30 de marzo

11
9
Leer el capitulo 7 y realizar un
resumen a mano
Interfaces gráficas
Los programas con interfaces gráficas son fundamentalmente diferentes
a los programas con interfaces de texto. Los programas que hemos
escrito hasta ahora se ejecutan completamente de principio a fin,
deteniéndose sólo cuando debemos ingresar datos.

Los programas gráficos, por otra parte, realizan acciones sólo cuando
ocurren ciertos eventos provocados por el usuario (como hacer clic en un
botón, o escribir algo en una casilla de texto), y el resto del tiempo se
quedan esperando que algo ocurra, sin hacer nada. El programa no
tiene control sobre cuándo debe hacer algo. Esto requiere que los
programas sean estructurados de una manera especial, que iremos
aprendiendo de a poco.

Python incluye un módulo llamado Tkinter que provee todas las funciones
necesarias, que deben ser importadas al principio del programa:

12
Creación de la ventana

El siguiente programa es la interfaz gráfica más simple que se


puede crear:

from Tkinter import *


w = Tk()
w.mainloop()

12
La sentencia w = Tk() crea la ventana principal del programa, y la
asigna a la variable w. Toda interfaz gráfica debe tener una
ventana principal en la que se irán agregando cosas. Esta línea va
al principio del programa.
La sentencia w.mainloop() indica a la interfaz que debe quedarse
esperando a que el usuario haga algo. Esta línea siempre debe ir al
final del programa.
Al ejecutarlo, puede darse cuenta que el programa no termina.
Esto ocurre porque la llamada al método mainloop() se «queda
pegada» esperando que algo ocurra. Esto se llama un ciclo de
eventos, y es simplemente un ciclo infinito que está continuamente
esperando que algo ocurra.
Todos los programas con interfaz gráfica deben seguir esta
estructura: la creación de la ventana al principio del programa y la
llamada al ciclo de eventos al final del programa.

12
Creación de widgets

Un widget es cualquier cosa que uno puede poner en una


ventana. Por ahora, veremos tres tipos de widgets sencillos,
que son suficientes para crear una interfaz gráfica
funcional:
 las etiquetas (Label) sirven para mostrar datos,
 los botones (Button) sirven para hacer que algo
ocurra en el programa, y
 los campos de entrada (Entry) sirven para ingresar
datos al programa.
En un programa en ejecución, estos widgets se ven así:

12
El Entry es análogo al input de los programas de consola: sirve
para que el programa reciba la entrada. El Label es análogo
al print: sirve para que el programa entregue la salida.
Un botón puede ser visto como un «llamador de funciones»:
cada vez que un botón es presionado, se hace una llamada a
la función asociada a ese botón. Los botones no tienen un
análogo, pues los programas de consola se ejecutan de
principio a fin inmediatamente, y por esto no necesitan que las
llamadas a las funciones sean gatilladas por el usuario.
Para agregar un widget a un programa, hay que ocupar las
funciones con los nombres de los widgets
(Label, Button y Entry). Estas funciones reciben como primer
parámetro obligatorio la ventana que contendrá el widget.
Además, tienen parámetros opcionales que deben ser
pasados usando la sintaxis de asignación de parámetros por
nombre. Por ejemplo, el parámetro text sirve para indicar cuál
es el texto que aparecerá en un botón o en una etiqueta.

12
Por ejemplo, la siguiente sentencia crea un botón
con el texto Saludar, contenido en la ventana w:

b = Button(w, text='Saludar')
Si bien esto crea el botón y lo asigna a la
variable b, el botón no es agregado a la
ventana w inmediatamente: lo que hicimos fue
simplemente decirle al botón cuál es su
contenedor, para que lo tenga en cuenta al
momento de ser agregado. Para que esto
ocurra, debemos llamar al método pack, que
es una manera de decirle al widget
«empaquétate dentro de tu contenedor»:
b.pack()
12
from Tkinter import *
w = Tk()
l = Label(w, text='Etiqueta')
l.pack()

b = Button(w, text='Boton')
b.pack()

e = Entry(w)
e.pack()

w.mainloop()

12
Controladores

Al crear un botón de la siguiente manera:


b = Button(w, text='Saludar')
no hay ninguna acción asociada a él. Al hacer clic en el botón,
nada ocurrirá.
Para que ocurra algo al hacer clic en el botón, hay que asociarle
una acción. Un controlador es una función que será ejecutada al
hacer clic en un botón.
Los controladores deben ser funciones que no reciben ningún
parámetro.
Por ejemplo, supongamos que queremos que el programa imprima
el mensaje Hola en la consola cada vez que se haga clic en el
botón que dice «Saludar». Primero, hay que crear el controlador:
def saludar():
print 'Hola'

12
Para asociar el controlador al botón, hay que pasarlo a través del
parámetro command (en inglés: «orden») al momento de crear el
botón:
b = Button(w, text='Saludar', command=saludar)
Esta línea significa: crear el botón b, contenido en la ventana w,
que tenga el texto 'Saludar' y que al hacer clic en él se ejecute la
función saludar.
El siguiente ejemplo es un programa completo que tiene dos
botones: uno para saludar y otro para salir del programa. El
controlador del segundo botón es la función exit, que ya viene con
Python:

12
from Tkinter import *

130
def saludar():
print 'Hola'

w = Tk()

l = Label(w, text='Hola progra')


l.pack()

b1 = Button(w, text='Saludar', command=saludar)


b1.pack()

b2 = Button(w, text='Salir', command=exit)


b2.pack()

w.mainloop()
Modelos

Mediante el uso de controladores, ya podemos hacer interfaces


que hagan algo, pero que siguen teniendo una limitación: las
interfaces sólo reaccionan a eventos que ocurren, pero no tienen
memoria para recordar información.
Un modelo es un dato almacenado que está asociado a la interfaz.
Usando modelos, se puede lograr que la interfaz vaya cambiando
su estado interno a medida que ocurren eventos.
En general, a la hora de crear un programa con interfaz gráfica,
debemos crear un modelo para cada dato que deba ser
recordado durante el programa.
Tkinter rovee varios tipos de modelos, pero para simplificar
podemos limitarnos a usar sólo modelos de tipo string. Un modelo
puede ser creado de la siguiente manera:
m = StringVar()
13
Aquí, el modelo m es capaz de recordar un string
Para modificar el valor del modelo m, se debe usar el método set, que recibe el valor como
único parámetro:
m.set('hola')
Para obtener el valor del modelo m, se debe usar el método get, que no recibe ningún
parámetro:
s = m.get()
En este ejemplo, la variable s toma el valor 'hola'.
Como los modelos creados por StringVar almacenan datos de tipo string, hay que tener
cuidado de hacer las conversiones apropiadas si se desea usar datos numéricos:
a = StringVar()
b = StringVar()
a.set(5) # es convertido a string
b.set(8) # es convertido a string
print a.get() + b.get() # imprime 58
print int(a.get()) + int(b.get()) # imprime 13

13
13
SlidesCarnival icons are editable shapes.

This means that you can:


● Resize them without losing quality.
● Change fill color and opacity.

Isn’t that nice? :)

Examples:

13
😉
Now you can use any emoji as an icon!
And of course it resizes without losing quality and you can change the color.

How? Follow Google instructions


https://twitter.com/googledocs/status/730087240156643328

✋👆👉👍👤👦👧👨👩👪💃🏃💑❤😂
😉😋😒😭👶😸🐟🍒🍔💣📌📖🔨🎃🎈
🎨🏈🏰🌏🔌🔑 and many more...
13

Vous aimerez peut-être aussi