[Python] Interview grundlegende Wissenspunkte

Python-Basistest 100 Fragen

1. Der Unterschied zwischen interpretierten und kompilierten Sprachen

Kompilierte Sprache: Kompilieren Sie alle vorbereiteten Quellprogramme in ausführbare Binärprogramme. Anschließend können Sie dieses Programm direkt ausführen. Wie zum Beispiel: C, C ++
interpretierte Sprache: Übersetzen Sie einen Satz des fertigen Quellprogramms und führen Sie dann einen Satz bis zum Ende aus! Wie zum Beispiel: Python
(Java ist etwas Besonderes, Java-Programm muss ebenfalls kompiliert werden, aber es wird nicht direkt als Maschinensprache kompiliert, sondern als Bytecode kompiliert, und dann wird der Bytecode auf interpretierte Weise ausgeführt.)

2. Gängige Methoden für Datentypen

Erstens, Formatierungsfunktion formatieren

Die Funktion str.format () ist eine Format-String-Funktion. Diese Funktion kann schnell verschiedene Strings verarbeiten.
Es verwendet {} und: anstelle von%.
Bei der Formatierung von Zeichenfolgen wird die Methode format () verwendet. Das verwendete Grundformat lautet:
<Vorlagenzeichenfolge> .format (<durch Kommas getrennte Parameter>) Nach dem
Aufrufen der Methode format () wird eine neue Zeichenfolge zurückgegeben, deren Parameter ab 0 nummeriert sind .

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:字段长度(最左到最右之间的长度)

Fügen Sie hier eine Bildbeschreibung ein

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

Zweitens, Join-Funktion

Es kann verwendet werden, um Zeichenfolgen zu verketten, die Elemente in Zeichenfolgen, Tupeln und Listen mit angegebenen Zeichen (Trennzeichen) zu verbinden, um eine neue Zeichenfolge zu generieren.

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

Drei, Funktion ersetzen

String.replace (alt, neu, Anzahl) ersetzt alte Zeichen in der Zeichenfolge durch Neue Zeichen, und Anzahl ist die Anzahl der Ersetzungen

mystr4 = 'luobodazahui-haha'
print (mystr4.replace ('haha', 'gut'))

Ausgabe

luobodazahui-gut

Vier, Split-Funktion

Schneiden Sie die Zeichenfolge ab, um eine Liste zu erhalten.

mystr5 = 'luobo, dazahui gut'

Geteilt durch Leerzeichen
print (mystr5.split ())
geteilt durch h
print (mystr5.split ('h'))
geteilt durch Kommas
print (mystr5.split (','))
Ausgabe

['luobo, dazahui', 'gut']
['luobo, daza', 'ui gut']
['luobo', 'dazahui gut']
liste:

  1. Scheibe

Gleiche Zeichenfolge

  1. anhängen 和 verlängern

Fügen Sie der Liste China Elemente hinzu

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. Element löschen

del: Löschen gemäß dem Index
pop: Löschen des letzten Elements
Entfernen: Löschen gemäß dem Wert des Elements

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

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

  1. Elementsortierung

sort: Ordne die Liste in einer bestimmten Reihenfolge neu an. Die Standardeinstellung ist "klein". Der Parameter "reverse = True" kann in "umgekehrte Reihenfolge" geändert werden, von "groß" in "klein".

umgekehrt: Liste umkehren.

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

[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]
Wörterbuch:

  1. Leeres Wörterbuch

dict.clear ()

dict1 = {'key1': 1, 'key2': 2}
dict1.clear ()
druckt (dict1)
aus

{}

  1. Bezeichnetes Löschen

Verwenden Sie die Pop-Methode, um anzugeben, dass ein Element im Wörterbuch gelöscht werden soll

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

1
{'key2': 2}

  1. Durch das Wörterbuch iterieren

dict2 = {'key1': 1, 'key2': 2}
mykey = [Schlüssel für Schlüssel in dict2]
print (mykey)
myvalue = [Wert für Wert in dict2.values ​​()]
print (myvalue)
key_value = [(k , v) für k, v in dict2.items ()]
print (key_value)
Ausgang

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

Wird zum Erstellen eines neuen Wörterbuchs verwendet, wobei die Elemente in der Sequenz die Schlüssel des Wörterbuchs sind. Der Wert ist der Anfangswert, der allen Schlüsseln des Wörterbuchs entspricht

keys = ['zhangfei', 'guanyu', 'liubei', 'zhaoyun']
dict.fromkeys (keys, 0)
Ausgabe

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

3. Beschreiben Sie kurz die Zeichenfolgencodierung in Python

Beim anfänglichen Entwurf des Computers wurden 8 Bits als Byte verwendet. Die größte Ganzzahl, die ein Byte darstellen kann, ist 255 (binär 11111111 = dezimal 255). Wenn Sie eine größere Ganzzahl darstellen möchten, müssen Sie mehr Bytes verwenden.
Computer hatten frühestens nur eine ASCII-Codierung, dh sie enthielten nur englische Groß- und Kleinbuchstaben, Zahlen und einige Symbole. Diese reichten offensichtlich nicht für andere Sprachen wie Chinesisch und Japanisch. Später wurde Unicode erfunden. Unicode vereinheitlichte alle Sprachen zu einer Reihe von Codierungen, so dass es keine verstümmelten Probleme mehr gab. Wenn es auf der Festplatte gespeichert oder übertragen werden muss, wird es in die UTF-8-Codierung konvertiert. UTF-8 ist eine Codierungsmethode mit variabler Länge, die zu Unicode gehört.

