[Python] Puntos de conocimientos básicos de la entrevista

Prueba básica de Python 100 preguntas

1. La diferencia entre lenguajes interpretados y compilados

Lenguaje compilado: compile todos los programas fuente preparados en programas ejecutables binarios. Luego, puede ejecutar este programa directamente. Tales como: lenguaje
interpretado en C, C ++ : traduzca una oración del programa fuente completo y luego ejecute una oración hasta el final. Tales como: Python,
(Java es un poco especial, el programa java también debe compilarse, pero no se compila directamente llamado lenguaje de máquina, sino que se compila llamado bytecode, y luego el bytecode se ejecuta de una manera interpretada).

2. Métodos comunes de tipos de datos

Uno, función de formateo de formato

La función str.format () es una función de cadena de formato, esta función puede procesar rápidamente varias cadenas.
Utiliza {} y: en lugar de%.
El formato de cadena utiliza el método format (). El formato básico utilizado es:
<cadena de plantilla> .format (<parámetros separados por comas>) Después de
llamar al método format (), se devolverá una nueva cadena, con los parámetros numerados empezando por 0 .

1、通过关键字

print('{name}在{option}'.format(name="谢某人",option="写代码"))
结果:谢某人在写代码 

2、通过位置

print('name={} path={}'.format('zhangsan', '/')
结果:name=zhangsan path=/


print('{1}在{0}'.format('写代码','谢某人'))
或
print('{0}在{1}'.format('谢某人','写代码'))
结果:谢某人在写代码

3、填充和对齐^<>分别表示居中、左对齐、右对齐,后面带宽度

print('{:^30}'.format("zhangsan")) # 居中
print('{:>30}'.format("zhangsan")) # 右对齐
print('{:<30}'.format("zhangsan")) # 左对齐
30:字段长度(最左到最右之间的长度)

Inserte la descripción de la imagen aquí

4、精度控制  :.nf

print('{:.2f}'.format(3.14159))
结果:3.14
保留两位小数,两位后四舍五入

print('{:.5f}'.format(3.14))
结果:3.14000
保留5位小数,不足补0.

进制转化,b o d x 分别表示二、八、十、十六进制

print('{:b}'.format(20))
print('{:o}'.format(20))
print('{:d}'.format(20))
print('{:x}'.format(20))
结果:

10100
24
20
14 

5、 千位分隔符::,

print('{:,}'.format(100000000))
print('{:,}'.format(123456.123456))
结果:

100,000,000
123,456.123456

Dos, función de unión

Se puede utilizar para concatenar cadenas, conectar los elementos en cadenas, tuplas y listas con caracteres específicos (separadores) para generar una nueva cadena.

list1 = ['1','2','3','4']  
s = "-"
s = s.join(list1) 
print(s) 

输出:
1-2-3-4

用空字符连接

list1 = ['g','e','e','k', 's']  
print("".join(list1)) 
输出:

geeks

Tres, función de reemplazo

String.replace (old, new, count) reemplaza los caracteres antiguos en la cadena con New characters, y count es el número de reemplazos

mystr4 = 'luobodazahui-haha'
imprimir (mystr4.replace ('haha', 'bueno'))

producción

luobodazahui-bueno

Cuatro, función dividida

Corta la cuerda para obtener una lista.

mystr5 = 'luobo, dazahui bueno'

Dividido por espacios
print (mystr5.split ())
dividido por h
print (mystr5.split ('h'))
dividido por comas
print (mystr5.split (','))
salida

['luobo, dazahui', 'bueno']
['luobo, daza', 'ui bueno']
['luobo', 'dazahui bueno']
lista:

  1. rodaja

Misma cadena

  1. añadir 和 extender

Agregar elementos a la lista China

mylist1 = [1, 2]
mylist2 = [3, 4]
mylist3 = [1, 2]
mylist1.append (mylist2)
print (mylist1)
mylist3.extend (mylist2)
print (mylist3)
outout

[1, 2, [3, 4]]
[1, 2, 3, 4]

  1. Eliminar elemento

del: eliminar según el subíndice
pop: eliminar el último elemento
eliminar: eliminar según el valor del elemento

mylist4 = ['a', 'b', 'c', 'd']
del mylist4 [0]
print (mylist4)
mylist4.pop ()
print (mylist4)
mylist4.remove ('c')
print (mylist4)
salida

['b', 'c', 'd']
['b', 'c']
['b']

  1. Clasificación de elementos

sort: reorganiza la lista en un orden específico, el valor predeterminado es de pequeño a grande, el parámetro reverse = True se puede cambiar al orden inverso, de grande a pequeño.

reverse: invierte la lista.

mylist5 = [1, 5, 2, 3, 4]
mylist5.sort ()
print (mylist5)
mylist5.reverse ()
print (mylist5)
salida

[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]
Diccionario:

  1. Diccionario vacío

dict.clear ()

dict1 = {'key1': 1, 'key2': 2}
dict1.clear ()
print (dict1)
salida

{}

  1. Eliminación designada

Utilice el método pop para especificar que se elimine un elemento del diccionario.

dict1 = {'key1': 1, 'key2': 2}
d1 = dict1.pop ('key1')
print (d1)
print (dict1)
salida

1
{'key2': 2}

  1. Iterando sobre el diccionario

dict2 = {'key1': 1, 'key2': 2}
mykey = [key for key in dict2]
print (mykey)
myvalue = [value for value in dict2.values ​​()]
print (myvalue)
key_value = [(k , v) para k, v en dict2.items ()]
print (key_value)
salida

['key1', 'key2']
[1, 2]
[('key1', 1), ('key2', 2)]
4. fromkeys

Se utiliza para crear un nuevo diccionario, con los elementos de la secuencia como claves del diccionario, y valor es el valor inicial correspondiente a todas las claves del diccionario.

llaves = ['zhangfei', 'guanyu', 'liubei', 'zhaoyun']
dict.fromkeys (llaves, 0)
salida

{'zhangfei': 0, 'guanyu': 0, 'liubei': 0, 'zhaoyun': 0}

3. Describe brevemente la codificación de cadenas en Python

En el diseño inicial de la computadora, se utilizaron 8 bits como byte. El número entero más grande que puede representar un byte es 255 (binario 11111111 = decimal 255). Si desea representar un número entero más grande, debe utilizar más bytes.
Al principio, las computadoras solo tenían codificación ASCII, es decir, solo contenían letras en inglés en mayúsculas y minúsculas, números y algunos símbolos, que obviamente no eran suficientes para otros idiomas, como el chino y el japonés. Más tarde, se inventó Unicode, que unificó todos los idiomas en un conjunto de codificaciones, para que no hubiera más problemas confusos. Cuando es necesario guardarlo en el disco duro o transferirlo, se convierte a codificación UTF-8. UTF-8 es un método de codificación de longitud variable que pertenece a Unicode.

En Python, una cadena codificada en Unicode se puede codificar en bytes específicos usando el método encode (), o los bytes se pueden codificar en una cadena usando el método decode ().

4. Imprime la tabla de multiplicar nueve-nueve-nueve

for i in range(1,10):
    for j in range(1,i+1):
        print("%s*%s = %s"%(i,j,i*j),end="; ")
    print()

5. La diferencia entre __new__ e init en orientado a objetos

Se llama a __new__ antes de que se cree la instancia, porque su tarea es crear una instancia y devolver el objeto de la instancia, que es un método estático.
Se llama a __init__ cuando se crea el objeto de instancia y luego establece algunos valores iniciales de las propiedades del objeto, que generalmente se utilizan para inicializar una instancia de clase. Es un método de instancia.

1. __new__ debe tener al menos un parámetro cls, que representa la clase actual. Este parámetro es reconocido automáticamente por el intérprete de Python cuando se crea una instancia.
2. __new__ debe tener un valor de retorno para devolver la instancia instanciada. Se debe prestar especial atención a este punto al implementar __new__ usted mismo. Puede devolver la clase principal (a través de super (current class name, cls)) __new__ instance, O directamente una instancia de __nuevo__ de objeto.
3. __init__ tiene un parámetro self, que es la instancia devuelta por este __new__. __Init__ puede completar algunas otras acciones de inicialización sobre la base de __new__, y __init__ no requiere un valor de retorno.
4. Si __new__ crea una instancia de la clase actual, automáticamente llamará a la función __init__. El primer parámetro de la función __new__ llamada en la instrucción return es cls para asegurar que es una instancia de la clase actual. Si es otra class El nombre de la clase; entonces la creación y el retorno reales son instancias de otras clases, de hecho, no se llamará a la función __init__ de la clase actual, ni se llamará a la función __init__ de otras clases

6. Realice la función de búsqueda de dicotomías

La búsqueda binaria requiere que los objetos estén en orden y sus principios básicos son los siguientes:

1. Comenzando desde el elemento del medio de la matriz, si el elemento del medio resulta ser el elemento a buscar, el proceso de búsqueda finaliza;

2. Si un elemento en particular es más grande o más pequeño que el elemento del medio, busque en la mitad de la matriz que sea más grande o más pequeña que el elemento del medio y comience la comparación desde el elemento del medio como al principio.

3. Si la matriz está vacía en un determinado paso, significa que no se puede encontrar.

# 二分法查找
# 从列表test = [1,5,8,16,24,48,59,80]
def erfen(list_number,n):
    begin = 0;
    end = len(list_number)-1;
    while begin <= end:
        mid = (begin + end)//2;
        if n > list_number[mid]:
            begin = mid + 1;
        else:
            if n < list_number[mid]:
                end = mid -1;
            else:
                print("第%s个数:"% (mid+1));
                break;

test = [1,5,8,16,24,48,59,80,90];
print("总数列为:",test);
a = int(input("请输入查找的数:"));
erfen(test,a);

7. Método de formato de cadena

  1. Utilice el operador%
print("This is for %s" % "Python")
print("This is for %s, and %s" %("Python", "You"))

output

This is for Python
This is for Python, and You
  1. str.format

En Python3, se introdujo este nuevo método de formateo de cadenas.

print("This is my {}".format("chat"))
print("This is {name}, hope you can {do}".format(name="zhouluob", do="like"))

output

This is my chat
This is zhouluob, hope you can like
  1. cuerdas f

En Python3-6, se introdujo este nuevo método de formateo de cadenas.

name = "luobodazahui"
print(f"hello {name}")

output

hello luobodazahui

#一个复杂些的例子:

def mytest(name, age):
    return f"hello {name}, you are {age} years old!"
people = mytest("luobo", 20)
print(people)
output

hello luobo, you are 20 years old!

8. Implemente una API simple

Utilice flask para construir un servidor web

 from flask import Flask, request
 app = Flask(__name__)
 
 @app.route('/', methods=['POST'])
 def simple_api():
     result = request.get_json()
     return result
 
 
if __name__ == "__main__":
    app.run()

9. Realice una secuencia de Fibonacci

Secuencia de Fibonacci: También conocida como secuencia de la sección áurea, se refiere a dicha secuencia: 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
En matemáticas, la secuencia de Fibonacci es la siguiente: definido de forma recursiva: F (1) = 1, F (2) = 1, F (n) = F (n-1) + F (n-2) (n> = 2, n∈N *)

a,b = 1,1
lst = [1]
n = int(input("请输入第n个数:"))
for i in range(n-1):
    lst.append(b)
    a,b = b,a+b #关键在这句

print("第%s个数为:%s"%(n,a))
print(lst)
def fpnq(n):
    i = 3;
    j = 1;
    b = 1;
    # a = 2;
    if n == 0:
        print("cuowu");
    elif n == 1:
        print("1");
    elif n == 2:
        print("1,1")
    else:
        while(i <= n):
            if i ==3:
                print("1,1",end=',')
            j,b = b,j+b;
            # a = j + b;
            # j = b;
            # b = a;
            print(b, end=',');
            i = i + 1;

fpnq(10);

10. Clasificación de burbujas

# 冒泡排序 arr = [9,7, 4, 3, 67, 34, 1, 8,42]

arr = [9,7, 4, 3, 67, 34, 1, 8,42];
print("排序前的数列:",arr);

def maopao(arr):
    n = len(arr);
    for i in range(0,n-1):
        for j in range(0,n-1-i):
            if arr[j] > arr[j+1]:
                arr[j],arr[j+1] = arr[j+1],arr[j];

maopao(arr);
print("排序后的数列:",arr);

11. Clasificación rápida

La idea de la clasificación rápida: primero seleccione cualquier dato (generalmente el primer número de la matriz) como datos clave, y luego coloque todos los números más pequeños antes y todos los números más grandes después. Este proceso se llama una clasificación rápida y, a continuación, clasifique de forma recursiva los datos en ambos lados.

Seleccionar valor de referencia: seleccionar un elemento de la secuencia, llamado "pivote";
segmentación: reordenar la secuencia, todos los elementos menores que el valor de referencia se colocan delante de la referencia y todos los elementos mayores que el valor de referencia se colocan en el benchmark Behind (el número igual al valor de referencia puede ir a cualquier lado). Una vez finalizada esta segmentación, se ha completado la ordenación del valor de referencia;
ordenación recursiva de subsecuencias: ordena de manera recursiva las subsecuencias de elementos menores que el valor de referencia y las subsecuencias de elementos mayores que el valor de referencia.

list1 = [9, 7, 4, 3, 67, 34, 1, 8, 42];
def partition(arr, low, high):
    i = (low - 1)  # 最小元素索引
    pivot = arr[high]

    for j in range(low, high):

        # 当前元素小于或等于 pivot
        if arr[j] <= pivot:
            i = i + 1
            arr[i], arr[j] = arr[j], arr[i]


    arr[i + 1], arr[high] = arr[high], arr[i + 1]

    return (i + 1)


def quicksort(arr, low, high):
    if low < high:
        pi = partition(arr, low, high)

        quicksort(arr, low, pi - 1)
        quicksort(arr, pi + 1, high)


quicksort(list1, 0, len(list1) - 1)

print(list1)

Disposición de los conocimientos básicos de la entrevista de
Python (Parte 1) Disposición de los conocimientos básicos de la entrevista de Python (Parte 2)

Supongo que te gusta

Origin blog.csdn.net/m0_37882192/article/details/115002061
Recomendado
Clasificación