Maison >développement back-end >Tutoriel Python >60 questions et réponses d'entretien Python sélectionnées ! A lire absolument lors de la recherche d'un emploi après la nouvelle année

60 questions et réponses d'entretien Python sélectionnées ! A lire absolument lors de la recherche d'un emploi après la nouvelle année

云罗郡主
云罗郡主original
2019-01-28 13:25:107896parcourir

Les 60 dernières questions d'entretien Python 2019 et les réponses sélectionnées ! A lire absolument lors de la recherche d'un emploi pour la nouvelle année, avantages pour les Pythons. [Tutoriels recommandés : Tutoriel Python]

60 questions et réponses d'entretien Python sélectionnées ! A lire absolument lors de la recherche d'un emploi après la nouvelle année

1. Quelles sont les fonctionnalités et les avantages de Python ?

Réponse : Omis.

2. Qu'est-ce que la fonction lambda ? Quels sont ses avantages ?

Une fonction lambda est une fonction qui prend un nombre quelconque d'arguments (y compris des arguments facultatifs) et renvoie une valeur d'expression unique. Les fonctions Lambda ne peuvent pas contenir de commandes et ne peuvent pas contenir plus d'une expression. N'essayez pas d'en mettre trop dans une fonction lambda ; si vous avez besoin de quelque chose de plus complexe, définissez une fonction normale et faites-la aussi longue que vous le souhaitez.

La fonction lambda peut accepter n'importe quel nombre de paramètres, y compris les paramètres facultatifs, mais il n'y a qu'une seule expression :

>>> 🎜>

>>> g(3,4)

12

>>> ;> g(1)

1

>>> g(3, 4, 7)

14

Vous pouvez également utilisez la fonction lambda directement sans l'attribuer à une variable :

>>> (lambdax,y=0,z=0:x+y+z )(3,5,6)

14

Si votre fonction est très simple, avec une seule expression et aucune commande, vous pouvez envisager la fonction lambda. Sinon, vous feriez mieux de définir une fonction. Après tout, les fonctions n'ont pas autant de restrictions.

3. Quelle est la différence entre la copie profonde et la copie superficielle ?

La copie approfondie consiste à copier l'objet lui-même vers un autre objet. Cela signifie que si vous apportez des modifications à une copie d'un objet, l'objet d'origine ne sera pas affecté. En Python, nous utilisons la fonction deepcopy() pour effectuer une copie approfondie. La méthode d'utilisation est la suivante :

>>> copy.deepcopy( a)

La copie superficielle consiste à copier la référence d'un objet vers un autre objet. Donc si nous apportons des modifications à la copie, cela affectera l’objet original. Utilisez la fonction copy() pour effectuer une copie superficielle. La méthode d'utilisation est la suivante :

>>> b=copy.copy(a)

4. Quelles sont les différences entre les listes et les tuples ?

try…sauf…sauf…[else…][finally…]

Exécutez l'instruction sous try Si une exception est levée, le processus d'exécution passera à l'instruction except. . Essayez d'exécuter chaque branche except de manière séquentielle. Si l'exception déclenchée correspond au groupe d'exceptions dans except, exécutez l'instruction correspondante. Si tous les saufs ne correspondent pas, l'exception sera transmise au code d'essai suivant de niveau le plus élevé qui appelle ce code.

L'instruction sous try est exécutée normalement et le code du bloc else est exécuté. Si une exception se produit, elle ne sera pas exécutée ; s'il y a une instruction final, elle sera toujours exécutée à la fin.

5. Comment générer des nombres aléatoires en Python ?

Réponse : module aléatoire

Entier aléatoire : random.randint(a,b) : renvoie un entier aléatoire x, a<=x<=b

random .randrange(start,stop,[,step]) : renvoie une plage entière aléatoire entre (start,stop,step), à l'exclusion de la valeur de fin.

Nombre réel aléatoire : random.random() : renvoie un nombre à virgule flottante entre 0 et 1

random.uniform(a,b) : renvoie un nombre à virgule flottante dans la plage spécifiée

6. Comment implémenter le multi-threading en Python ?

a. Python a un package multi-thread, mais si vous souhaitez que le multi-thread accélère votre code, ce n'est généralement pas une bonne idée de l'utiliser.

b. Python a une structure appelée GlobalInterpreter Lock (GIL). Le GIL garantit qu'un seul "thread" peut s'exécuter à tout moment. Un thread obtient le GIL, effectue un petit travail, puis transmet le GIL au thread suivant.

c. Cela se produit très rapidement, donc à l'œil humain, il semble que vos threads s'exécutent en parallèle, mais en réalité, ils utilisent à tour de rôle le même cœur de processeur.

d. Toutes ces passes GIL ajoutent des frais généraux à l'exécution. Cela signifie que si vous souhaitez que votre code s'exécute plus rapidement, ce n'est généralement pas une bonne idée d'utiliser le package de threading.

7. Comment utiliser l'opérateur ternaire en python ?

L'opérateur ternaire est un opérateur utilisé pour afficher des instructions conditionnelles. Celui-ci contient des instructions qui donnent une valeur vraie ou fausse.

Syntaxe : La syntaxe de l'opérateur ternaire est la suivante,