In Python kann eine in Unicode codierte Zeichenfolge mit der Methode encode () in bestimmte Bytes oder mit der Methode decode () in eine Zeichenfolge codiert werden.

4. Drucken Sie die Neun-Neun-Neun-Multiplikationstabelle

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

5. Der Unterschied zwischen __new__ und init in objektorientiert

__new__ wird aufgerufen, bevor die Instanz erstellt wird, da die Aufgabe darin besteht, eine Instanz zu erstellen und das Instanzobjekt zurückzugeben, bei dem es sich um eine statische Methode handelt.
__init__ wird aufgerufen, wenn das Instanzobjekt erstellt wird, und legt dann einige Anfangswerte der Objekteigenschaften fest, die normalerweise zum Initialisieren einer Klasseninstanz verwendet werden. Ist eine Instanzmethode.

1. __new__ muss mindestens einen Parameter cls haben, der die aktuelle Klasse darstellt. Dieser Parameter wird vom Python-Interpreter automatisch erkannt, wenn er instanziiert wird.
2. __new__ muss einen Rückgabewert haben, um die instanziierte Instanz zurückzugeben. Dieser Punkt muss besonders beachtet werden, wenn Sie __new__ selbst implementieren. Sie können die übergeordnete Klasse (über super (aktueller Klassenname, cls)) __new__ -Instanz oder direkt zurückgeben eine Instanz von __new__ of object.
3. __init__ hat einen Parameter self, bei dem es sich um die von diesem __new__ zurückgegebene Instanz handelt. __Init__ kann einige andere Initialisierungsaktionen auf der Grundlage von __new__ ausführen, und __init__ erfordert keinen Rückgabewert.
4. Wenn __new__ eine Instanz der aktuellen Klasse erstellt, wird automatisch die Funktion __init__ aufgerufen. Der erste Parameter der Funktion __new__, der in der return-Anweisung aufgerufen wird, ist cls, um sicherzustellen, dass es sich um eine Instanz der aktuellen Klasse handelt. Wenn es sich um eine andere handelt Klasse Der Name der Klasse, dann sind die tatsächliche Erstellung und Rückgabe Instanzen anderer Klassen. Tatsächlich wird weder die Funktion __init__ der aktuellen Klasse noch die Funktion __init__ anderer Klassen aufgerufen

6. Realisieren Sie die Dichotomie-Suchfunktion

Die binäre Suche erfordert, dass die Objekte in Ordnung sind, und ihre Grundprinzipien lauten wie folgt:

1. Ausgehend vom mittleren Element des Arrays endet der Suchvorgang, wenn das mittlere Element zufällig das zu durchsuchende Element ist.

2. Wenn ein bestimmtes Element größer oder kleiner als das mittlere Element ist, suchen Sie in der Hälfte des Arrays, die größer oder kleiner als das mittlere Element ist, und beginnen Sie den Vergleich wie am Anfang mit dem mittleren Element.

3. Wenn das Array zu einem bestimmten Zeitpunkt leer ist, bedeutet dies, dass es nicht gefunden werden kann.

# 二分法查找
# 从列表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. String-Formatierungsmethode

  1. Verwenden Sie den Operator%
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

In Python3 wurde diese neue Formatierungsmethode für Zeichenfolgen eingeführt.

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. F-Saiten

In Python3-6 wurde diese neue Methode zur Formatierung von Zeichenfolgen eingeführt.

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. Implementieren Sie eine einfache API

Verwenden Sie flask, um einen Webserver zu erstellen

 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. Realisieren Sie eine Fibonacci-Sequenz

Fibonacci-Sequenz: Auch als Golden-Section-Sequenz bekannt, bezieht sie sich auf eine solche Sequenz: 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
In der Mathematik ist die Fibonacci-Sequenz wie folgt rekursiv definiert: 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. Blasensortierung

# 冒泡排序 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. Schnelle Sortierung

Die Idee der schnellen Sortierung: Wählen Sie zuerst alle Daten (normalerweise die erste Nummer des Arrays) als Schlüsseldaten aus und stellen Sie dann alle Zahlen, die kleiner als diese sind, und alle Zahlen, die größer als sie sind, davor. Dieser Vorgang wird aufgerufen eine schnelle Sortierung und dann die Daten auf beiden Seiten rekursiv sortieren.

Benchmark-Wert auswählen: Wählen Sie ein Element aus der Sequenz aus, das als "Pivot" bezeichnet wird.
Segmentierung: Ordnen Sie die Sequenz neu an. Alle Elemente, die kleiner als der Benchmark-Wert sind, werden vor dem Benchmark platziert, und alle Elemente, die größer als der Benchmark-Wert sind, werden in der Sequenz platziert Benchmark Behind (die Zahl, die dem Referenzwert entspricht, kann zu beiden Seiten gehen). Nach dem Ende dieser Segmentierung ist die Sortierung des Referenzwerts abgeschlossen;
rekursive Sortierung von Teilsequenzen: Rekursiv sortieren Sie die Teilsequenzen von Elementen, die kleiner als der Referenzwert sind, und die Teilsequenzen von Elementen, die größer als der Referenzwert sind.

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)

Anordnung der Grundkenntnisse des
Python-Interviews (Teil 1) Anordnung der Grundkenntnisse des Python-Interviews (Teil 2)

Ich denke du magst

Origin blog.csdn.net/m0_37882192/article/details/115002061
Empfohlen
Rangfolge