100 Preguntas de Entrevista o Examen sobre lenguaje Python (2024)

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

1. ¿Cuál es la diferencia entre lista y tuplas en Python?

Lista vs. Tupla

LISTATUPLAS
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)
2. ¿Cuáles son las características principales de Python?
- 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.
3. ¿Qué tipo de lenguaje es Python? ¿Programación o scripting?
Python puede crear scripts, pero, es un lenguaje de programación de propósito generalizado.
4. ¿Cómo se interpreta Python?
Python es un idioma interpretado, que no está en código a nivel de máquina antes de su tiempo de ejecución.
5. ¿Qué es Pep 8?
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.
6. ¿Cómo se gestiona la memoria en Python?
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.
7. ¿Qué es namespace en Python?
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.
8. ¿Qué es PYTHONPATH?
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.
9. ¿Qué son los módulos Python? Nombra algunos de los módulos incorporados comúnmente utilizados en Python?
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
10. ¿Cuáles son las variables locales y globales en Python?
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 Globaldef 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.
11. ¿Es Python sensible a las mayúsculas y minúsculas?
Sí. Python, es un lenguaje que tiene sensibilidad ante mayúsculas.
12. ¿Qué es la conversión de tipos (Type Conversion) en Python?
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).
13. ¿Cómo instalar Python en Windows y establecer una variable de ruta?
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%.
14. ¿Se requiere hendidura (indentation) en Python?
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.
15. ¿Cuál es la diferencia entre los Arrays y las listas en Python?
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 arrMi_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]
16. ¿Que son las funciones de Python?
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
17. ¿Qué es __init__?
__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 = nombreself.edad = edadself.salario = 20000E1 = 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
18. ¿Qué es una función lambda?
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+yprint(a(5, 6))
Salida: 11
19. ¿Qué es el Self en Python?
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.
20. ¿Cómo funciona break, continue y pass?
BreakPermite la terminación del bucle cuando se cumple alguna condición y el control se transfiere a la siguiente instrucción.
ContinuePermite saltar alguna parte de un bucle cuando se cumple alguna condición específica y el control se transfiere al principio del bucle.
PassSe 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.
21. ¿Como se invierte el orden de una matriz o secuencia?
[::-1] se usa para invertir el orden de una matriz o secuencia.
Ejemplo:
import array as arrMi_Array=arr.array('i',[1,2,3,4,5])Mi_Array[::-1]

Salida:
array('i',[5, 4, 3, 2, 1])
[::-1] reimprime una copia inversa de las estructuras de datos ordenadas, como una matriz o una lista. La matriz o lista original permanece sin cambios.
22. ¿Cómo se pueden aleatorizar los ítems de una lista existente en Python?
Ejemplo:
from random import shufflex = ['Tener', 'El', 'Azul', 'Bandera', 'Volar', 'Alto']shuffle(x)print(x)
Salida:
['Volar', 'Tener', 'Azul', 'Alto', 'El', 'Bandera']
23. ¿Qué son los iteradores en Python?
Los iteradores en Pyton son objetos que pueden ser atravesados (traversed) o iterados.
24. ¿Cómo puedes generar números aleatorios en Python?
El módulo random es el modulo estándar para generar un número aleatorio. El método es definido como:
import randomrandom.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:
  1. 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).
  2. 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
  3. 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.
25. ¿Cuál es la diferencia entre range y xrange?
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.
26. ¿Cómo se escriben los comentarios en Python?
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 #
27. ¿Qué es el pickling y el unpickling?
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.
28. ¿Qué son los generadores en Python?
Los generadores, son las funciones que devuelven un conjunto iterable de elementos.
29. ¿Cómo se capitaliza la primera letra de una cadena (string)?
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.
30. ¿Cómo conviertes las letras de una cadena a todas minúsculas?
Para convertir una cadena a minúsculas, se usar la función lower().
Ejemplo:
stg='ABCD'print(stg.lower())