[on_true] if [expression] else [on_false]

Exemple :

x, y = 25,50

big = x if x

Si x

8. Expliquez l'héritage en Python avec un exemple.

L'héritage permet à une classe d'obtenir tous les membres (tels que les propriétés et les méthodes) d'une autre classe. L'héritage permet la réutilisabilité du code, ce qui facilite la création et la maintenance des applications. La classe dont nous héritons est appelée super-classe et la classe dont nous héritons est appelée dérivée/sous-classe.

Voici les différents types d'héritage pris en charge par Python :

a. Héritage unique - une classe dérivée obtient les membres d'une seule superclasse.

b. Héritage multi-niveaux - La classe dérivée d1 hérite de la classe de base base1, d2 hérite de base2.

c. Héritage hiérarchique - n'importe quel nombre de sous-classes peut être hérité d'une classe de base

d Héritage multiple - une classe dérivée hérite de plusieurs classes de base.

9. Expliquez ce qu'est Flask et ses avantages ?

Flask est un micro-framework web Python basé sur la licence BSD "Werkzeug, Jinja2 and Good Intentions". Werkzeug et Jinja2 sont deux de ses dépendances. Cela signifie qu'il n'a presque aucune dépendance vis-à-vis de bibliothèques externes. Cela rend le framework léger avec seulement quelques dépendances aux mises à jour et moins de bugs de sécurité.

Les sessions permettent essentiellement de mémoriser des informations d'une requête à une autre. Dans Flask, les sessions utilisent des cookies signés afin que l'utilisateur puisse visualiser le contenu de la session et le modifier. Si et seulement s'il existe une clé Flask.secret_key, l'utilisateur peut modifier la session.

10. Qu'est-ce qu'un dictionnaire en Python ?

Le type de données intégré à Python est appelé dictionnaire. Il définit la relation biunivoque entre les clés et les valeurs. Un dictionnaire contient une paire de clés et leurs valeurs correspondantes. Les dictionnaires sont indexés par clés.

Prenons un exemple :

L'exemple suivant contient quelques clés, Country, Capital & PM, et leurs valeurs correspondantes sont respectivement India, Delhi et Modi.

dict={'Pays':'Inde','Capital':'Delhi','PM':'Modi'}

imprimer dict[Pays]

Inde

imprimer dict[Capital]

Delhi

imprimer dict[PM]

Modi

11. Qu'est-ce que Exposants négatifs, pourquoi sont-ils utilisés ?

Les séquences en Python sont indexées et sont constituées de nombres positifs et négatifs. Les nombres positifs utilisent « 0 » comme premier indice, « 1 » comme deuxième indice, et ainsi de suite.

Les indices pour les nombres négatifs commencent par « -1 », représentant le dernier index de la séquence, « -2 » comme avant-dernier index, et ainsi de suite.

12. Comment utiliser Python pour interroger et remplacer une chaîne de texte ?

Vous pouvez utiliser la méthode sub() pour interroger et remplacer. Le format de la méthode sub est :

a sub (remplacement, string[,count=0])

b. le remplacement est le texte à remplacer

c. la chaîne est le texte qui doit être remplacé

d count est un paramètre facultatif, faisant référence au maximum. nombre de remplacements

13. Expliquez la syntaxe et-ou de Python

est similaire à l'expression C bool a : b, mais bool et a ou b, quand a ? est faux, ne fonctionne pas comme l'expression C bool ? a : b

L'astuce and-or doit être encapsulée dans une fonction :

defchoose(bool, a,b): return (booland[a ]or[b])[0]

Parce que [a] est une liste non vide, elle ne peut jamais être fausse. Même si a vaut 0 ou '' ou une autre valeur fausse, list[a] est vraie car elle comporte un élément.

14. Veuillez écrire un morceau de code Python pour supprimer les éléments en double dans une liste

1. Utilisez la fonction set, set(list)

<🎜. > 2. Utilisez la fonction dictionnaire,

>>>a=[1,2,4,2,4,5,6,5,7,8,9,0]

>>> clés ())

>>> c

15. Quelle est la différence entre les guillemets simples, les guillemets doubles et les guillemets triples ?

Les guillemets simples et les guillemets doubles sont équivalents. Si vous souhaitez envelopper la ligne, vous avez besoin du symbole () Les guillemets triples peuvent envelopper directement la ligne et peuvent contenir des commentaires

Si. vous voulez exprimer Allons-y Cette chaîne guillemets simples : s4 = 'Allons-y'

guillemets doubles : s5 = "Allons-y"

s6 = 'J'aime vraiment "python"! '

C'est pourquoi les guillemets simples et les guillemets doubles peuvent représenter des chaînes.

16. Toutes les allocations de mémoire sont-elles libérées à la sortie de Python ?

La réponse est non. Les variables avec des références circulaires d'objet ou des références d'espace de noms globales ne sont souvent pas publiées à la sortie de Python

De plus, certains contenus conservés par la bibliothèque C ne seront pas publiés.

17. Quelle est la différence entre search() et match() en Python ?

La fonction match() détecte uniquement si RE correspond au début de la chaîne. search() analysera la chaîne entière pour trouver une correspondance. s'il réussit à la position 0. Retour, si la position de départ ne correspond pas avec succès, match() n'en renvoie aucun.

