Guía Python
Guía Python
Aquí van varias razones por las cuales aprender y usar Python es una buena decisión .
-Legibilidad
Los programas de Python usan instrucciones claras, simples y concisas que son
fáciles de leer, incluso para aquellos que no tienen una gran experiencia en
programación. Los programas escritos en Python son, por lo tanto, más fáciles de
mantener, depurar o mejorar.
-Alta productividad
4) Cree un algoritmo que dado 3 números enteros distintos ingresados por el usuario
, imprimir el mayor. Adicionalmente imprimir la raíz cuadrada del mayor, si el número
mayor es negativo, aplicarle valor absoluto antes de imprimir su raíz cuadrada. Limitar de
ser posible a 2 decimales la raíz cuadrada de dicho número.
Caso 1: el mayor es positivo
caso 2:
6) Se tienen 3 productos en una tienda, si el comprador tiene una edad mayor igual a
80 se le aplica un descuento al primer producto de 20%, 30% al segundo y un descuento
directamente proporcional a la edad. Si la edad del comprador es menor igual a 17, todos los
precios sufren un descuento de 5%. Diseñe un algoritmo que dada una edad y los precios de
cada producto (números enteros), muestre los precios de los producto tomando en cuenta las
reglas de venta de la tienda. Si la edad es mayor a 120 en vez de imprimirse los precios, se
imprime “Entrada inválida”.
Mediante la estructura if-else tan sólo se evaluó los casos en donde la edad era menor
igual a 17 o mayor igual a 80 además del caso en que se ingrese una edad mayor igual a
120. Luego de las estructuras condicionales se imprimen los precios, si algún condicional
se cumplió entonces los precios saldrán afectados de forma acorde con las reglas de la
tienda, sino los precios se imprimirán sin sufrir ningún precio. Notar que en el caso de que
la edad sea mayor igual a 80 y menor igual a 120, si la edad es mayor igual a 100 el precio
se reduce a 0 (no tiene sentido un precio negativo) para ese detalle se utiliza una estructura
if-else dentro del elif de la línea 10. Notar que al hacer en la línea 7, a=a-(a*0.05) allí
estamos reduciendo el valor de a (el precio del primer producto) un 5%. esto se hace con los
demás precios según el caso. Recordar que las operaciones encerradas en paréntesis se
realizan primero.
-Imprimir 1 si la suma de los dos primeros es mayor que el 3ero o si dicha suma es igual a 5
veces el tercero.
-Imprimir 2 si la suma de los dos últimos es menor que el doble del 1ero o si el resultado de
tal suma es par.
-Imprimir 3 si no se cumple ninguna condición anterior. Es posible que los dos primeros
casos se cumplan.
Aprovechamos para explicar el operador “or”. Este operador sirve para agrupar dos
comparaciones, el resultado de la operación or únicamente será falsa cuando ambas
condiciones son falsas, en cualquier otro caso resultará verdadero. Es posible agrupar más
de dos comparaciones con este operador pero necesitaríamos más de un “or” ya que
debemos recordar que este operador es binario, es decir, sólamente sirve para agrupar 2
comparaciones.
Con lo anterior explicado es fácil entender que si por lo menos una de las dos
comparaciones que están dentro los if de las líneas 5 y 7 resulta verdadera, se ejecutará las
instrucciones que estén dentro de los if.
Esta vez usamos otra vez una variable lógica (línea 4) para atender el 3er caso, el cual sólo
se evaluará si los dos primeros resultan falsos. Notar que dicha variable se inicializa en True
puesto que a ese punto el programa no sabe si las dos próximas condiciones son verdaderas
o falsas, en caso de que alguna o ambas sea verdadera no queremos que se imprima 3, así
que la variable la modificamos a falso . Otro aspecto importante a destacar es el uso
adecuado de los paréntesis para agrupar correctamente las operaciones, si se comete un error
a la hora de agrupar operaciones aritméticas o lógicas los resultados no serán los esperados.
9) Escriba un algoritmo que pida un año (número entero) y que escriba si es bisiesto o
no.Se recuerda que los años bisiestos son múltiplos de 4. Si el año es múltiplo de 100
entonces no lo es. Si es múltiplo de 100 y a su vez de 400 entonces sí es bisiesto.
Usamos una variable lógica para determinar si el año ingresado es bisiesto o no, se
inicializa en True, luego se evalúan los casos. Notar que en el primer condicional se usa la
sentencia pass, ya que si un año es divisible entre 4 es entonces bisiesto, y como
inicialmente b vale True no necesitamos modificar su valor, entonces no necesitamos hacer
algo en específico, y esa es precisamente la función de la sentencia pass, no hacer nada. En
el caso de que el año sea divisible entre 100 se modifica b a falso, pero luego se evalúa en
un condicional más interno si es divisible entre 400 y de ser verdad b volvería a ser
verdadero. Por último, se evalúa si b es verdadero o falso para imprimir si se trata de un
año bisiesto o no según el caso.
10) Dado un número entero de 4 dígitos, escriba un algoritmo que haga lo siguiente:
-Imprimir “1” si el número es par y si los dos dígitos más a la derecha al sumarse dan un
resultado par o múltiplo de 5.
-Imprimir “2” si el número es impar y si la suma de todos sus dígitos es impar o múltiplo de
7.
En anteriores ejercicios aprendimos a operar con los operadores “and” y el “or” por
si solos, ahora se explicara como usar ambos en un mismo condicional. Otra vez el tema de
los paréntesis es importante ya que nos permite agrupar cada operación lógica. Recordemos
que “and” permite agrupar dos comparaciones y retorna verdadero si y sólo si ambas
comparaciones son verdad. Por el contrario, el “or” retorna falso solamente cuando ambas
comparaciones son falsas. En los condicionales del algoritmo se muestra que se agrupa con
paréntesis la operación del “or”, de esta forma se trata como un solo objeto permitiendo que
el “and” agrupe 2 operaciones lógicas. Se evalúan los condicionales de la siguiente manera,
si la primera comparación (más a la izquierda) es falsa, sin importar el resultado del “or” el
condicional no se cumplirá, si es cierta, se verifica si la operación del “or” es verdadera, y
para que esto suceda una de las dos comparaciones que agrupa el or debe ser cierta. Siendo
entonces ambas operaciones lógicas verdaderas, el operador and retorna verdadero
permitiendo que el condicional se cumpla. En el algoritmo se hace lo siguiente: luego de
recibir el número de 4 dígitos se copia su valor en la variable aux y con ella se trabaja para
separar los dígitos del número y colocarlos en distintas variables, aux1, aux2, aux3 y aux4.
Creamos una variable “x” que almacenará la suma de los dos primeros dígitos que usaremos
en el primer condicional y una variable y que contendrá la suma de todos los dígitos que
usaremos en el 2do condicional. En el primer condicional se comprueba si el número es par
y además si “x” es par o divisible entre 5 (si no lo es, entonces no es múltiplo de 5), en caso
de cumplirse el condicional, se imprime 1. Luego en otro condicional, se evalúa si el
número es impar y además si “y” es impar (si no es divisible entre 2, no puede ser par) o si
es divisible entre 7 y en caso de que el condicional se cumpla se imprime 2.
Si necesitaramos repetir una misma instrucción varias veces sería tedioso tener que
volverla a escribir tantas veces la necesitemos ejecutar. Los
ciclos o también llamados bucles son estructuras iterativas que se encargan de ejecutar una o
varias instrucciones tantas veces según nosotros queramos y ahora aprenderemos a como
usarlos. Se trabajará con los ciclos while y for que están presente en la mayoría de los
lenguajes de programación.
2) Escriba un algoritmo que sume los números enteros que vaya ingresado el
usuario, esto terminará cuando ingrese “-1”. finalmente imprimir la suma total.
El usuario puede ingresar tanta cantidad de números como quiera, si ingresa -1 es
porque no ingresará más ninguno (en la suma, no se cuenta el -1). El bucle while, evalúa si
la condición es cierta para luego ejecutar sus instrucciones, las volverá a ejecutar hasta que
sea falsa dicha condición, de ahí su nombre, ya que se ejecutará dicho ciclo mientras la
condición sea verdadera. En este caso ponemos “True” dentro de los paréntesis del while
(que es donde se coloca las condición del ciclo while) , para que siempre se ejecute el ciclo,
pero adentro del while, colocamos un condicional que nos evalúe si el número ingresado por
el usuario es -1, en caso de ser cierto se ejecuta la instrucción “break” que hace que el
programa deje de ejecutar el ciclo inmediatamente, en caso de no ser igual a -1, se le
adiciona a la variable “sum”. Luego del ciclo se imprime la suma total. Hasta aquí hemos
visto los dos ciclos que tiene Python, el for y el while. Recordar que en las estructuras
condicionales como en las iterativas necesita colocar una sangría (indentado) para que
python diferencie las instrucciones que estén dentro de dicha estructura de las que están
afuera.
Opción 1: (se selecciona ingresando “1”) Se pide al usuario que ingrese un número
entero positivo, para luego imprimir la suma de todos los números enteros positivos que le
preceden a dicho número (incluyendolo). La opción se llamará “sumatoria”.
Opción 2: (se selecciona ingresando “2”) pide al usuario que ingrese un número
entero positivo, y se debe imprimir su factorial. (Recordar que el factorial de un número
entero positivo es el producto de todos los números enteros comprendidos desde el 1 hasta
dicho número). La opción se llamará “factorial”.
Luego que alguna de las dos operaciones terminen, se le debe informar al usuario que
si quiere volver a escoger una opción, debe marcar 1, en otro caso finaliza el programa.
Como tal, todo nuestro programa está dentro de un bucle while, que se ejecuta
siempre y cuando la variable “prog” valga 1. Es por eso que al crearla le otorgamos de una
vez el valor 1. Luego que se ejecute una opción, le preguntamos al usuario si quiere
continuar usando el programa, en ese caso que marque 1 o cualquier otro número entero en
caso contrario, de todas formas el valor que ingrese se guardará en la variable prog. Para
que el usuario pueda seleccionar una opción, creamos la variable “op” y una estructura “if-
else”, el valor que ingrese el usuario irá a la variable “op” y si es 1 se cumplirá el primer
condicional que se trata de la opción sumatoria, que luego de pedirle al usuario que digite
un número positivo entero, se hace uso de un bucle for para obtener la suma de todos los
números comprendidos desde 1 hasta el número ingresado, notar el uso que se le da la
variable “suma” inicializada en 0, en cada iteración se suma el valor del iterador con el de la
variable “suma” y se guarda el valor esa misma variable. Si “op” vale 2, se ejecutará la
opción del factorial (elif) donde se pide al usuario el número que se calculará su factorial,
para eso se utiliza otra vez el bucle for y una variable “fact” inicializado en 1, en cada
iteración se multiplica el valor del iterador con el valor actual de la variable “fact” y se
guarda el valor en esa misma variable.
7) Escriba un algoritmo que reciba línea por línea dígitos de 1 al 9 ingresados por el
usuario hasta que éste ingrese -1, luego imprimir todos estos números como uno sólo (el
primer número ingresado será el dígito más a la izquierda). Si por ejemplo, los números
ingresados por el usuario sin contar el -1 son: 9 6 5 1 3 4 imprimir 965134. Asuma que no
se ingresará 0.
A dos o más variables se le pueden asignar valores, precediendo el operador de
asignación antes de la siguiente variable, así como se hizo en el algoritmo mostrado. Las
variables num1 y num2 en la línea 1 guardarán el valor del primer dígito, si es distinto de -1
entonces la condición del while se cumplirá iniciando el ciclo. Se multiplica por 10, num2
(variable en la cual se imprimirá el número al final) para luego pedir otro dígito (usando otra
vez num1) y sumarselo a num2, de esta manera el nuevo dígito quedará a la derecha. Luego
de terminar el ciclo se debe usar la división entera para quitar el 0 más a la derecha que
quedó por causa de la multiplicación efectuada en el ciclo. Por último, se debe imprimir el
número ya con los dígitos ingresados juntos que contiene la variable num2.
Luego de crear dos variables que guardarán los números que comprenderán el
rango de números primos que desea el usuario, creamos una variable lógica que nos
ayudará más tarde para imprimir un número en caso de ser primo. En el ciclo for de
la línea 4 creamos nuestro iterador “x” y establecemos el rango que va desde el
primer número hasta el segundo número más 1 ya que recordar que la función range
es exclusiva por la izquierda (estos números fueron los que ingresó el usuario) . En
cada iteración le otorgamos el valor de verdadero a la variable primo porque vamos a
comprobar si el valor actual del iterador es primo o no. Para saber si es primo o no
aplicamos el mismo algoritmo que hemos visto antes para saber si un número es
primo o no. En caso de que el número es primo, la variable “primo” no se modifica y
entonces el condicional de la línea 9 se cumplirá y por tanto se imprimirá el número.
Se debe saber que fuera de Python existen otros tipos de ciclos, como Do while por ejemplo.
Funciones
Sintaxis:
El usuario ingresara 10 números enteros, determinar si son pares o impares y además de determinar
si son primos o compuestos. Utilice ciclos y funciones.
def deter(x):
primo=True
for i in range(2,x):
if(x%i==0):
primo=False; break
if(primo):
print("Es primo")
else:
print("Es compuesto")
for i in range(6):
deter(int(input("Ingresar número: ")))
El usuario ingresara 10 cadena de caracteres (strings) , determinar en cada caso es capicua.
Ejemplo: “abba” es capicúa, en cambio “ajfha” no lo es.
def deter(x):
k=len(x)-1; capicua=True
for i in range(len(x)):
if(x[i] != x[k]):
capicua=False; break
if(k==i):
break
k-=1
if(capicua):
print("Es capicua ")
else:
print("No es capicua ")
for i in range(6):
deter(input("Ingresar string: "))
Realice un codigo el cual cuente todos los números múltiplos de 3 entre dos números dados.
Ejercicios:
Realice un programa que dado una entrada imprima si se está ingresando una vocal o
una consonante.
Arreglos/Listas
En Python no existen los arreglos, existen las listas, las cuales cumplen las mismas
funciones y prestaciones.
Sintaxis:
lista = [1, 2, 3, 4 ]
Y existen algunas funciones tales como reverse() que imprime el contenido de la lista
de derecha a izquierda, sort() que ordena la lista, entre otros.
Para tomar una sola variable en específico debes de referirte a ella según su posición,
de la siguiente manera.
lista [1]
Matrices
Las matrices son básicamente un arreglo de arreglos, se puede pasar de hacer
matrices bidimensionales, a tridimensionales e inclusive de infinitas dimensiones.
En python no existen matrices como tal, sino, en cambio, listas de listas las cuales se
crean manualmente.
write() escribe desde la posición donde se encuentre, y si ya existe algo queda sobre
escrito, cuando termina anota la nueva posición en un puntero.
readline() lee el texto desde la posición en que se localiza hasta encontrar el carácter
de escape retorno de línea (\n).
readlines() leer el texto desde la posición en que se localiza y creará un objeto de tipo
tupla que contendrá cada línea dentro del archivo.
Ejemplos:
Clases
Una clase es básicamente una forma de crear tu propio tipo de dato, incluyendo procesos,
funciones, tipos de variables, etc.
La forma de acceder a los atributos y los métodos es a través de el nombre de el nombre de la clase
(osea, la variable igualada a la clase) “.” y el nombre de la función/variable.
Sintaxis en Python:
Class Nombre de la clase :
Atributos
Variable = ‘ ‘ #En caso de un String o carácter
Variable = 0 #En caso de un entero
Métodos
def Nombre de método(self, Parámetros, o vacío):
Instrucciones
Esta función es una inicializadora, lo que hace es declarar las variables o atributos que serán
utilizados en la clase. el colocarlos de esta forma hace que solo puedan ser accedidos desde la clase
Existe algo llamado Registro, lo cual se asemeja a una clase pero sin métodos, los registros tienen
como objetivo almacenar distintos tipos de datos en una sola sección. Estos también permiten
guardar varios tipos de bajo un nombre, y son accedidos de la misma manera que se accede en una
clase. En python estos directamente no existen.
Ejemplo:
Aquí podemos ver cómo se inicializa la clase, cómo se crean las funciones, en el “main” podemos
ver que creamos una variable var. la cual es la variable que toma el tipo “calculadora” teniendo sus
atributos y métodos, también podemos ver abajo como se llama a cada uno de sus métodos.
Ejercicios:
Cree una clase rectángulo en la cual el usuario ingrese el valor de los lados, se
calcule automáticamente el area y perimetro y se impriman cualquiera de los datos
mencionados según pida el usuario.
Realice una lista de clases de palabras, las cuales serán escritas por el usuario, entre
los atributos se debe indicar el número de letras que poseen cada una, y si es
palindrome, luego, después de realizar eso, guardar las palabras palíndromas en una
carpeta “palindrome.bin” y el resto en una carpeta llamada “palabras.txt”.
Realice una clase la cual le pida un usuario la ubicación inicial de una pelota, la
ubicación final, y el tiempo transcurrido, que se calculen y se guarden como atributos
de una clase o registros la distancia total recorrida y la aceleración y estos sean
después almacenados como archivos .txt o .bin