Salida:
abcd
31. ¿Cómo se puede comentar varias líneas en Python?
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.
32. ¿Qué son los docstrings en Python?
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=8y=4z=x/yprint(z)

Salida: 2
33. ¿Cuál es el propósito de los operadores 'is, not, in'?
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.
34. ¿Cuál es el uso de las funciones help() y dir() en Python?
Help() y dir() son dos funciones accesibles desde el intérprete Python y se usan para ver un volcado consolidado de funciones incorporadas.
  1. 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.
  2. Dir(): La función dir() es utilizada para ver los símbolos definidos.
35. Cuando Python cierra, ¿por qué no se libera toda la memoria asignada?
  1. 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.
  2. Es difícil desasignar las porciones de memoria que están reservadas por la libreria C.
  3. A la salida, por tener su propio mecanismo de limpieza eficiente, Python trataría de desasignar/eliminar cualquier otro objeto.
36. ¿Qué es un diccionario en Python?
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
37. ¿Cómo se pueden utilizar los operadores ternarios (Ternary) en Python?
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 y
Ejemplo:
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.
38. ¿Qué significa esto? *args, **kwargs? ¿Y por qué lo usaríamos?
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.
39. ¿Qué hace len()?
Se usa para determinar la longitud de una lista, matriz, cadena etc.
Ejemplo:
stg='ABCD'len(stg)
40. Explícanos los métodos split(), sub(), sub(), subn() del módulo 're' en Python.
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.
41. ¿Qué son los índices negativos y por qué se utilizan?
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.
42. ¿Qué son los paquetes Python?
Se les llama paquetes a los espacios de nombres que contienen muchos módulos.
43. ¿Cómo se pueden borrar archivos en Python?
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 osos.remove("xyz.txt")
44. ¿Cuales son los tipos de datos en Python ?
Los tipos incorporados de Python son:
-Números enteros
-Strings
-Números complejos
-Punto flotante
-Booleanos
-Funciones incorporadas
45. ¿Qué ventajas ofrecen los arrays NumPy sobre las listas Python (anidadas)?
  1. 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.
  2. 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.
  3. 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.
  4. 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.
46. ¿Cómo añadir valores a un array en Python?
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])
47. ¿Cómo eliminar valores de un array en Python?
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])
48. ¿Python tiene conceptos de OOps?
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.
49. ¿Cuál es la diferencia entre deep y shallow copy?
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.
50. ¿Cómo se consigue el Multi-threading en Python?
  1. Python tiene un paquete de multi-threading pero si quieres utilizar multi-threading para acelerar tu código, no es una idea buena usarlo.
  2. 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.
  3. 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.
  4. 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.
51. ¿Cuál es el proceso de compilación y enlace en Python?
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:
  1. 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
  2. Ubica el archivo en el directorio Modules/ de la distribución que se está usando.
  3. Agregar una línea en el archivo Setup.local que esté presente en el directorio Modules/.
  4. Ejecuta el archivo usando spam file.o
  5. Después de la ejecución exitosa de esta reconstrucción, el intérprete usa el comando make en el directorio de nivel superior.
  6. Si se cambia el archivo, entonces ejecute rebuildMakefile utilizando el comando como 'make Makefile'.
52. ¿Qué son las librerias Python? Nombra algunas de ellos.
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.
53. ¿Para qué se utiliza split?
El método split() se utiliza para separar una cadena dada en Python.
Ejemplo:
a="unipython python"print(a.split())
Output: [‘unipython’, ‘python’]
54. ¿Cómo importar módulos en 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 aliasfrom array import * # importa todo lo presente en el array.

Preguntas de la entrevista de OOPS

55. Explique la herencia en Python con un ejemplo.
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:
  1. Herencia única: es aquella donde una clase derivada obtiene los miembros de una sola superclase.
  2. Herencia multinivel: una clase derivada d1 se hereda de la clase base base1, y d2 se hereda de la base2.
  3. Herencia jerárquica: de una clase base se puede heredar cualquier número de clases hijo
  4. Herencia múltiple: una clase derivada se hereda de varias clase base.