18. Comment randomiser des éléments dans une liste en Python ?

Considérez l'exemple ci-dessous :

à partir d'un mélange d'importation aléatoirex = ['Keep', 'The', 'Blue', 'Flag', 'Flying', 'High']

shuffle(x)

print(x)

La sortie du code suivant est la suivante.

['Flying', 'Keep', 'Blue', 'High', 'The', 'Flag']

19. Qu'est-ce que c'est?

La compilation et la liaison permettent aux nouvelles extensions d'être compilées correctement sans aucune erreur et ne peuvent être liées que si elles réussissent le processus de compilation. Si le chargement dynamique est utilisé, cela dépend des styles fournis par le système. L'interpréteur Python peut être utilisé pour fournir un chargement dynamique des fichiers de paramètres de configuration et l'interpréteur sera reconstruit.

Cela nécessite les étapes suivantes : a. Créez un fichier avec n'importe quel nom et dans n'importe quelle langue prise en charge par le compilateur système. Par exemple file.c ou file.cpp

b. Placez ce fichier dans le répertoire Modules/ de la distribution que vous utilisez.

c. Ajoutez une ligne dans le fichier Setup.local qui existe dans le répertoire Modules/.

d. Exécutez le fichier en utilisant spam file.o

e. Après avoir exécuté avec succès cet interpréteur de reconstruction, utilisez la commande make dans le répertoire de niveau supérieur.

f. Si le fichier a changé, exécutez reconstructionMakefile en utilisant la commande "make Makefile".

20. Python explique les méthodes split(), sub(), subn() du module "re".

Pour modifier une chaîne, le module "re" de Python propose 3 méthodes. Ce sont :

split() - "diviser" la chaîne donnée en une liste à l'aide d'expressions régulières.

sub() - Recherche toutes les sous-chaînes correspondant à un modèle d'expression régulière et les remplace par des chaînes différentes.

subn() - Il est similaire à sub() et renvoie également une nouvelle chaîne et un numéro de séquence de remplacement.

21. Quelle est la différence entre range et xrange ?

Pour la plupart, xrange et range sont fonctionnellement identiques dans le sens où ils fournissent tous deux un moyen de générer une liste d'entiers que vous pouvez utiliser. La seule différence est que range renvoie un objet liste Python et xrange renvoie un objet xrange.

Cela signifie que xrange ne génère pas réellement de listes statiques comme le fait le runtime. Il crée des valeurs selon les besoins à l'aide d'une technique spéciale appelée rendement. Cette technique fonctionne avec un objet appelé générateur. Cela signifie que si vous avez une plage très vaste et que vous souhaitez générer une liste, disons 1 milliard, xrange est la fonction à utiliser.

Cela est particulièrement vrai si vous disposez d'un système très sensible à la mémoire, comme le téléphone que vous utilisez, car la plage utilisera autant de mémoire que pour créer le tableau d'entiers, ce qui peut provoquer des erreurs de mémoire. et provoquer le crash du programme.

22. Différences entre Django, Pyramid et Flask.

Flask est un "microframework" principalement utilisé pour les petites applications avec des exigences plus simples. Dans Flask, vous devez utiliser des bibliothèques externes.

Pyramid convient aux grandes applications. Il offre de la flexibilité et permet aux développeurs d'utiliser les bons outils pour leurs projets. Les développeurs peuvent choisir la base de données, la structure de l'URL, le style du modèle, etc.

Django peut également être utilisé comme Pyramid pour des applications plus importantes.

23. Liste les styles hérités dans Django.

Dans Django, il existe trois styles d'héritage possibles :

Classe de base abstraite : utilisez-la lorsque vous souhaitez simplement que la classe parent contienne des informations que vous ne souhaitez pas saisir. chaque style de modèle enfant.

Héritage multi-table : utilisez ce style si vous sous-classez des modèles existants et que vous avez besoin que chaque modèle ait sa propre table de base de données.

Modèle proxy : Vous pouvez utiliser ce modèle si vous souhaitez uniquement modifier le comportement au niveau Python du modèle sans changer les champs du modèle.

24. Qu'est-ce que le patch de singe Python ?

En Python, le terme patch singe fait simplement référence à la modification dynamique d'une classe ou d'un module au moment de l'exécution.

Considérons l'exemple suivant :

# m.py

class MyClass:

def f(self):

print " f ()"

Ensuite, nous pouvons exécuter le test du patch singe comme ceci :

import m

def Monkey_f(self):

print " singe_f()"

m.MyClass.f = singe_f

obj = m.MyClass()

obj.f()

La sortie est comme suit :

monkey_f()

Nous pouvons voir qu'en dehors du module, nous avons apporté quelques modifications au comportement de la fonction f(), et la fonction singe_f() est effectivement exécutée.

25. Il existe deux séquences a et b, toutes deux de taille n. Les valeurs des éléments de la séquence sont des nombres entiers arbitraires, désordonnés ?

Exigence : minimiser la différence entre [somme des éléments de la séquence a] et [somme des éléments de la séquence b] en échangeant des éléments dans a et b.

