[Python] Anordnung grundlegender Interview-Wissenspunkte
-
- 1. Der Unterschied zwischen interpretierten und kompilierten Sprachen
- 2. Gängige Methoden für Datentypen
- 3. Beschreiben Sie kurz die Zeichenfolgencodierung in Python
- 4. Drucken Sie die Neun-Neun-Neun-Multiplikationstabelle
- 5. Der Unterschied zwischen __new__ und __init__ in objektorientiert
- 6. Realisieren Sie die Dichotomie-Suchfunktion
- 7. String-Formatierungsmethode
- 8. Implementieren Sie eine einfache API
- 9. Realisieren Sie eine Fibonacci-Sequenz
- 10. Blasensortierung
- 11. Schnelle Sortierung
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:字段长度(最左到最右之间的长度)
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:
- Scheibe
Gleiche Zeichenfolge
- 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]
- 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']
- 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:
- Leeres Wörterbuch
dict.clear ()
dict1 = {'key1': 1, 'key2': 2}
dict1.clear ()
druckt (dict1)
aus
{}
- 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}
- 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
- 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
- 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
- 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)