56. ¿Cómo se crean las clases en Python?
Las clases en Python se crean utilizando la palabra clave de la clase.
Ejemplo:
class empleado:def __init__(self, name):self.name = nameE1=empleado("abc")print(E1.name)

Salida:
abc
57. ¿Qué es el Monkey Patching en Python?
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.pyclass MyClass:def f(self):print "f()"
Luego, podemos correr las pruebas de monkey-patch como sigue:
import mdef monkey_f(self):print "monkey_f()"m.MyClass.f = monkey_fobj = 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.
58. ¿Python soporta herencia múltiple?
La herencia múltiple explica que una clase puede derivarse de varias clases de padres. Python soporta muchas herencias, lo cual no hace Java.
59. ¿Qué es el polimorfismo en Python?
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 .
60. Defina encapsulación en Python
Encapsular: Unión del código y los datos. En Python una clase es un ejemplo de encapsulación.
61. ¿Cómo se realiza la abstracción de datos en Python?
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.
62. ¿Hace Python uso de especificadores de acceso?
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.
63. ¿Cómo crear una clase vacía en Python?
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:passobj=a()obj.Nombre="xyz"print("Nombre = ",obj.name)

Salida:
Nombre = xyz
64. ¿Qué hace el comando object()?
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

65. Escribe un programa en Python para ejecutar el algoritmo de clasificación de burbujas.
def bs(a): # a = nombre de la listab=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 aa=[32,5,3,6,7,54,87]bs(a)

Salida:
[3, 5, 6, 7, 32, 54, 87]
66. Escribe un programa en Python para producir un triángulo de estrellas.
def pyfunc(r):for x in range(r):print(' '*(r-x-1)+'*'*(2*x+1))pyfunc(9)

Salida:
 * *** ***** ******* ********* *********** ************* ********************************
67. Escribe un programa para producir la serie Fibonacci en Python.
# Introducir el numero de terminos necesarios #0,1,1,2,3,5....a=int(input("introduzca los terminos"))f=0 #primer elemento de la series=1 #segundo elemento de la serieif a<=0:print("las series requeridas son",f)else:print(f,s,end=" ")for x in range(2,a):next=f+sprint(next,end=" ")f=ss=next</pre>

Salida:
introduzca los términos 5 0 1 1 2 3
68. Escribe un programa en Python para comprobar si un número es primo.
a=int(input("ingresa un numero"))if a>1:for x in range(2,a):if(a%x)==0:print("no es primo")breakelse:print("Primo")else:print("no es primo")

Salida:
ingresa un numero 3
primo
69. Escribir un programa en Python para comprobar si una secuencia es un Palíndromo.
a=input("introduzca una secuencia")b=a[::-1]if a==b:print("palindromo")else:print("No es palindromo")

Salida:
introduzca una secuencia 323 palindromo
70. Escribe una frase que cuente el número de letras mayúsculas en un archivo. Su código debería funcionar incluso si el archivo es demasiado grande para caber en la memoria.
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 = 0text = 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())
71. Escribir un algoritmo de ordenación para un conjunto de datos numéricos en Python.
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)
72. Mirando el código de abajo, escriba los valores finales de A0, A1, …An.
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íasde Python

73. Explique lo que es Flask y sus beneficios.
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.
74. ¿Django es mejor que Flask?
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.
75. Mencione las diferencias entre Django, Pyramid y Flask.
  1. 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.
  2. 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.
  3. Django tambien puede utilizarse para aplicaciones grandes como Pyramid.
76. Hablemos sobre la arquitectura de Django.
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.
77. Explique cómo se puede configurar la base de datos en Django.
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.
  1. 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.
  2. 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.
  3. 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'),}}
78. Ponga un ejemplo de cómo puede escribir una vista (view) en Django?
Es así, como podemos usar una vista de escritura en Django:
from django.http import HttpResponseimport datetimedef Current_datetime(request):now = datetime.datetime.now()html = "<html><body>It is now %s</body></html> % nowreturn HttpResponse(html)
Devuelve la fecha y la hora actuales como un documento HTML.
79. Mencione en qué consisten las plantillas de Django.
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.
80. Explique el uso de las sesiones en el framework de Django
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.
81. Enumere los estilos de herencia en Django.
Hay tres estilos de herencia en Django:
  1. 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).
  2. 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.
  3. 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