1. Fusionnez les deux séquences en une seule séquence et triez-les dans la séquence Source

2 Retirez le plus grand élément Grand et le deuxième plus grand élément Petit

3. Dans La séquence restante S[:-2] est divisée également pour obtenir la séquence max, min

4 Ajoutez Small à la séquence max, augmentez Big à la séquence min et recalculez la nouvelle somme de séquence. la plus grande somme est max, la petite est min.

26. Comment envoyer des emails en utilisant Python ?

Vous pouvez utiliser la bibliothèque standard smtplib.

Le code suivant peut être exécuté sur des serveurs prenant en charge les écouteurs SMTP.

import sys, smtplib

fromaddr = raw_input ("De : ")

toaddrs = raw_input ("À : "). split(',')

print "Entrez le message, terminez par ^D:"

msg = ”

while 1:

line = sys .stdin.readline()

if pas line:

break

msg = msg + line

# Envoyer une partie du mail

server = smtplib.SMTP('localhost')

server.sendmail(fromaddr, toaddrs, msg)

server.quit()

27. Une logique Python qui compte le nombre de lettres majuscules dans un fichier Users\lifei\Desktop')

>>> avec open ('Today.txt') aujourd'hui :

count=0

pour moi aujourd'hui. read() :

if i.isupper() :

count+=1

print(count)

Résultat de l'exécution :

26

28. Combien de temps un identifiant peut-il durer en Python ?

En Python, les identifiants peuvent être de n'importe quelle longueur. De plus, nous devons respecter les règles suivantes lors de la dénomination des identifiants :

a Il ne peut commencer que par un trait de soulignement ou une lettre en A-Z/a-z

b. a-z/ 0-9

c. Sensible à la casse

d Les mots-clés ne peuvent pas être utilisés comme identifiants :

29. Python Les opérateurs //, % et ** dans

//opérateur effectuent une division au sol (arrondie à l'inférieur), il renverra la partie entière du résultat de la division entière.

>>> 7//2

3

Après la divisibilité ici, 3,5 sera restitué.

De même, effectuez une opération d'exponentiation. ab renverra a élevé à la puissance b.

>>> 2**10

1024

Enfin, % effectue l'opération modulo et renvoie le reste de la division.

>>> 13% 7

6

30.

En Python, en plus du décimal, on peut également utiliser le binaire, l'octal et l'hexadécimal. a. Les nombres binaires sont composés de 0 et 1, et nous utilisons le préfixe 0b ou 0B pour représenter les nombres binaires.

>>> int (0b1010)

10

b. Utilisez la fonction bin() pour convertir un nombre sous sa forme binaire.

>> numéro du système.

>>> oct(8)

'0o10'

d Le nombre hexadécimal est composé des nombres 0 à 15, représentés par le préfixe 0x ou 0X. Nombre hexadécimal.

>>> hex (16)

'0x10'

>

Comment obtenir la liste des toutes les clés du dictionnaire ?

Utilisez keys() pour obtenir toutes les clés du dictionnaire

>>>mydict={'a':1,'b':2,'c' : 3,'e':5}

>>> mydict.keys()

dict_keys(['a', 'b', 'c', 'e' ] )

32. Comment déclarer plusieurs variables et attribuer des valeurs ?

Il y a deux manières :

>>> a,b,c=3,4,5 #Cela attribue 3,4 et 5 à a, b , et c respectivement

>>> a=b=c=3 #Cela attribue 3 à a,b et c

Solution du tuple Qu'est-ce que encapsulation ?

Regardons d'abord la décapsulation :

>>> mytuple=3,4,5

>>>

(3, 4, 5)

Ceci encapsule 3, 4, 5 dans le tuple mytuple.

Maintenant, nous décompressons ces valeurs en variables x, y, z :

>>> x,y,z=mytuple

>> ; >

Vous pouvez utiliser la commande edit mysite/setting.py, qui est un module python ordinaire, et le niveau du module représente les paramètres de Django.

Django utilise SQLite par défaut ; c'est facile pour les utilisateurs de Django, donc aucun autre type d'installation n'est requis. Si votre sélection de base de données est différente, vous devez utiliser les clés suivantes dans la clé « par défaut » de DATABASE pour correspondre aux paramètres de connexion à votre base de données.

Moteur : Vous pouvez utiliser 'django.db.backends.sqlite3', 'django.db.backeneds.mysql', 'django.db.backends.postgresql_psycopg2', 'django.db.backends.oracle' Attendez de changer la base de données

Nom : Le nom de la base de données. Si vous utilisez SQLite comme base de données, la base de données sera un fichier sur votre ordinateur et le nom doit être le chemin absolu complet, y compris le nom du fichier.

Si vous ne choisissez pas SQLite comme base de données, vous devez ajouter des paramètres tels que le mot de passe, l'hôte, l'utilisateur, etc. Django utilise SQLite comme base de données par défaut, qui stocke les données sous forme de fichiers individuels dans le système de fichiers. Si vous disposez d'un serveur de base de données - PostgreSQL, MySQL, Oracle, MSSQL - et que vous souhaitez l'utiliser à la place de SQLite, utilisez l'outil de gestion de la base de données pour créer une nouvelle base de données pour votre projet Django. Quoi qu'il en soit, avec votre base de données (vide) en place, il ne vous reste plus qu'à dire à Django comment l'utiliser. Il s'agit de la source du fichier settings.py du projet.

