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) |
a=2 #Variable Globaldef add(): b=3 #Variable Local c=a+b print(c)add()
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]
def Nuevafuncion():print("Hola, bienvenido")Nuevafuncion(); #llamar a la funcion
Salida: Hola, bienvenido
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:
a = lambda x,y : x+yprint(a(5, 6))
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. |
import array as arrMi_Array=arr.array('i',[1,2,3,4,5])Mi_Array[::-1]
Salida: array('i',[5, 4, 3, 2, 1])
from random import shufflex = ['Tener', 'El', 'Azul', 'Bandera', 'Volar', 'Alto']shuffle(x)print(x)
import randomrandom.random
- 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.
stg='ABCD'print(stg.lower())
Salida: abcd
"""Usando docstring como comentario.Este código divide 2 números."""x=8y=4z=x/yprint(z)
Salida: 2
- 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.
dict={'Pais':'India','Capital':'Delhi','PM':'Modi'} print dict[Pais]India print dict[Capital]Delhi print dict[PM]Modi
stg='ABCD'len(stg)
import osos.remove("xyz.txt")
- 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.
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)
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:
- 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.
- 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'.
a="unipython python"print(a.split())
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
- 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.
class empleado:def __init__(self, name):self.name = nameE1=empleado("abc")print(E1.name)
Salida: abc
# m.pyclass MyClass:def f(self):print "f()"
import mdef monkey_f(self):print "monkey_f()"m.MyClass.f = monkey_fobj = m.MyClass()obj.f()
class a:passobj=a()obj.Nombre="xyz"print("Nombre = ",obj.name)
Salida: Nombre = xyz
Sobre los Programas Básicos de Python
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]
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 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
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:
a=input("introduzca una secuencia")b=a[::-1]if a==b:print("palindromo")else:print("No es palindromo")
Salida:
with open(SOME_LARGE_FILE) as fh:count = 0text = fh.read()for character in text:if character.isupper():count += 1
count sum(1 for line in fh for character in line if character.isupper())
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)
Preguntas acerca de las libreríasde Python
- 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.
- 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.
DATABASES = {'default': {'ENGINE' : 'django.db.backends.sqlite3','NAME' : os.path.join(BASE_DIR, 'db.sqlite3'),}}
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)
- 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
import urllib.requesturllib.request.urlretrieve("URL", "nombre-archivo.jpg")
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)
Preguntas de Análisis de datos en Python
- Usa menos memoria
- Es más rápido
- Es muy conveniente
import numpy as nparr = np.array([1, 3, 2, 4, 5])print(arr.argsort()[-3:][::-1])
Salida: [ 4 3 1 ]
import numpy as npa = np.array([1,2,3,4,5])p = np.percentile(a, 50) #Devuelve el 50%.print(p)
- 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.
Preguntas de selección simple
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")
f = Nonefor i in range (5):with open("data.txt", "w") as f:if i > 2:breakprint f.closed