82. ¿Cómo se guarda una imagen localmente usando Python cuya dirección URL ya conozco?
Usaremos el siguiente código para almacenar una imagen localmente desde una dirección URL
import urllib.requesturllib.request.urlretrieve("URL", "nombre-archivo.jpg")
83. ¿Cómo se puede obtener el tiempo (edad) de la caché de Google de cualquier URL o página web?
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
84. Si requieres tomar datos de las 250 mejores películas de la pagina de IMDb y sólo necesitas nombre de la película, año y clasificación ¿como se hace?
Usaremos las siguientes líneas de código:
from bs4 import BeautifulSoupimport requestsimport sysurl = '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 + ' ' + ' ' + ratingprint(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

85. ¿Qué es la función map 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.
86. ¿Es mejor NumPy que Lists?
Es mejor usar NumPy, en lugar de Lists por tres razones:
  1. Usa menos memoria
  2. Es más rápido
  3. Es muy conveniente
87. ¿Cómo obtener índices de N valores máximos en un array NumPy?
Se pueden obtener los índices de N valores máximos en una matriz NumPy utilizando el siguiente código:
import numpy as nparr = np.array([1, 3, 2, 4, 5])print(arr.argsort()[-3:][::-1])

Salida
: [ 4 3 1 ]
88. ¿Cómo se calculan los porcentajes con Python/ NumPy?
Se pueden calcular porcentajes utilizando el siguiente código:
import numpy as npa = np.array([1,2,3,4,5])p = np.percentile(a, 50) #Devuelve el 50%.print(p)
Salida: 3
89. ¿Cuál es la diferencia entre NumPy y SciPy?
  1. 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.
  2. 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.
  3. 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.
  4. 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.
90. ¿Cómo se hacen los gráficos/visualizaciones en 3D usando NumPy/SciPy?
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

91. ¿Cuáles de las siguientes frases crean un diccionario? (Múltiples respuestas correctas posibles)
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.
92. ¿Cuál de estos es división de piso (floor division)?
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
93. ¿Cuál es la longitud máxima posible de un identificador?
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.
94. ¿Por qué se desaconsejan los nombres de variables locales que comienzan con un guión bajo?
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.
95. ¿Cuál de las siguientes declaraciones es inválida?
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.
96. ¿Cuál es el resultado de lo siguiente?
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í.
97. ¿Como se puede acceder al ultimo indice de una lista?
Supongamos que la lista1 es [2, 33, 222, 14, 25], Entonces mediante, lista1 [-1] obtendremos el ultimo indice de la lista.
Es decir, 25.
98. Para abrir un archivo c:scores.txt para escribir, usamos
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.
99. ¿Cuál es el resultado de lo siguiente?
f = Nonefor i in range (5):with open("data.txt", "w") as f:if i > 2:breakprint 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.
100. ¿Cuándo se ejecutará la parte 'else' de try-except-else?
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:
Curso Python Gratis
100 Preguntas de Entrevista o Examen sobre lenguaje Python (2024)

FAQs

¿Qué tipo de lenguaje de programación es Python? ›

Python es un lenguaje sencillo de leer y escribir debido a su alta similitud con el lenguaje humano. Además, se trata de un lenguaje multiplataforma de código abierto y, por lo tanto, gratuito, lo que permite desarrollar software sin límites.

¿Cuáles son los cuatro elementos fundamentales que componen un lenguaje Python? ›

El lenguaje Python está formado por elementos (tokens) de diferentes tipos:
  • palabras reservadas (keywords)
  • funciones integradas (built-in functions)
  • literales.
  • operadores.
  • delimitadores.
  • identificadores.

¿Cuándo Python cierra por qué no se libera toda la memoria asignada? ›