Nous ajouterons les lignes de code suivantes au fichier :

DATABASES = {'default' : {

'ENGINE' : 'django .db.backends .sqlite3',

'NOM' : os.path.join(BASE_DIR, 'db.sqlite3'),

}

}

35. Comment obtenir la limite de temps de cache Google de n'importe quelle URL ou page Web ?

Utilisez le format d'URL suivant :

http://webcache.googleusercontent.com/search?q=cache:URLGOESHERE

Assurez-vous de remplacer "URLGOESHERE " Donnez l'adresse Web correcte de la page ou du site dont vous souhaitez récupérer le cache et vérifiez l'heure. Par exemple, pour afficher l'âge Google Webcache de edureka.co, vous utiliserez l'URL suivante :

http://webcache.googleusercontent.com/search?q=cache:edureka.co

36. Qu'est-ce que la fonction map en Python ?

La fonction Map exécute la fonction donnée en premier argument, qui parcourt tous les éléments de l'itération donnée en deuxième argument. Si la fonction donnée contient plus d'un argument, de nombreuses itérations sont données.

37. Comment obtenir l'index des N plus grandes valeurs d'un tableau NumPy ?

Nous pouvons obtenir l'index des N plus grandes valeurs dans un tableau NumPy en utilisant le code suivant :

importer numpy as np

arr = np. array([1, 3, 2, 4, 5])

print(arr.argsort()[-3:][::-1])

output

[ 4 3 1 ]

38. Comment calculer les centiles en utilisant Python/NumPy ?

Nous pouvons calculer les centiles en utilisant le code suivant

importer numpy as np

a = np.array([1,2,3,4, 5] )

p = np.percentile(a, 50) #Renvoie le 50e percentile, par exemple médian

print(p)

sortie

3

39. Quels sont les avantages des tableaux NumPy par rapport aux listes Python (imbriquées) ?

a. Les listes Python sont des conteneurs efficaces à usage général. Ils prennent en charge une insertion, une suppression, un ajout et une concaténation (assez) efficaces, et les compréhensions de liste de Python les rendent faciles à construire et à manipuler.

b. Certaines limitations des listes Python : elles ne prennent pas en charge les opérations "vectorisées" vectorisées telles que l'addition et la multiplication par élément, et le fait qu'elles puissent contenir des objets de types différents signifie que Python doit stocker les informations de chaque élément. les informations de type et le code de répartition de type doivent être exécutés lors de l'opération sur chaque élément.

c. NumPy n'est pas seulement plus efficace, il est également plus pratique. Vous bénéficiez gratuitement de nombreuses opérations vectorielles et matricielles, ce qui peut parfois vous éviter un travail inutile.

d. Les tableaux NumPy sont plus rapides, vous pouvez utiliser NumPy, FFT, la convolution, la recherche rapide, les statistiques de base, l'algèbre linéaire, l'histogramme et d'autres méthodes intégrées.

40. Quelle est la différence entre NumPy et SciPy ?

a. Dans un monde idéal, NumPy ne contient que des types de données de tableau et les opérations les plus élémentaires : indexation, tri, remodelage, fonctions d'éléments de base, etc.

b. Tout le code numérique résidera dans SciPy. Cependant, un objectif important de NumPy est la compatibilité, c'est pourquoi NumPy tente de conserver toutes les fonctionnalités prises en charge par l'un ou l'autre de ses prédécesseurs.

c. Par conséquent, NumPy contient certaines fonctions d'algèbre linéaire, même si elles appartiennent plus proprement à SciPy. Quoi qu'il en soit, SciPy contient des versions plus complètes de ses modules d'algèbre linéaire, ainsi que de nombreux autres algorithmes numériques.

d. Si vous utilisez Python pour le calcul scientifique, vous devez installer NumPy et SciPy. La plupart des nouvelles fonctionnalités appartiennent à SciPy plutôt qu'à NumPy.

41. Comment résoudre le problème de sortie chinoise du programme python ?

Utilisez l'encodage et le décodage, tels que :

import os.path

import xlrd,sys

Filename='/home/tom / Desktop/1234.xls'

if not os.path.isfile(Filename):

raise NameError, "%s n'est pas un nom de fichier valide" %Filename

bk =xlrd.open_workbook(Filename)

shxrange=range(bk.nsheets)

imprimer shxrange

pour x dans shxrange :

