Blog
100 Preguntas de Entrevista o Examen sobre lenguaje Python
- Publicado por: Rafael Fernandez
- Categoría: Blog Nivel Intermedio Python Principiante Python
Python es uno de los lenguajes más utilizados, y por ello la certificación también es importante en el dominio de la programación. A continuación vas a encontrar las preguntas más frecuentes en una entrevista de Python. Ellas te van a ayudar a impulsar tu preparación sobre conceptos básicos para que obtengas el máximo beneficio y que además te ayudaran a aprender más sobre Python.
Preguntas básicas sobre Python
Lista vs. Tupla |
|
LISTA | TUPLAS |
Las listas son mutables, es decir, se pueden editar. | Las tuplas son inmutables (las tuplas son listas que no pueden ser editadas). |
Las listas son más lentas que las tuplas. | Las tuplas son más rápidas que la lista. |
Syntax: list_1 = [10, ‘Chelsea’, 20] | Syntax: tup_1 = (10, ‘Chelsea’ , 20) |
- Python es un idioma interpretado, contrario a otros lenguajes como C y variantes, Python no necesita de compilados antes de ser ejecutado. Hay otros lenguajes interpretados como PHP y Ruby.
- Python es escrito de forma dinámica, esto quiere decir que, no es necesario indicar los tipos de variables cuando se declaran o algo así. Puedes hacer cosas como x=111 y luego x="Soy una cadena", sin error.
- Python se adapta muy bien a la programación orientada a objetos porque permite definir clases junto con la composición y la herencia. No tiene especificadores de entrada (como los de C++ públicos, privados).
- En Python, las funciones son objetos de primera clase. Esto quiere decir que, pueden asignarse a variables, devolverse desde otras funciones y pasar a funciones. Las clases también son objetos de primera clase.
- Escribir código Python es rápido, pero la ejecución puede ser más lenta que la de lenguajes compilados. Afortunadamente, Python permite incluir extensiones basadas en C, así los cuellos de botella se pueden optimizar y a menudo lo son. El paquete numpy, es un buen ejemplo de esto, es realmente rápido porque la mayor parte del calculo que hace no lo hace Python.
- Python es útil en muchas esferas: automatización, aplicaciones web, grandes aplicaciones de datos, modelado científico, y muchas más. También es utilizado frecuentemente como código "intermediario" para lograr que otros lenguajes y componentes jueguen bien.
Python puede crear scripts, pero, es un lenguaje de programación de propósito generalizado.
Python es un idioma interpretado, que no está en código a nivel de máquina antes de su tiempo de ejecución.
PEP son siglas que representan a Python Enhancement Proposal. Y que especifican cómo formatear el código de Python para que tenga una máxima legibilidad.
1. La memoria en Python es gestionada por Python private heap space. Entonces, los objetos y estructuras de datos de Python se localizan en un montículo privado (una estructura de datos tipo árbol). El programador no tiene entrada a este montículo privado, de eso se encarga el intérprete de Python.
2. La asignación del espacio en montículos para objetos Python, la realiza el gestor de memoria de Python. La API principal da entrada a varias herramientas para que el programador las codifique.
3. Python, tiene un recolector de basura incluido, el cual recicla la memoria que no está en uso y así, se puede poner a disposición del espacio en el montículo.
Un espacio de nombres: es el sistema de nombres que se usa para asegurarse que los nombres son únicos y así evitar conflictos de nombres.
Es una variable de entorno y se usa cuando se importa un módulo. También, se usa PYTHONPATH para la comprobación de la presencia de los módulos importados en algunos directorios. El intérprete lo usa para determinar cual módulo va a cargar.
Los módulos Python son archivos que tienen código Python. Este código pueden ser variables o clases de funciones. Un módulo Python es un archivo .ly el cual tiene código ejecutable.
Algunos de los módulos incorporados comúnmente utilizados son:
-JSON
-os
-Random
-sys
-Data time
-Math
Variables locales:
Es la variable declarada dentro de una función. Esta variable se encuentra en el espacio local y no en el global.
Variables globales:
Son las variables declaradas fuera de una función o que están en el espacio global. A estas variables se puede acceder desde cualquier función del programa.
Ejemplo:
a=2 #Variable Global def add(): b=3 #Variable Local c=a+b print(c) add()
Salida: 5
Al intentar entrar a la variable local fuera de la función add(), se va a producir un error.
Sí. Python, es un lenguaje que tiene sensibilidad ante mayúsculas.
La conversión de tipos está referida a la conversión de un tipo de los datos en otro.
int() - convierte cualquier tipo de datos en un tipo entero.
float() - convierte cualquier tipo de datos en tipo flotante.
ord() - convierte caracteres en enteros.
hex() - convierte números enteros a hexadecimales.
oct() - convierte un entero a octal.
tuple() - Esta función se usa para convertir a una tupla.
set() - Esta función devuelve el tipo después de convertirlo a set.
list() - Esta función se usa para convertir cualquier tipo de datos a un tipo de lista.
dict() - Esta función se usa para convertir una tupla de orden (clave, valor) en un diccionario.
str() - Se usa para convertir un entero en una cadena.
complex(real,imag) - Esta función convierte números reales en números complejos (real,imag).
Para instalar Python en Windows, siga los siguientes pasos:
- Instala Python desde este enlace: https://www.python.org/downloads/
- Después de ello, instálelo en su PC. Busque la ubicación en la que se ha instalado Python en su PC usando el comando siguiente en la línea de comandos: cmd python.
- A continuación, ve a la configuración avanzada del sistema y agrega una nueva variable y nómbrela como PYTHON_NAME y pega la ruta copiada.
- Busca la variable de la ruta, selecciona su valor y seleccione'editar'.
- Agrega un punto y coma despues del valor si no está presente y luego escribe %PYTHON_HOME%.
La indentación es muy necesaria en Python. Esta especifica un bloque de código. Todo el código dentro de las clases, funciones, bucles, etc, se especifica dentro de un bloque indentado (indented block). Generalmente, se realiza usando cuatro caracteres de espacio. Si su código no está indentado, no se ejecutará con precisión y arrojará errores.
Las matrices y listas en Python usan la misma manera de guardar datos. Pero las matrices sólo pueden tener un único elemento de tipo de datos pero las listas pueden tener cualquier elemento de tipo de datos.
Ejemplo:
import array as arr Mi_Array=arr.array('i',[1,2,3,4]) Mi_lista=[1,'abc',1.20] print(Mi_Array) print(Mi_lista)
Salida: array('i',[1, 2, 3, 4])[1, 'abc', 1.2]
La función es un bloque de código que se ejecuta sólo cuando se llama. Para definir una función en Python se usa la palabra clave def.
Ejemplo:
def Nuevafuncion(): print("Hola, bienvenido") Nuevafuncion(); #llamar a la funcion
Salida: Hola, bienvenido
__init__ es un método o constructor en Python. Este método se llama de manera automática para asignar memoria cuando se crea un nuevo objeto/ instancia de una clase. Todas las clases poseen el método __init__.
Ejemplo de cómo usa __init__:
class Empleado: def __init__(self, nombre, edad, salario): self.nombre = nombre self.edad = edad self.salario = 20000 E1 = empleado ("XYZ", 23, 20000) # E1 es la instancia de la clase empleado. #__init__ allocates memory for E1. print(E1.nombre) print(E1.edad) print(E1.salario)
Salida:
XYZ
23
20000
Una función anónima se le llama función lambda la cual puede tener diferentes números de parámetros pero puede tener una sola sentencia.
Ejemplo:
a = lambda x,y : x+y print(a(5, 6))
Salida: 11
El Self en Python es una instancia u objeto de una clase. Es explicitamente incluido como el primer parámetro. Sin embargo, en Java este no es el caso, es opcional. Este ayuda a distinguir entre métodos y atributos de una clase con variables locales.
La variable self en el método init se refiere al objeto recién creado mientras que en otros métodos, se refiere al objeto cuyo método fue llamado.
Break | Permite la terminación del bucle cuando se cumple alguna condición y el control se transfiere a la siguiente instrucción. |
Continue | Permite saltar alguna parte de un bucle cuando se cumple alguna condición específica y el control se transfiere al principio del bucle. |
Pass | Se utiliza cuando se necesita algún bloque de código sintácticamente, pero se desea omitir su ejecución. Esto es básicamente una operación nula. No pasa nada cuando esto se ejecuta. |
Ejemplo:
import array as arr Mi_Array=arr.array('i',[1,2,3,4,5]) Mi_Array[::-1]
Salida: array('i',[5, 4, 3, 2, 1])
Ejemplo:
from random import shuffle x = ['Tener', 'El', 'Azul', 'Bandera', 'Volar', 'Alto'] shuffle(x) print(x)
Salida:
['Volar', 'Tener', 'Azul', 'Alto', 'El', 'Bandera']Los iteradores en Pyton son objetos que pueden ser atravesados (traversed) o iterados.
El módulo random es el modulo estándar para generar un número aleatorio. El método es definido como:
import random random.random
La declaración random.random() devuelve el número en coma flotante que está en el rango de[0, 1]. La función genera números flotantes aleatorios. Los métodos que se utilizan con la clase aleatoria son los métodos ligados de las instancias ocultas. Las instancias de Random se pueden hacer para mostrar los programas de multi-threading que crean una instancia distinta de hilos individuales. Los otros generadores aleatorios que se usan son:
- randrange (a, b): elige un número entero y define el rango entre [a, b). Devuelve los elementos escogiéndolos aleatoriamente del rango especificado. No construye un objeto de rango (range object).
- Uniform(a, b): selecciona un número de punto flotante que es definido en el rango de[a,b).Iyt devuelve el número de punto flotante
- normalvariate(mean, sdev): se usa para la distribución normal donde el mu es una media y el sdev es un sigma utilizado para la desviación estándar.
Xrange y range son exactamente iguales en términos de funcionalidad en su mayor parte. Los dos conforman una manera de generar una lista de números enteros para que los uses como quieras. La única diferencia entre ambos es que range devuelve un objeto de la lista Python y Xrange devuelve un objeto Xrange.
Lo que significa que xrange no genera una lista estática en tiempo de ejecución como hace range. Entonces, crea los valores a medida que son necesarios, con una técnica llamada yielding. La técnica es usada con un tipo de objeto que se conoce como generadores. O sea, que si tienes un rango gigantesco te gustaría generar una lista para mil millones, xrange es la función a usar.
Por ejemplo, si tienes un sistema sensible a la memoria, como un teléfono celular con el que estás trabajando. Esto se debe a que, range, va a usar tanta memoria como pueda para crear su matriz de números enteros (array). Esto puede resultar en un error de memoria y bloquear tu programa.
Los comentarios en Python empiezan con un carácter #. Sin embargo, a veces, se alternan y los comentarios se hacen utilizando docstrings que son cadenas encerradas entre comillas triples.
Ejemplo:
#Los comentarios en Python empiezan así
print("Los comentarios en Python comienzan con un #")
Salida: Los comentarios en Python comienzan con #
El módulo Pickle acoge todo objeto Python y lo transforma en una representación de cadena y lo manda a un archivo utilizando la función dump. Este proceso se denomina pickling y el proceso de recuperación de objetos originales de Python, de la representación de cadena almacenada se denomina unpickling.
Los generadores, son las funciones que devuelven un conjunto iterable de elementos.
Con el método capitalize() escribe en mayúsculas la primera letra de una cadena. Pero, si la cadena ya tiene una letra mayúscula al comienzo, entonces, devuelve la cadena original.
Para convertir una cadena a minúsculas, se usar la función lower().
Ejemplo:
stg='ABCD' print(stg.lower())
Salida: abcd
Las líneas a comentar deben estar precedidas por un #. Entonces, los comentarios de varias líneas deben llevar su # en cada una. Lo que se necesita hacer es mantener pulsada la tecla ctrl, y hacer clic con el botón izquierdo del ratón en cualquier lugar donde quieras incluir un carácter #, y escribir un # sólo una vez. Esto va a comentar las líneas seleccionadas con el cursor.
Los docstring son cadenas de documentación, realmente no son comentarios. Las cuerdas están entre comillas triples. No se asignan a ninguna variable, por tanto, a veces, sirven para los comentarios.
Ejemplo:
""" Usando docstring como comentario. Este código divide 2 números. """ x=8 y=4 z=x/y print(z)
Salida: 2
Los operadores toman uno o más valores, estos son funciones especiales y emiten un resultado correspondiente.
is: devuelve true cuando 2 operandos son verdad (Ejemplo: "a" es 'a')
not: devuelve el inverso del valor booleano.
in: comprueba si algún elemento está presente en alguna secuencia.
Help() y dir() son dos funciones accesibles desde el intérprete Python y se usan para ver un volcado consolidado de funciones incorporadas.
- Help(): La función help() es utilizada para presentar la cadena de documentación y le facilita ver la ayuda relacionada con módulos, atributos, y palabras clave, etc.
- Dir(): La función dir() es utilizada para ver los símbolos definidos.
- Siempre que Python cierra, en especial los módulos Python que tienen referencias circulares a otros objetos o los objetos a los que se hace referencia desde los namespaces globales, no siempre son liberados.
- Es difícil desasignar las porciones de memoria que están reservadas por la libreria C.
- A la salida, por tener su propio mecanismo de limpieza eficiente, Python trataría de desasignar/eliminar cualquier otro objeto.
Un diccionario en Python son todos aquellos tipos de datos incorporados. Estos definen la relación uno a uno entre las claves y los valores. Los diccionarios contienen un par de claves y sus valores correspondientes y están indexados por teclas.
Ejemplo: con algunas claves. País, Capital y PM. Los valores correspondientes son India, Delhi y Modi respectivamente.
dict={'Pais':'India','Capital':'Delhi','PM':'Modi'} print dict[Pais] India print dict[Capital] Delhi print dict[PM] Modi
Los operadores Ternarios se utilizan para mostrar las sentencias condicionales. Esto consiste en los valores verdaderos o falsos que tiene una expresión que debe ser evaluada para ello.
Sintaxis:
El operador ternario es indicado como:
[on_true] if[expression] else[on_false]x, y = 25, 50big = x if x < y else yEjemplo:
La expresión es evaluada como si x<y else y, en este caso, si x<y es verdadero, entonces el valor se devuelve como big=x y si es incorrecto entonces big=y será enviado como resultado.
Se usa *args cuando no se tiene seguridad de cuántos argumentos se van a pasar a una función, o si se quiere pasar una lista o tupla de argumentos guardados a una función. **kwargs es usado cuando no sabemos cuántos argumentos de palabras clave van a pasar a una función, o se usa para pasar los valores de un diccionario como el argumento de palabras clave. Los identificadores args y kwargs son una convención, también se puede usar *bob y **billy pero no sería prudente.
Se usa para determinar la longitud de una lista, matriz, cadena etc.
Ejemplo:
stg='ABCD' len(stg)
Para modificar las cadenas, el módulo "re" de Python suministra 3 métodos. Estos son:
- split() - utiliza un patrón regex para "dividir" una cadena dada en una lista.
- sub() – consigue todas las subcadenas donde el patrón regex coincide y luego las reemplaza con una cadena distinta.
- subn() - es parecida a sub() y también devuelve la nueva cadena junto con el número de reemplazos.
El índice negativo se usa para eliminar cualquier espacio, de línea nuevo de la cadena excepto S[:-1]. El índice negativo también es utilizado para mostrar el índice y para representar la cadena en el orden correcto.
Las secuencias en Python están indexadas y consiste en números positivos y negativos. Los números positivos usan '0' que es el primer índice y '1' como segundo índice y el proceso continúa así.
El índice para número negativo comienza desde '-1' que representa el último índice de la secuencia y '-2' como el penúltimo índice y la secuencia continúa como el número positivo.
Se les llama paquetes a los espacios de nombres que contienen muchos módulos.
Para eliminar un archivo en Python, es necesario importar el módulo OS y después, necesita usar la función os.remove().
Ejemplo:
import os os.remove("xyz.txt")
Los tipos incorporados de Python son:
-Números enteros
-Strings
-Números complejos
-Punto flotante
-Booleanos
-Funciones incorporadas
- Las listas de Python son eficientes contenedores de uso general. Soportan la eliminación, inserción, concatenación, adición y las comprensiones de listas de Python. Además, se hacen fáciles de construir y manipular.
- Con ciertas limitaciones: no soportan operaciones "vectorizadas" como suma y multiplicación de elementos. Puedan contener objetos de diferentes tipos; esto significa que Python debe guardar información de tipos para cada elemento, y debe ejecutar código de despacho de tipos al operar en cada elemento.
- NumPy es más eficiente y conveniente. Obtendrás muchas operaciones vectoriales y matriciales gratuitas, lo que le permite a uno evitar el trabajo innecesario. También, se implementan de manera eficiente.
- La matriz NumPy es muy rápida y se obtiene mucho con NumPy como FFTs, convoluciones, álgebra lineal, estadísticas básicas, búsqueda rápida, histogramas, etc.
Se pueden añadir elementos a una matriz utilizando las funciones append(), extend() y insert (i,x).
Ejemplo:
a=arr.array('d', [1.1 , 2.1 ,3.1] ) a.append(3.4) print(a) a.extend([4.5,6.3,6.8]) print(a) a.insert(2,3.8) print(a)
Salida:
array(‘d’, [1.1, 2.1, 3.1, 3.4])
array(‘d’, [1.1, 2.1, 3.1, 3.4, 4.5, 6.3, 6.8])
array(‘d’, [1.1, 2.1, 3.8, 3.1, 3.4, 4.5, 6.3, 6.8])
Se pueden eliminar los elementos del array, a través del método pop() o remove(). La diferencia entre estas funciones es que la primera devuelve el valor borrado mientras que la segunda no.
Ejemplo:
a=arr.array('d', [1.1, 2.2, 3.8, 3.1, 3.7, 1.2, 4.6]) print(a.pop()) print(a.pop(3)) a.remove(1.1) print(a)
Salida:
4.6
3.1
array(‘d’, [2.2, 3.8, 3.7, 1.2])
Python es un lenguaje de programación que está orientado a objetos. Esto significa que cualquier programa se puede resolver en Python, creando un modelo de objeto. Sin embargo, Python también puede ser tratado como lenguaje de procedimiento y también como estructural.
La copia superficial (shallow copy) es utilizada cuando se crea un nuevo tipo de instancia y mantiene los valores que se copian en la nueva instancia. Asimismo, para copiar los punteros de referencia de la misma forma que copia los valores. Estas referencias apuntan a los objetos originales y los cambios hechos en cualquier miembro de la clase también afectarán a la copia original de la misma. La copia superficial permite una ejecución muy rápida del programa y depende del tamaño de los datos que se usen.
La copia profunda (deep copy) es utilizada para guardar los valores que se hayan copiado. No copia los punteros de referencia a los objetos. Hace la referencia a un objeto y el nuevo objeto que es apuntado por otro objeto se guarda. Los cambios que se realizan en la copia original, no afectan ninguna otra copia que use el objeto. La copia profunda hace que la ejecución del programa sea lenta, debido a la realización de algunas copias para cada objeto que se llama.
- Python tiene un paquete de multi-threading pero si quieres utilizar multi-threading para acelerar tu código, no es una idea buena usarlo.
- Python tiene una construcción denominada Global Interpreter Lock (GIL). La cual se asegura de que sólo uno de sus 'hilos' pueda ejecutarse en un momento dado. Un hilo adquiere el GIL, hace un poco de trabajo, y luego pasa el GIL al hilo siguiente.
- Puede parecer que sus hilos se están ejecutando en paralelo, pero en realidad sólo están tomando turnos usando el mismo núcleo de la CPU, de una manera muy rápida.
- Entonces, este paso de GIL agrega gastos a la ejecución. Lo que significa que si deseas hacer que tu código se ejecute más rápido, entonces, utilizar el paquete threading normalmente no es buena idea.
La compilación y el enlazamiento en Python, permiten que las extensiones nuevas se compilen sin ningún error y el enlace sólo se pueda hacer cuando pasa el procedimiento de compilación. Si se usa la carga dinámica, entonces depende del estilo que se suministre con el sistema. El intérprete Python se puede usar para suministrar la carga dinámica de los archivos de configuración y reconstruir el intérprete.
Para esto, los pasos que se requieren en el proceso son:
- Crea un archivo con un nombre y en cualquier idioma, que sea compatible con el compilador de su sistema, ejemplo, archivo.c o archivo.cpp
- Ubica el archivo en el directorio Modules/ de la distribución que se está usando.
- Agregar una línea en el archivo Setup.local que esté presente en el directorio Modules/.
- Ejecuta el archivo usando spam file.o
- Después de la ejecución exitosa de esta reconstrucción, el intérprete usa el comando make en el directorio de nivel superior.
- Si se cambia el archivo, entonces ejecute rebuildMakefile utilizando el comando como 'make Makefile'.
Las librerías Python son la colección de paquetes Python. Ente las librerias más usadas están Pandas, Matplotlib, Numpy, Scikit-aprender y muchas otras.
El método split() se utiliza para separar una cadena dada en Python.
Ejemplo:
a="unipython python" print(a.split())
Output: [‘unipython’, ‘python’]
Los módulos pueden ser importados usando la palabra clave de importación.
Puede ser de tres maneras.
Ejemplo:
import array # se importa usando el nombre del modulo original. import array as arr # se importa usando un alias from array import * # importa todo lo presente en el array.
Preguntas de la entrevista de OOPS
La herencia permite a una clase obtener todos los miembros (atributos y métodos) de otra clase. Asimismo, la herencia permite la reutilización de código, hace fácil la creación y mantenimiento de una aplicación. La clase de la que se hereda se denomina superclase y la clase que se hereda se llama clase derivada o clase hija.
Son diferentes tipos de herencia soportados por Python:
- Herencia única: es aquella donde una clase derivada obtiene los miembros de una sola superclase.
- Herencia multinivel: una clase derivada d1 se hereda de la clase base base1, y d2 se hereda de la base2.
- Herencia jerárquica: de una clase base se puede heredar cualquier número de clases hijo
- Herencia múltiple: una clase derivada se hereda de varias clase base.
Las clases en Python se crean utilizando la palabra clave de la clase.
Ejemplo:
class empleado: def __init__(self, name): self.name = name E1=empleado("abc") print(E1.name)
Salida: abc
El término monkey patch en Python, se refiere a las modificaciones dinámicas de una clase o módulo en tiempo de ejecución.
Considere el siguiente ejemplo:
# m.py class MyClass: def f(self): print "f()"
Luego, podemos correr las pruebas de monkey-patch como sigue:
import m def monkey_f(self): print "monkey_f()" m.MyClass.f = monkey_f obj = m.MyClass() obj.f()
La salida será la siguiente:
monkey_f()
Como podemos ver, hicimos algunos cambios en el comportamiento de f() en MyClass usando la función que definimos, monkey_f(), fuera del módulo m.
La herencia múltiple explica que una clase puede derivarse de varias clases de padres. Python soporta muchas herencias, lo cual no hace Java.
Polimorfismo: Es la capacidad de tomar muchas formas, por ejemplo, si la clase padre tiene un método denominado ABC, quiere decir, que la clase hija puede tener un método con el mismo nombre ABC, que contenga sus propios parámetros y variables. El polimorfismo es permitido en Python .
Encapsular: Unión del código y los datos. En Python una clase es un ejemplo de encapsulación.
Puede lograrse en Python usando interfaces y clases abstractas. La abstracción de datos sólo suministra detalles necesarios y oculta la implementación al mundo.
Python no priva de entrada a una variable o función de instancia, mas bien establece el concepto de prefijar el nombre de la variable, método o función, con un guión bajo simple o doble para imitar el comportamiento de los especificadores de acceso privado y protegido.
Una clase vacía es aquella que no tiene código definido dentro de su bloque. Se puede crear usando la palabra clave de entrada. Sin embargo, se pueden crear objetos de esta clase, fuera de la propia clase. En Python el comando PASS no hace nada cuando se ejecuta, es declaración nula.
Ejemplo:
class a: pass obj=a() obj.Nombre="xyz" print("Nombre = ",obj.name)
Salida: Nombre = xyz
Este comando devuelve un objeto que no tiene características y que sirve base para todas las clases. Además, no adquiere ningún parámetro.
Sobre los Programas Básicos de Python
def bs(a): # a = nombre de la lista b=len(a)-1 # menos 1 porque siempre comparamos 2 valores adyacentes. for x in range(b): for y in range(b-x): if a[y]>a[y+1]: a[y],a[y+1]=a[y+1],a[y] return a a=[32,5,3,6,7,54,87] bs(a)
Salida: [3, 5, 6, 7, 32, 54, 87]
def pyfunc(r): for x in range(r): print(' '*(r-x-1)+'*'*(2*x+1)) pyfunc(9)
Salida:
* *** ***** ******* ********* *********** ************* *************** *****************
# Introducir el numero de terminos necesarios #0,1,1,2,3,5.... a=int(input("introduzca los terminos")) f=0 #primer elemento de la serie s=1 #segundo elemento de la serie if a<=0: print("las series requeridas son ",f) else: print(f,s,end=" ") for x in range(2,a): next=f+s print(next,end=" ") f=s s=next</pre>
Salida: introduzca los términos 5 0 1 1 2 3
a=int(input("ingresa un numero")) if a>1: for x in range(2,a): if(a%x)==0: print("no es primo") break else: print("Primo") else: print("no es primo")
Salida:
ingresa un numero 3
primo
a=input("introduzca una secuencia") b=a[::-1] if a==b: print("palindromo") else: print("No es palindromo")
Salida:
introduzca una secuencia 323 palindromo
Primero se escribe una solución de líneas múltiples y luego la convertimos a código de una línea.
with open(SOME_LARGE_FILE) as fh: count = 0 text = fh.read() for character in text: if character.isupper(): count += 1
Ahora intentaremos transformar esto en una sola línea.
count sum(1 for line in fh for character in line if character.isupper())
El código siguiente se puede usar para ordenar una lista en Python:
list = ["1", "4", "0", "6", "9"] list = [int(i) for i in list] list.sort() print (list)
A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5))) A1 = range(10)A2 = sorted([i for i in A1 if i in A0]) A3 = sorted([A0[s] for s in A0]) A4 = [i for i in A1 if i in A3] A5 = {i:i*i for i in A1} A6 = [[i,i*i] for i in A1] print(A0,A1,A2,A3,A4,A5,A6)
Las siguientes serán las salidas finales de A0, A1, .... A6
A0 = {'a': 1, 'c': 3, `b': 2, `e': 5, `d': 4} # el orden puede variar
A1 = rango(0, 10)
A2 = []
A3 = [1, 2, 3, 4, 5]
A4 = [1, 2, 3, 4, 5]
A5 = {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
A6 = [[0, 0], [1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81]]
Preguntas acerca de las librerías de Python
Flask es un microframework para Python. Esta basado en la licencia BSD "Werkzeug, Jinja2 and good intentions". Werkzeug y Jinja2 son dos de sus dependencias. Lo que es igual a que tendrá poca o ninguna dependencia de las librerias externas. Esto hace que el framework sea ligero mientras que hay un poco de dependencia para actualizar y algunos errores de seguridad.
Una sesión basicamente te permite recordar información de una solicitud a otra. En un frasco (flask), una sesión usa una cookie firmada para que el usuario pueda ver el contenido de la sesión y cambiarla. El usuario puede cambiar la sesión si dispone sólo de la clave secreta Flask.secret_key.
Django y Flask mapean las URL o direcciones escritas en los navegadores web a las funciones de Python.
A nivel técnico, los dos son buenos y tienen sus propias ventajas y desventajas pero Flask es más simple comparándolo con Django pero, Flask no hace mucho por ti.. Esto significa que debes especificar los detalles, mientras que Django hace mucho más por lo cual el usuario no tendría que escribir exceso de código. Esto se debe a que Django consiste en código preescrito que necesitará analizar el usuario mientras que Flask da a usuarios posibilidad de crear su propio código. Por lo tanto, es más fácil entender el código.
- Flask es un "microframework" creado para una aplicación pequeña con requisitos sencillos. En Flask, se deben usar librerías externas y ya esta listo para utilizar.
- Pyramid esta hecho para aplicaciones más grandes. Este suministra flexibilidad y permite al desarrollador usar herramientas adecuadas para el proyecto. El desarrollador puede seleccionar: el estilo de la plantilla, la estructura URL, la base de datos y mucho más. Además es bastante configurable.
- Django tambien puede utilizarse para aplicaciones grandes como Pyramid.
Es el desarrollador quien suministra el Modelo, la vista y la plantilla y luego simplemente la mapea a una URL y Django hace la magia de servirla al usuario.
Usando el comando edit mysite/setting.py, que es un módulo normal de Python con un nivel de módulo que representa la configuración de Django.
Django usa SQLite por defecto; es fácil para los usuarios de Django, no requiere otro tipo de instalación. En caso de que tu eleccion de base de datos es diferente entonces tienes que colocar las siguientes claves en la BASE DE DATOS 'predeterminada' para que coincida con la configuración de conexión de tu base de datos.
- Motores: puede cambiar la base de datos usando'django.db.backends.sqlite3' , 'django.db.backeneds.mysql', 'django.db.backends.postgresql_psycopg2', 'django.db.backends.oracle', y así sucesivamente.
- Nombre: El nombre de tu base de datos. En caso de que uses SQLite como tu base de datos, entonces la base de datos será un archivo en tu computadora. El nombre debe ser una ruta absoluta completa que incluya el nombre de ese archivo.
- Si no eliges SQLite como tu base de datos, entonces deben hacerse ajustes de Host, Usuario, Contraseña, etc.
Django usa SQLite como base de datos por defecto, guarda los datos como un solo archivo en el sistema de archivos. Si tienes un servidor de base de datos-PostgreSQL, MySQL, Oracle, MSSQL- y quieres usarlo en lugar de SQLite entonces usa herramientas de administración de base de datos para crear una nueva base de datos para el proyecto Django.
Entonces, con la base de datos (vacía) en su lugar, todo lo que queda es decir a Django cómo usarla. Aquí entra el archivo settings.py de tu proyecto.
Añadiremos las siguientes líneas de código al archivo setting.py:
DATABASES = { 'default': { 'ENGINE' : 'django.db.backends.sqlite3', 'NAME' : os.path.join(BASE_DIR, 'db.sqlite3'), } }
Es así, como podemos usar una vista de escritura en Django:
from django.http import HttpResponse import datetime def Current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s</body></html> % now return HttpResponse(html)
Devuelve la fecha y la hora actuales como un documento HTML.
Una plantilla es un archivo de texto simple. Esta puede crear cualquier formato basado en texto como CSV, XML, HTML, etc. La plantilla tiene variables que se cambian por valores, cuando se evalúa la plantilla y etiquetas (% tag %) que controlan la lógica de la plantilla.
Django suministra una sesión que te permite guardar y recuperar datos por visitante en cada sitio. También abstrae el proceso de envío y recepción de cookies, colocando una cookie de identificación de sesión en el lado del cliente y guardando todos los datos relacionados en el lado del servidor.
Entonces, los datos en sí, no se guardan en el lado del cliente. Esto es bueno desde una perspectiva de seguridad.
Hay tres estilos de herencia en Django:
- Clases Base Abstractas (Abstract Base Classes): este estilo se usa cuando sólo se desea que la clase de los padres tenga información que no se desea escribir para cada modelo de hijo (child model).
- Herederos de múltiples tablas (Multi-table inheritance): Este estilo se utiliza si estas subclasificando un modelo que ya existe y necesita que cada modelo tenga su propia tabla de base de datos.
- Modelos proxy (Proxy models): Puede usar este modelo, si sólo desea cambiar el comportamiento del nivel de Python del modelo, sin cambiar los campos del modelo.
Preguntas acerca de Web Scraping en Python
Usaremos el siguiente código para almacenar una imagen localmente desde una dirección URL
import urllib.request urllib.request.urlretrieve("URL", "nombre-archivo.jpg")
Utilizando el siguiente formato de URL:
http://webcache.googleusercontent.com/search?q=cache:EL-URL-VA-AQUI
Debes asegurarte de reemplazar "EL-URL-VA-AQUI" con la dirección web correcta de la página o sitio al que cuya caché deseas conocerle la edad. Ejemplo, para corroborar la antigüedad de la caché web de Google de Unipython, debe usar la siguiente URL:
http://webcache.googleusercontent.com/search?q=cache:unipython.com
Usaremos las siguientes líneas de código:
from bs4 import BeautifulSoup import requests import sys url = 'http://www.imdb.com/chart/top' response = requests.get(url) soup = BeautifulSoup(response.text) tr = soup.findChildren("tr") tr = iter(tr) next(tr) for movie in tr: title = movie.find('td', {'class': 'titleColumn'} ).find('a').contents[0] year = movie.find('td', {'class': 'titleColumn'} ).find('span', {'class': 'secondaryInfo'}).contents[0] rating = movie.find('td', {'class': 'ratingColumn imdbRating'} ).find('strong').contents[0] row = title + ' - ' + year + ' ' + ' ' + rating print(row)
El código anterior te ayudará a tomar datos de la lista de los 250 mejores de IMDb.
Preguntas de Análisis de datos en Python
La función map es la que ejecuta la función dada como primer argumento en todos los elementos del iterable, dado como segundo argumento. Si la función dada acepta más de 1 argumento entonces se dan muchos iterables.
Es mejor usar NumPy, en lugar de Lists por tres razones:
- Usa menos memoria
- Es más rápido
- Es muy conveniente
Se pueden obtener los índices de N valores máximos en una matriz NumPy utilizando el siguiente código:
import numpy as np arr = np.array([1, 3, 2, 4, 5]) print(arr.argsort()[-3:][::-1])
Salida: [ 4 3 1 ]
Se pueden calcular porcentajes utilizando el siguiente código:
import numpy as np a = np.array([1,2,3,4,5]) p = np.percentile(a, 50) #Devuelve el 50%. print(p)
Salida: 3
- En un mundo ideal, NumPy no tendría nada más que el tipo de datos de la matriz y las operaciones más básicas: clasificación, indexación, funciones elementales básicas, remodelación, entre otras.
- El código numérico residiría en SciPy. Sin embargo, un objetivo importante de NumPy es la compatibilidad. Por lo que, trata de conservar todas las funciones soportadas por cualquiera de sus predecesores.
- Por lo tanto, NumPy tiene algunas funciones de álgebra lineal, aunque éstas mas propiamente pertenecen a SciPy. En cualquier caso, SciPy tiene versiones más completas de módulos de álgebra lineal, así como muchos algoritmos numéricos.
- Si estás haciendo computación científica con Python, seguramente debería instalar tanto NumPy como SciPy. Casi todas las nuevas características pertenecen a SciPy y no a NumPy.
Igual que el trazado en 2D, los gráficos en 3D están fuera del alcance de NumPy y SciPy, pero existen paquetes que se pueden integrar con NumPy. Sin embargo, Matplotlib suministra trazado 3D básico en el subpaquete mplot3d, mientras que Mayavi ofrece una gran cantidad de funciones de visualización 3D de alta calidad, usando el potente motor VTK.
Preguntas de selección simple
a) d = {}
b) d = {"juan":40, "pedro":45}
c) d = {40: "juan", 45: "pedro"}
d) d = (40: "juan", 45: "50")
Respuesta: b, c y d.
Los diccionarios se crean especificando claves y valores.
a) /
b) //
c) %
d) Ninguna de las anteriores
Respuesta: b) //
Cuando los dos operandos son enteros, Python corta la parte de la fracción y le da el valor de redondeo para obtener una respuesta precisa usa la división de piso.
Ejemplo: 5/2 = 2.5 pero ambos operandos son enteros por lo que la respuesta de esta expresión en Python es 2. Para obtener la respuesta 2.5, use la división de piso usando //. Entonces, 5//2 = 2.5
a) 31 caracteres
b) 63 caracteres
c) 79 caracteres
d) Ninguno de los anteriores
Respuesta: d) Ninguna de las anteriores, porque los identificadores pueden tener cualquier longitud.
a) porque se usan para indicar una variable privada de una clase
b) porque tienden a confundir al intérprete
c) porque se usan para indicar variables globales
d)porque ralentizan la ejecución
Respuesta: a) se usan para indicar una variable privada de una clase
Python no tiene concepto de variables privadas, por ello, se usan guiones bajos para indicar variables a las que no se debe entrar desde fuera de la clase.
a) abc = 1.000.000
b) a b b c = 1000 2000 3000
c) a,b,c = 1000, 2000, 3000
d) a_b_c = 1,000,000
Respuesta: b) a b b c = 1000 2000 3000
Porque en los nombres de variables, no se permiten espacios.
try: if '1' != 1: raise "algún error" else: print("no se ha producido algún error") except "algún error": print ("se ha producido algún error")
a) se ha producido algún error
b) no se ha producido algún error
c) código inválido
d) ninguno de los anteriores
Respuesta: c) código no válido
Una clase nueva de excepción, debe heredar de una BaseException. No hay tal herencia aquí.
Supongamos que la lista1 es [2, 33, 222, 14, 25], Entonces mediante, lista1 [-1] obtendremos el ultimo indice de la lista.
Es decir, 25.
a) outfile = open("c:scores.txt", "r")
b) outfile = open("c:scores.txt", "w")
c) outfile = open(file= "c:scores.txt", "r")
d) outfile = open(file= "c:scores.txt", "o")
Respuesta: b) La ubicación tiene barras oblicuas dobles () y w se usa para indicar que el archivo se está escribiendo.
f = None for i in range (5): with open("data.txt", "w") as f: if i > 2: break print f.closed
a) Verdadero
b) Falso
c) Ninguna
d) Error
Respuesta: a) Verdadero
La sentencia WITH cuando se usa con un archivo abierto, garantiza que el archivo objeto se cierra cuando el bloque WITH cierra.
a) siempre
b) cuando se produce una excepción
c) cuando no se produzca ninguna excepción
d) cuando se produce una excepción en el bloque excepto
Respuesta: c) cuando no se produce ninguna excepción
➡ Te invitamos a realizar el Curso de Python para Principiantes:
Un aporte EXCELENTE. compartir cosas que los principiantes no dominamos y a veces ni conocemos de Python. Gracias.
Ha sido un excelente curso. Las clases muy claras y concretas. Aprendí mucho
Muy interesante y a la vez de apoyo para el aprendizaje de los que buscan conocer sobre python gracias.
Muy bueno el Curso.
Es un gran curso. Esta muy bien explicado
Gracias por compartir este tipo de conocimiento. El curso está bien estructurado, con conceptos claros y buenos ejemplos de practica.
Gracias por compartir esta causa de que todos nos envolvamos de un lenguaje de programacion de una forma tan facil es maravilloso
EXCELENTE CURSO GRACIAS!!!!
Buen curso para iniciarse en Python
Excelente curso, muy didáctico. Aprendí muchísimo
Buen curso para iniciar este gran mundo en Python !!!!
Ok
Buen curso, entretenido y todo bien explicado.
Excelente curso!!!
¡Excelente curso! Es realmente útil cuando empiezas desde cero y perteneces a un ámbito totalmente distinto que al de la programación.
Excelente curso bien explicado ¡Gracias!
Excelente curso, lo he recomandado a varias personas. Gracias
He quedado sorprendido de la claridad con que está hecho este curso. Realmente impresionante, es MAGNIFICO. FELICIDADES.
Me encanto el curso. Super bien explicado.Gracias.
EXCELENTE CURSO MUCHAS GRACIAS!!
Muchisimas Gracias. Muy buen desarrollo y explicación. Gracias.
Gracias excelente curso
Excelente curso muy bien
Agradecido por esta experiencia, la verdad es la primera vez que lo he visto.
Excelente curso,muy didáctico gran experiencia. GRACIAS.