Cuando Python cierra, ¿por qué no se libera toda la memoria asignada? 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.

¿Qué es y para qué sirve el Python? ›

El lenguaje de programación Python es ampliamente utilizado por empresas de todo el mundo para construir aplicaciones web, analizar datos, automatizar operaciones y crear aplicaciones empresariales fiables y escalables.

¿Qué tipo de lenguaje es Python es de alto o de bajo nivel? ›

Python es un lenguaje de alto nivel de programación interpretado cuya filosofía hace hincapié en la legibilidad de su código, se utiliza para desarrollar aplicaciones de todo tipo, ejemplos: Instagram, Netflix, Spotify, Panda 3D, entre otros.

¿Qué tipo de lenguaje es Python tipado o no tipado? ›

A diferencia de otros lenguajes de programación como C, C++ o Java, Python es interpretado y dinámicamente tipado. Lo que quiere decir que no es necesario compilar el código fuente para poder ejecutarlo (interpretado) y que sus variables pueden tomar distintos tipos de objetos (dinámicamente tipado).

¿Cómo liberar RAM en Python? ›

Borrar memoria en Python usando el método gc.

collect(generation=2) se utiliza para borrar o liberar la memoria no referenciada en Python. La memoria no referenciada es la memoria que es inaccesible y no se puede utilizar. El argumento opcional generation es un número entero cuyo valor va de 0 a 2 .

¿Cómo se gestiona la memoria en Python? ›

El administrador de memoria de Python solo participa en la asignación del objeto de bytes retornado como resultado. Sin embargo, en la mayoría de las situaciones, se recomienda asignar memoria del montón de Python específicamente porque este último está bajo el control del administrador de memoria de Python.

¿Qué es el namespace en Python? ›

En Python, un namespace, es el nombre que se ha indicado luego de la palabra import, es decir la ruta (namespace) del módulo.

¿Qué tipo de aplicaciones se pueden hacer con Python? ›

Los programas en Python más famosos:
  1. Pinterest.
  2. Panda 3D.
  3. Dropbox.
  4. Spotify.
  5. Netflix.
  6. Uber.
  7. Instagram.
  8. Reddit.

¿Qué se puede hacer con Python? ›

Algunas de las cosas que se pueden hacer son:
  • Escribir software multiplataforma, ya sea con PyQT o TKInter.
  • Desarrollar videojuegos usando Panda3D, PyGame o Cocos2D.
  • Desarrollar aplicaciones web usando Django o Flask.

¿Qué es lo que hace especial a Python? ›

Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en la legibilidad de su código. Se trata de un lenguaje de programación multiparadigma, ya que Python es un lenguaje orientado a objetos, la programación imperativa y, en menor medida, programación funcional.

¿Cuáles son los elementos básicos del lenguaje? ›

​Los elementos del lenguaje humano permiten que la comunicación sea posible. Son los elementos que tienen en común todos los idiomas; esto permite que pueda hablarse de lenguaje humano. Se diferencia de los sistemas de comunicación utilizados por otras especies, como las abejas o los simios, que son sistemas cerrados.

¿Cuáles son los dos elementos fundamentales de un programa? ›

Constantes: Son datos que no van a modificarse en la ejecución de programa. Variables: Datos cuyo valor se puede modificar en la ejecución del programa.

Top Articles
Latest Posts
Article information

Author: Ouida Strosin DO

Last Updated:

Views: 6744

Rating: 4.6 / 5 (56 voted)

Reviews: 87% of readers found this page helpful

Author information

Name: Ouida Strosin DO

Birthday: 1995-04-27

Address: Suite 927 930 Kilback Radial, Candidaville, TN 87795

Phone: +8561498978366

Job: Legacy Manufacturing Specialist

Hobby: Singing, Mountain biking, Water sports, Water sports, Taxidermy, Polo, Pet

Introduction: My name is Ouida Strosin DO, I am a precious, combative, spotless, modern, spotless, beautiful, precious person who loves writing and wants to share my knowledge and understanding with you.