p=bk .sheets()[x].name.encode('utf-8′)

print p.decode('utf-8′)

Méthode 2 :

dans Ajouter

reload(sys) au début du fichier

sys.setdefaultencoding('utf8′)

42. Lisez le code suivant et ce que c'est sa sortie ?

classe A (objet) :

def go (soi) :

imprimer "go A go!"

def stop (soi ):

imprimer "stop A stop!"

def pause (self):

raise Exception ("Non implémenté")

class B ( A) :

def go(self) :

super(B, soi). go()

imprimer "go B go!"

class C(A):

def go(self):

super(C, soi). go()

imprimer "go C go!"

def stop(self):

super(C, self). stop()

imprimer "stop C stop!"

class D(B,C):

def go(self):

super( D, soi). go()

imprimer "go D go!"

def stop(self):

super(D, self). stop()

imprimer "stop D stop!"

def pause(self):

imprimer "attendre D attendre!"

class E( B, C) : passer

a = A()

b = B()

c = C()

d = D()

e = E()

# Expliquez le résultat du code suivant

a.go()

b.go()

c.go()

d.go()

e.go()

a.stop()

b.stop ( )

c.stop()

d.stop()

e.stop()

a.pause()

b.pause()

c.pause()

d.pause()

e.pause()

Réponse, la sortie le résultat est comme La forme des commentaires est exprimée comme suit :

a.go()

# go A go!

b.go()

# allez A allez!

# allez B allez!

c.go()

# allez A allez!

# allez C allez!

d .go()

# allez A allez !

# allez C allez !

# allez B allez !

# allez D allez!

e.go()

# allez A allez!

# allez C allez!

# allez B allez!

a. stop()

# stop Un stop !

b.stop()

# stop Un stop !

c. stop()

# stop Un stop !

# stop C stop !

d.stop()

# stop Un stop !

#stop C stop !

# stop D stop!

e.stop()

# stop A stop!

a.pause()

# … Exception : Non implémenté

b.pause()

# … Exception : Non implémenté

c.pause()

# … Exception : Non implémenté

d.pause()

# wait D wait!

e.pause()

# …Exception : non implémenté

43. Présenter l'utilisation du navigateur Web en Python ?

Le module navigateur Web fournit une interface de haut niveau pour afficher des documents Web. Dans la plupart des cas, il suffit d'un simple appel à la méthode open().

webbrowser définit l'exception suivante :

exception webbrowser.Error, cette exception sera levée lorsqu'une erreur se produit dans le contrôle du navigateur

webbrowser a les méthodes suivantes :

webbrowser.open(url[, new=0[,autoraise=1]])

Cette méthode consiste à afficher l'url dans le navigateur par défaut. Si new = 0, alors l'url sera. dans la même fenêtre Ouvrir sous le navigateur. Si new = 1, une nouvelle fenêtre sera ouverte. Si new = 2, un nouvel onglet sera ouvert. Si autoraise = true, la fenêtre s'agrandira automatiquement.

webbrowser.open_new(url)

Ouvrez une nouvelle fenêtre dans le navigateur par défaut pour afficher l'url, sinon, ouvrez l'url dans la seule fenêtre du navigateur

webbrowser.open_new_tab (url)

Ouvrez un nouvel onglet pour afficher l'url dans le navigateur par défaut, sinon c'est la même chose que open_new()

webbrowser.get([name])

Renvoie un objet navigateur basé sur le nom. Si le nom est vide, renvoie le navigateur par défaut

webbrowser.register(name, construtor[,instance])

Enregistre un nom en tant que navigateur de nom. , si ce type de navigateur est enregistré, peut être obtenu à l'aide de la méthode get().

44. En Python, quelles sont les différences entre list, tuple, dict et set, et dans quels scénarios sont-ils principalement utilisés ?

Définition :

liste : liste chaînée, éléments ordonnés, recherche par index, utiliser des crochets "[]"

tuple : tuple, Les tuples rassemblent ; divers objets et ne peuvent pas être modifiés. Ils sont recherchés via des index et utilisent des crochets "()";

dict : dictionnaire Un dictionnaire est une combinaison de clés et de valeurs, recherche par clé, pas d'ordre, utilisez curl. crochets "{}";

set : défini, non ordonné, les éléments n'apparaissent qu'une seule fois, déduplication automatique, utiliser "set ([])" ;

Scénarios d'application :

list, une simple collection de données, vous pouvez utiliser des index ;

tuple, utiliser certaines données dans leur ensemble et ne peuvent pas être modifiées

dict, données associées à des clés et des valeurs

set, les données n'apparaissent qu'une seule fois, ne se soucient que de savoir si les données apparaissent, pas leur emplacement

Code :

mylist = [1, 2, 3, 4, 'Oh'] ;

mytuple = (1, 2, 'Bonjour', (4, 5))

mydict = { 'Wang' : 1, 'Hu' : 2, 'Liu' :4}

myset = set (['Wang', 'Hu', 'Liu', 4,'Wang'])

45. renvoie les résultats dans l'ordre inverse : tel que : string_reverse ("abcdef"), return : "fedcba" (veuillez utiliser plusieurs méthodes pour l'implémenter et revoir la méthode d'implémentation pour comparaison).

Réponse : Comparaison de 5 méthodes.

1. La taille de pas simple est de -1, c'est-à-dire le retournement de la chaîne

2. Échangez les positions des lettres avant et arrière

3. .Méthode récursive, à chaque fois Afficher un caractère

4. File d'attente à double extrémité, utiliser la fonction extendleft()

5.

Code :

string = 'abcdef'

def string_reverse1(string):

return string[::-1]

def string_reverse2 (string):

t= list(string)

l= len(t)

pour i,j dans zip(range(l-1, 0, - 1), range(l/ /2)) :

t[i], t[j] = t[j], t[i]

return "".join(t )

def string_reverse3(string):

if len(string) <= 1:

return string

return string_reverse3(string[1: ]) + string[0]

from collections import deque

def string_reverse4(string):

d= deque()

d.extendleft( string)

return ''.join(d)

def string_reverse5(string):

#return ''.join(string[len(string)-i] pour i in range(1, len(string)+1))

return ''.join(string[i] for i in range(len(string)-1, -1, -1))

print (string_reverse1 (string))

print (string_reverse2 (string))

print (string_reverse3 (string))

print (string_reverse4 (string) ))

print(string_reverse5(string))

46. Laquelle des affirmations suivantes crée un dictionnaire ? (Plusieurs bonnes réponses possibles)

a) d = {}

b) d = {"john": 40, "peter": 45}

c)d = {40 : "john", 45 : "peter"}

d) d = (40 : "john", 45 : "50")

Réponse : b, c, d. Créez un dictionnaire en spécifiant des clés et des valeurs.

47. Laquelle est la division étage ?

a) /

b) //

C) %

d) Réponses non mentionnées par

: b) //; Par exemple, 5,0/2 = 2,5, 5,0//2 = 2

48. Quelle est la longueur maximale possible d’un identifiant ?

a) 31 caractères

b) 63 caractères

c) 79 caractères

d) Aucune des réponses ci-dessus

Réponse : d) Aucun des identifiants ci-dessus ne peut avoir une longueur quelconque ;

49. Pourquoi les noms de variables locales commençant par un trait de soulignement sont-ils déconseillés ?

a) Ils servent à représenter des variables privées d'une classe

b) Ils confondent les interprètes

c) Ils servent à représenter des variables globales

d) Ils ralentissent l'exécution

Réponse : a) Ils sont utilisés pour représenter les variables privées d'une classe ; puisque Python n'a pas de concept de variables privées, les traits de soulignement sont utilisés pour représenter les variables qui ne sont pas accessibles. de l'extérieur de la classe.

50. Laquelle des affirmations suivantes est invalide ?

a) abc = 1 000 000

b) a b c = 1000 2000 3000

c) a, b, c = 1000, 2000, 3000

d) a_b_c = 1 000 000

Réponse : b) a b c = 1 000 2 000 3 000 ; les espaces ne sont pas autorisés dans les noms de variables.

51. Quel est le résultat ci-dessous ?

essayez :

if '1' != 1 :

raise "someError"

sinon :

imprimer ("une erreur ne s'est pas produite")

sauf "une erreur":

imprimer ("une erreur s'est produite")

a) une erreur s'est produite

b) someError ne s'est pas produit

c) Code invalide

d) Aucune des réponses ci-dessus

Réponse : c) Un code invalide doit hériter de BaseException ; Il n’y a pas un tel héritage ici.

52. Supposons que list1 soit [2,33,222,14,25], qu'est-ce que list1[-1] ?

a) Erreur

b) Non

c) 25

d) 2

Réponse : c) 25 ; Index -1 correspond au dernier index de la liste.

53. Pour ouvrir le fichier c:scores.txt en écriture, on utilise :

a) outfile = open("c:scores.txt", " r ")

b) outfile = ouvert ("c:\scores.txt", "w")

c) outfile = ouvert (file = "c:scores.txt", " r")

d) outfile = open (file = "c:\scores.txt", "o")

Réponse : b) Cette position contient des doubles barres obliques ($$, w est utilisé pour indiquer qu'un fichier est en cours d'écriture. 54. Quelle est la sortie de

f = None

pour i dans la plage (5) :

avec open("data.txt", "w") comme f:

if i > 2:

break

print f .closed

a) Vrai

b) Faux

c) Aucun

d) Erreur

Réponse : a) Vrai Lorsqu'il est utilisé avec un fichier ouvert ; , l'instruction WITH garantit que l'objet fichier est fermé à la fin du bloc with.

55. Quand la partie else de try-sauf-else est-elle exécutée ?

a) Toujours

b) Lorsqu'une exception se produit

c) Lorsqu'aucune exception ne se produit

d) Lorsqu'une exception se produit jusqu'à ce que sauf Bloquer

Réponse : c) Lorsqu'aucune exception ne se produit ; lorsqu'aucune exception ne se produit, exécutez la partie else.

56. a=1, b=2, n'utilisez pas de variables intermédiaires pour échanger les valeurs de a et b.

Deux formes : addition ou XOR ; code :

a = 1

b = 2

a = a + b

b = a - b

a = a - b

imprimer ('a = {0}, b = {1}'.format (a,b))

a = a ^ b

b = a ^ b

a = a ^ b

imprimer ('a = {0}, b = {1 }'.format(a, b))

57. Veuillez écrire le résultat de l'impression

x = [0, 1]

i = 0

i, x[i] = 1, 2

print(x)

Résultat de l'impression : [0, 2], python peut utiliser une affectation continue, de gauche à droite à droite.

g = lambda x, y=2, z : x + y**z

g (1, z=10) = ?

Résultat d'impression : Exception, Les paramètres par défaut ne peuvent être placés qu'à la fin de la liste formelle des paramètres et doivent être fournis.

58. Le modèle singleton de Python

Le modèle singleton est un modèle de conception de logiciels couramment utilisé. Il ne contient qu’une seule classe spéciale appelée classe singleton dans sa structure de base. Le mode singleton peut garantir qu'il n'y a qu'une seule instance d'une classe dans le système et que l'instance est facilement accessible depuis le monde extérieur, facilitant ainsi le contrôle du nombre d'instances et économisant les ressources du système. Si vous souhaitez qu'un seul objet d'une certaine classe existe dans le système, le modèle singleton est la meilleure solution.

__new__() est appelé avant __init__() et est utilisé pour générer des objets d'instance. En utilisant les caractéristiques de cette méthode et les attributs de classe, le modèle singleton du modèle de conception peut être implémenté. Le mode Singleton fait référence à la création d'un objet unique. Les classes conçues en mode singleton ne peuvent être instanciées que par un test courant. Rappelez-vous certainement 1 à 2 méthodes. L'intervieweur vous a demandé de l'écrire à la main.

Utilisez la méthode __new__

class Singleton(object):

def __new__(cls, *args, **kw):

if not hasattr(cls, '_instance ') :

orig = super (Singleton, cls)
cls._instance = orig.__new__ (cls, *args, **kw)
return cls._instance
class MyClass (Singleton) :
a = 1

Attributs partagés

Lors de la création d'une instance, pointez le __dict__ de toutes les instances vers le même dictionnaire afin qu'elles aient les mêmes attributs et méthodes.

class Borg(object):

_state = {}

def __new__(cls, *args, **kw):

ob = super (Borg, cls). __new__(cls, *args, **kw)

ob.__dict__ = cls._state

return ob

class MyClass2 (Borg) :

a = 1

version décorateur

def singleton (cls) :

instances = {}

def getinstance(*args, **kw):

if cls pas dans les instances :

instances[cls] = cls(*args, **kw)

return instances[cls]

return getinstance

@singleton

class MyClass:

méthode d'importation

En tant que module python, c'est un mode singleton naturel

# mysingleton.py

class My_Singleton (object):

def foo (self):

pass

my_singleton = My_Singleton()

# à utiliser

depuis mysingleton importer my_singleton

my_singleton.foo()

59. A et B sont respectivement sur deux îles. B est malade et A a les médicaments dont B a besoin. C a un bateau et un coffre verrouillable. C est prêt à transporter des objets entre A et B, mais les objets ne peuvent être placés que dans des boîtes. Tant que la boîte est déverrouillée, C volera le contenu de la boîte, peu importe ce qu'elle contient. Si A et B ont chacun une serrure et une clé qui ne peuvent ouvrir que leur propre serrure, comment A devrait-il livrer les choses à B en toute sécurité ?

Réponse : A met le médicament dans la boîte et verrouille la boîte avec son propre cadenas. Une fois que B a récupéré la boîte, il ajoute son propre cadenas à la boîte. Une fois la boîte renvoyée à A, A retire son propre cadenas. Lorsque la boîte est livrée à B, B retire son cadenas et récupère le médicament.

60. Il y a 25 chevaux avec des vitesses différentes, mais la vitesse de chaque cheval est une valeur fixe. Il n'y a plus que 5 pistes et il n'y a aucun moyen de les chronométrer. Cela signifie que vous ne pouvez connaître que la vitesse relative de 5 chevaux maximum dans chaque course. Quel est le nombre minimum de courses pour trouver les 3 premiers chevaux les plus rapides parmi les 25 ?

Réponse : Chaque cheval doit avoir au moins une chance de concourir, donc 25 chevaux sont répartis en 5 groupes. Les 5 premiers matchs sont inévitables. Il sera ensuite facile de trouver le champion. Les champions de chaque groupe pourront jouer ensemble pendant une partie (Jeu 6). La dernière chose est de trouver les 2ème et 3ème places. Nous avons nommé les groupes dans lesquels ils se trouvaient lors des 5 premiers matchs comme A, B, C, D et E selon le classement obtenu lors du 6ème match. Soit : le champion du Groupe A est le 1er placeur de la 6ème course, le champion du Groupe B est le 2ème placeur de la 6ème course... Les 5 chevaux de chaque groupe sont numérotés du plus rapide au plus lent en fonction de leurs résultats précédents. :

Groupe A : 1, 2, 3, 4, 5

Groupe B : 1, 2, 3, 4, 5

Groupe C : 1, 2, 3, 4, 5

Groupe D : 1, 2, 3, 4, 5

Groupe E : 1, 2, 3, 4, 5

Ce qu'on a A partir de maintenant Information, on peut savoir quels chevaux ont été exclus de la 3ème place. Tant qu'il peut être déterminé que 3 chevaux ou plus sont plus rapides que ce cheval, alors il est éliminé. On constate que seuls les 5 chevaux en bleu gras dans le tableau ci-dessus peuvent être classés 2 ou 3. Soit : 2ème et 3ème place dans le Groupe A ; 1ère et 2ème place dans le Groupe B, et 1ère place dans le Groupe C. Prenez ces 5 chevaux pour le 7ème jeu. Les deux premiers du 7ème jeu seront la 2ème et la 3ème place parmi les 25 chevaux. Il y a donc au moins 7 jeux au total.











Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn